diff options
Diffstat (limited to 'lib/kobject_uevent.c')
-rw-r--r-- | lib/kobject_uevent.c | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/lib/kobject_uevent.c b/lib/kobject_uevent.c index 9539d7ab3ea8..54cfbaeb3a4e 100644 --- a/lib/kobject_uevent.c +++ b/lib/kobject_uevent.c | |||
@@ -32,11 +32,13 @@ u64 uevent_seqnum; | |||
32 | #ifdef CONFIG_UEVENT_HELPER | 32 | #ifdef CONFIG_UEVENT_HELPER |
33 | char uevent_helper[UEVENT_HELPER_PATH_LEN] = CONFIG_UEVENT_HELPER_PATH; | 33 | char uevent_helper[UEVENT_HELPER_PATH_LEN] = CONFIG_UEVENT_HELPER_PATH; |
34 | #endif | 34 | #endif |
35 | #ifdef CONFIG_NET | 35 | |
36 | struct uevent_sock { | 36 | struct uevent_sock { |
37 | struct list_head list; | 37 | struct list_head list; |
38 | struct sock *sk; | 38 | struct sock *sk; |
39 | }; | 39 | }; |
40 | |||
41 | #ifdef CONFIG_NET | ||
40 | static LIST_HEAD(uevent_sock_list); | 42 | static LIST_HEAD(uevent_sock_list); |
41 | #endif | 43 | #endif |
42 | 44 | ||
@@ -621,6 +623,9 @@ static int uevent_net_init(struct net *net) | |||
621 | kfree(ue_sk); | 623 | kfree(ue_sk); |
622 | return -ENODEV; | 624 | return -ENODEV; |
623 | } | 625 | } |
626 | |||
627 | net->uevent_sock = ue_sk; | ||
628 | |||
624 | mutex_lock(&uevent_sock_mutex); | 629 | mutex_lock(&uevent_sock_mutex); |
625 | list_add_tail(&ue_sk->list, &uevent_sock_list); | 630 | list_add_tail(&ue_sk->list, &uevent_sock_list); |
626 | mutex_unlock(&uevent_sock_mutex); | 631 | mutex_unlock(&uevent_sock_mutex); |
@@ -629,17 +634,9 @@ static int uevent_net_init(struct net *net) | |||
629 | 634 | ||
630 | static void uevent_net_exit(struct net *net) | 635 | static void uevent_net_exit(struct net *net) |
631 | { | 636 | { |
632 | struct uevent_sock *ue_sk; | 637 | struct uevent_sock *ue_sk = net->uevent_sock; |
633 | 638 | ||
634 | mutex_lock(&uevent_sock_mutex); | 639 | mutex_lock(&uevent_sock_mutex); |
635 | list_for_each_entry(ue_sk, &uevent_sock_list, list) { | ||
636 | if (sock_net(ue_sk->sk) == net) | ||
637 | goto found; | ||
638 | } | ||
639 | mutex_unlock(&uevent_sock_mutex); | ||
640 | return; | ||
641 | |||
642 | found: | ||
643 | list_del(&ue_sk->list); | 640 | list_del(&ue_sk->list); |
644 | mutex_unlock(&uevent_sock_mutex); | 641 | mutex_unlock(&uevent_sock_mutex); |
645 | 642 | ||