Re: [2.5.69] rtnl-deadlock with usermodehelper and keventd

Martin Diehl
2003-05-23T06:46:22Z

On Thu, 15 May 2003, Andrew Morton wrote:

> > > [ unregister_netdevice calls call_usermodehelper which waits for keventd to
> > > pick up the subprocess_info, but keventd is blocked on rtnl_lock, which
> > > unregister_netdev took ]
>
>
> "David S. Miller" <davem@redhat.com> wrote:
> >
> > I'd much rather see /sbin/hotplug be able to handle things
> > asynchonously.
>
> Yeah, I'm inclined to agree. I'll take a look at it.

Asking just because there was another user hitting this deadlock: it seems
with linux-irda we have a very good test case for reproducing this issue.
So I'd be happy to go testing patches if this might help.

I've also looked into the code to see if I could do something myself.
Well, personally I do also think the best way would be to modify the
kernel hotplug part so we can call it asynch under rtnl-lock.
Unfortunately, given the fact there are already several layers
(schedule_work, 2 times kernel_thread and execve) stacked on top of each
other, I'm pretty much lost how to fix it without breaking other stuff.

I was also thinking about making net_run_sbin_hotplug asynch itself, but
I'm unsure how this might interact with call_usermodehelper(), namely
wrt. the wait=0 parameter.

I assume we all agree this issue isn't easy to resolve. May I suggest
adding it to the must-fix-before-2.6 list so it wouldn't get lost?
As people tend to run with CONFIG_HOTPLUG=y there would be a lot of
trouble with 2.6 otherwise.

Thanks.
Martin