Index: linux-2.6.25.4/lib/kobject_uevent.c =================================================================== --- linux-2.6.25.4.orig/lib/kobject_uevent.c +++ linux-2.6.25.4/lib/kobject_uevent.c @@ -27,7 +27,8 @@ u64 uevent_seqnum; 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 @@ static const char *kobject_actions[] = { [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 * @@ -192,9 +205,7 @@ int kobject_uevent_env(struct kobject *k kobj->state_remove_uevent_sent = 1; /* 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;