--- a/lib/kobject_uevent.c +++ b/lib/kobject_uevent.c @@ -27,7 +27,8 @@ char uevent_helper[UEVENT_HELPER_PATH_LEN] = CONFIG_UEVENT_HELPER_PATH; static DEFINE_SPINLOCK(sequence_lock); #if defined(CONFIG_NET) -static struct sock *uevent_sock; +struct sock *uevent_sock = NULL; +EXPORT_SYMBOL_GPL(uevent_sock); #endif /* the strings here must match the enum in include/linux/kobject.h */ @@ -40,6 +41,18 @@ [KOBJ_OFFLINE] = "offline", }; +u64 uevent_next_seqnum(void) +{ + u64 seq; + + spin_lock(&sequence_lock); + seq = ++uevent_seqnum; + spin_unlock(&sequence_lock); + + return seq; +} +EXPORT_SYMBOL_GPL(uevent_next_seqnum); + /** * kobject_action_type - translate action string to numeric type * @@ -173,9 +186,7 @@ } /* we will send an event, so request a new sequence number */ - spin_lock(&sequence_lock); - seq = ++uevent_seqnum; - spin_unlock(&sequence_lock); + seq = uevent_next_seqnum(); retval = add_uevent_var(env, "SEQNUM=%llu", (unsigned long long)seq); if (retval) goto exit;