X-Git-Url: http://pilppa.org/gitweb/?a=blobdiff_plain;f=net%2Fax25%2Fax25_uid.c;h=57aeba729baeacd7269faec3dde027ce1a4f1506;hb=7fa10d20012296300dfe645cb3e628a4e9a0d5ef;hp=ce0b13d44385fad3c588a0ee7087ee58d6189a2e;hpb=1f1c2881f673671539b25686df463518d69c4649;p=linux-2.6-omap-h63xx.git diff --git a/net/ax25/ax25_uid.c b/net/ax25/ax25_uid.c index ce0b13d4438..57aeba729ba 100644 --- a/net/ax25/ax25_uid.c +++ b/net/ax25/ax25_uid.c @@ -43,10 +43,10 @@ * Callsign/UID mapper. This is in kernel space for security on multi-amateur machines. */ -HLIST_HEAD(ax25_uid_list); +static HLIST_HEAD(ax25_uid_list); static DEFINE_RWLOCK(ax25_uid_lock); -int ax25_uid_policy = 0; +int ax25_uid_policy; EXPORT_SYMBOL(ax25_uid_policy); @@ -144,6 +144,7 @@ int ax25_uid_ioctl(int cmd, struct sockaddr_ax25 *sax) #ifdef CONFIG_PROC_FS static void *ax25_uid_seq_start(struct seq_file *seq, loff_t *pos) + __acquires(ax25_uid_lock) { struct ax25_uid_assoc *pt; struct hlist_node *node; @@ -167,6 +168,7 @@ static void *ax25_uid_seq_next(struct seq_file *seq, void *v, loff_t *pos) } static void ax25_uid_seq_stop(struct seq_file *seq, void *v) + __releases(ax25_uid_lock) { read_unlock(&ax25_uid_lock); } @@ -216,9 +218,11 @@ void __exit ax25_uid_free(void) struct hlist_node *node; write_lock(&ax25_uid_lock); +again: ax25_uid_for_each(ax25_uid, node, &ax25_uid_list) { hlist_del_init(&ax25_uid->uid_node); ax25_uid_put(ax25_uid); + goto again; } write_unlock(&ax25_uid_lock); }