From: Andi Kleen on
> a/lib/kobject_uevent.c~sysctl-fix-up-remaining-references-to-uevent_helper-fix
> +++ a/lib/kobject_uevent.c
> @@ -273,10 +273,11 @@ int kobject_uevent_env(struct kobject *k
> #endif
>
> /* call uevent_helper, usually only enabled during early boot */
> + rcu_read_lock();
> helper = rcu_dereference(uevent_helper);
> if (helper[0])
> retval = uevent_call_helper(subsystem, env);
> -
> + rcu_read_unlock();
> exit:

The data actually has to be copied, there's a helper for this in rcustring.
I'll try to send a patch later.

> loads/unloads while changing uevent_helper. Anywho, should be easy to fix,
> Mel, can you modify the code to copy helper to a private variable, then unlock
> the rcu read side prior to calling uevent_call_helper? I imagine that would be

Yes, except rcustring already has a helper for that :)

-Andi
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
From: nhorman on

On Thu, 11 Mar 2010 17:30:48 -0500, Andi Kleen wrote:
> > a/lib/kobject_uevent.c~sysctl-fix-up-remaining-references-to-uevent_helper-fix
> > +++ a/lib/kobject_uevent.c
> > @@ -273,10 +273,11 @@ int kobject_uevent_env(struct kobject *k
> > #endif
> >
> > /* call uevent_helper, usually only enabled during early boot */
> > + rcu_read_lock();
> > helper = rcu_dereference(uevent_helper);
> > if (helper[0])
> > retval = uevent_call_helper(subsystem, env);
> > -
> > + rcu_read_unlock();
> > exit:
>
> The data actually has to be copied, there's a helper for this in rcustring.
> I'll try to send a patch later.
>
> > loads/unloads while changing uevent_helper. Anywho, should be easy to fix,
> > Mel, can you modify the code to copy helper to a private variable, then unlock
> > the rcu read side prior to calling uevent_call_helper? I imagine that would be
>
> Yes, except rcustring already has a helper for that :)
>
Yes but the rcustring bits all got reverted, trashing my series :), so its all got to be rediffed anyway

Neil
> -Andi
>

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/