Re: [PATCH] call_usermodehelper needs to wait longer

From: Andrew Morton
Date: Tue Mar 09 2004 - 16:40:12 EST


Srivatsa Vaddagiri <vatsa@xxxxxxxxxx> wrote:
>
> During my testing of call_usermodehelper, I noticed that
> if it is called from a workqueue function, it does really wait
> (when asked to) for the usermodehelper to exit.
>
> Patch below should fix it. It has been tested against 2.6.4-rc2-mm1
> on a 4-way x86 SMP box.
>
> --- kmod.c.org 2004-03-09 18:52:19.000000000 +0530
> +++ kmod.c 2004-03-09 18:52:38.000000000 +0530
> @@ -258,10 +258,13 @@
> if (current_is_keventd()) {
> /* We can't wait on keventd! */
> __call_usermodehelper(&sub_info);
> - } else {
> + if (!wait)
> + goto out;
> + } else
> schedule_work(&work);
> - wait_for_completion(&done);
> - }
> +
> + wait_for_completion(&done);
> +
> out:
> return sub_info.retval;
> }

I'm not so sure about this. There are deadlock potentials if the usermode
application wants to perform some function which requires keventd services
to complete - the application cannot complete because keventd is itself
waiting for the application.

Can we think of any circumstances under which keventd _should_
synchronously wait for the userspace app?

btw: your patch had whitespace where the tabs should be (email client
problem), and `patch -p1' format is (much) preferred.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/