Messages in this thread |  | | | Date | Sun, 17 Oct 2004 10:14:36 -0700 | | From | Greg KH <> | | Subject | Re: [PATCH] kernel-2.6.9.rc4 lib/kobject.c |
| |
On Sat, Oct 16, 2004 at 11:47:44PM -0400, Andrew wrote: > > --- lib/kobject.c.orig 2004-10-16 20:51:01.450973973 -0400 > +++ lib/kobject.c 2004-10-16 21:08:19.961602269 -0400 > @@ -177,6 +177,10 @@ static void kset_hotplug(const char *act > envp [i++] = scratch; > scratch += sprintf(scratch, "ACTION=%s", action) + 1; > > + kobj_path = kobject_get_path(kset, kobj, GFP_KERNEL); > + if (!kobj_path) > + goto exit; > +
Your email client ate the tabs :(
> spin_lock(&sequence_lock); > seq = sequence_num++; > spin_unlock(&sequence_lock); > @@ -184,10 +188,6 @@ static void kset_hotplug(const char *act > envp [i++] = scratch; > scratch += sprintf(scratch, "SEQNUM=%ld", seq) + 1; > > - kobj_path = kobject_get_path(kset, kobj, GFP_KERNEL); > - if (!kobj_path) > - goto exit; > - > envp [i++] = scratch; > scratch += sprintf (scratch, "DEVPATH=%s", kobj_path) + 1; > > @@ -199,6 +199,13 @@ static void kset_hotplug(const char *act > if (retval) { > pr_debug ("%s - hotplug() returned %d\n", > __FUNCTION__, retval); > + /* decr sequence_num since no event will happen > + but only if it is consistent */ > + spin_lock(&sequence_lock); > + if (sequence_num == seq+1) > + sequence_num--; > + spin_unlock(&sequence_lock); > +
This could cause the same sequence number to be given to more than one event. That would really mess userspace up. It can handle gaps in sequence numbers, as long as they are constantly incrementing.
Care to redo this to give out the sequence number as the last thing before calling call_usermodehelper()? That should fix the issue, right?
Oh, and this portion of the kernel has been pretty much reworked a lot recently. Check out the -mm kernel release for what it now looks like (and what will be sent to Linus after 2.6.9 is released.)
thanks,
greg k-h - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
|  |