diff options
author | Greg Kroah-Hartman <greg@kroah.com> | 2004-10-22 01:43:17 -0700 |
---|---|---|
committer | Greg Kroah-Hartman <greg@kroah.com> | 2004-10-22 01:43:17 -0700 |
commit | 48a7c3ab870172255c83c121f6dab1928105efdf (patch) | |
tree | e10de4f05f84cd79d6b0c3aba261f899287f65ff /lib | |
parent | 1c1355b29e9bfb042ff146c5e6a8d75c420ea596 (diff) | |
download | history-48a7c3ab870172255c83c121f6dab1928105efdf.tar.gz |
hotplug: prevent skips in sequence number from happening
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/kobject_uevent.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/lib/kobject_uevent.c b/lib/kobject_uevent.c index f46936798faba2..41380e9c5d32b2 100644 --- a/lib/kobject_uevent.c +++ b/lib/kobject_uevent.c @@ -255,13 +255,6 @@ void kobject_hotplug(struct kobject *kobj, enum kobject_action action) envp [i++] = scratch; scratch += sprintf (scratch, "DEVPATH=%s", kobj_path) + 1; - spin_lock(&sequence_lock); - seq = ++hotplug_seqnum; - spin_unlock(&sequence_lock); - - envp [i++] = scratch; - scratch += sprintf(scratch, "SEQNUM=%lld", (long long)seq) + 1; - envp [i++] = scratch; scratch += sprintf(scratch, "SUBSYSTEM=%s", name) + 1; @@ -277,7 +270,15 @@ void kobject_hotplug(struct kobject *kobj, enum kobject_action action) } } - pr_debug ("%s: %s %s %s %s %s %s %s\n", __FUNCTION__, argv[0], argv[1], + spin_lock(&sequence_lock); + seq = ++hotplug_seqnum; + spin_unlock(&sequence_lock); + + envp [i++] = scratch; + scratch += sprintf(scratch, "SEQNUM=%lld", (long long)seq) + 1; + + pr_debug ("%s: %s %s seq=%lld %s %s %s %s %s\n", + __FUNCTION__, argv[0], argv[1], (long long)seq, envp[0], envp[1], envp[2], envp[3], envp[4]); send_uevent(action_string, kobj_path, buffer, scratch - buffer, GFP_KERNEL); |