Re: [patch] hotplug fixes

From: Andrew Morton (andrewm@uow.edu.au)
Date: Sun Dec 10 2000 - 08:14:34 EST


David Woodhouse wrote:
>
> On Sun, 10 Dec 2000, Andrew Morton wrote:
>
> > - PCMCIA layer calls call_usermodehelper from within keventd. But
> > call_usermodehelper blocks until keventd has run the helper! Duh.
> >
> > This patch special-cases the situation where keventd is calling
> > call_usermodehelper().
>
> + if (current_is_keventd()) {
> + /* We can't wait on keventd! */
> + __call_usermodehelper(&sub_info);
> + } else {
> + schedule_task(&tqs);
> + down(&sem); /* Wait until keventd has started the subprocess */
> + }
>
> That's sick. Do we have to? The PCMCIA coded obviously wants an async
> call_usermodehelper() or it wouldn't have been using schedule_task()
> for it in the first place, would it? Can't we pass an 'int async' arg to
> call_usermodehelper() instead of doing it this way?

Well, call_usermodehelper here _is_ async. We're just waiting for
acknowledgement that the subprocess has safely taken copies of
our local data (argv, envp, etc). And waiting to pick up the
return value from execve().

We can't call schedule_task() and then just return from
call_usermodehelper(), unless we take kmalloced copies of
everything (including the tq_struct) and then free them
after the vfork.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Fri Dec 15 2000 - 21:00:19 EST