firmware: Avoid deadlock of usermodehelper lock at shutdown
authorTakashi Iwai <tiwai@suse.de>
Wed, 22 May 2013 16:28:38 +0000 (18:28 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 3 Jun 2013 20:57:29 +0000 (13:57 -0700)
commitfe304143b0c3d43fbf13773bcd4a7989a1fb4e1c
tree882efb8d1ce0c0ed0140e5c88d89677ce9037b2b
parentd05c39ea67f5786a549ac9d672d2951992b658c6
firmware: Avoid deadlock of usermodehelper lock at shutdown

When a system goes to reboot/shutdown, it tries to disable the
usermode helper via usermodehelper_disable().  This might be blocked
when a driver tries to load a firmware beforehand and it's stuck by
some reason.  For example, dell_rbu driver loads the firmware in
non-hotplug mode and waits for user-space clearing the loading sysfs
flag.  If user-space doesn't clear the flag, it waits forever, thus
blocks the reboot, too.

As a workaround, in this patch, the firmware class driver registers a
reboot notifier so that it can abort all pending f/w bufs before
issuing usermodehelper_disable().

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Acked-by: Ming Lei <ming.lei@canonical.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/base/firmware_class.c