linux/drivers/base
Takashi Iwai fe304143b0 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>
2013-06-03 13:57:29 -07:00
..
power PM: Avoid calling kfree() under spinlock in dev_pm_put_subsys_data() 2013-05-12 14:04:40 +02:00
regmap Merge remote-tracking branch 'regmap/topic/range' into regmap-next 2013-04-16 16:05:50 +01:00
attribute_container.c drivers: base: Convert dev_printk(KERN_<LEVEL> to dev_<level>( 2012-10-30 17:38:43 -07:00
base.h driver/base: implement subsys_virtual_register() 2013-03-12 11:36:35 -07:00
bus.c driver core: export subsys_virtual_register 2013-05-21 09:05:52 -07:00
class.c driver-core: constify data for class_find_device() 2013-02-06 12:18:56 -08:00
core.c Merge 3.10-rc3 into driver-core-next 2013-05-27 10:42:53 +09:00
cpu.c cpu: make sure that cpu/online file created before KOBJ_ADD is emitted 2013-05-21 10:15:40 -07:00
dd.c PM / Runtime: Idle devices asynchronously after probe|release 2013-04-11 12:42:52 -07:00
devres.c Linux 3.9-rc3 2013-03-17 19:40:50 -07:00
devtmpfs.c driver core: handle user namespaces properly with the uid/gid devtmpfs change 2013-04-11 11:43:29 -07:00
dma-buf.c dma-buf: Add debugfs support 2013-05-01 16:36:22 +05:30
dma-coherent.c drivers: dma-coherent: Fix typo in dma_mmap_from_coherent documentation 2012-10-23 14:05:32 +02:00
dma-contiguous.c drivers: cma: represent physical addresses as phys_addr_t 2012-12-11 09:28:09 +01:00
dma-mapping.c [media] dma-mapping: fix dma_common_get_sgtable() conditional compilation 2012-11-27 09:42:31 -02:00
driver.c driver core: don't trigger uevent after failure 2012-07-17 10:40:23 -07:00
firmware_class.c firmware: Avoid deadlock of usermodehelper lock at shutdown 2013-06-03 13:57:29 -07:00
firmware.c
hypervisor.c drivers/base: Add export.h for EXPORT_SYMBOL/THIS_MODULE as required. 2011-10-31 19:31:38 -04:00
init.c driver-core: implement 'sysdev' functionality for regular devices and buses 2011-12-14 14:29:38 -08:00
isa.c
Kconfig firmware: Make user-mode helper optional 2013-02-03 17:57:40 -08:00
Makefile drivers/pinctrl: grab default handles from device core 2013-01-23 16:39:51 +01:00
map.c
memory.c mm: Remove unused parameter of pages_correctly_reserved() 2013-04-29 15:54:38 -07:00
module.c driver core: module.c: Use kasprintf 2010-05-21 09:37:29 -07:00
node.c drivers/base/node.c: switch to register_hotmemory_notifier() 2013-04-29 15:54:36 -07:00
pinctrl.c drivers/pinctrl: grab default handles from device core 2013-01-23 16:39:51 +01:00
platform.c driver core: platform.c: fix checkpatch errors and warnings 2013-03-29 09:10:55 -07:00
soc.c mode_t whack-a-mole: ->is_visible() returns umode_t... 2012-05-29 23:28:42 -04:00
syscore.c PM: Reintroduce dropped call to check_wakeup_irqs 2011-07-11 10:51:49 +02:00
topology.c cpu: convert 'cpu' and 'machinecheck' sysdev_class to a regular subsystem 2011-12-21 14:29:42 -08:00
transport_class.c drivers/base: transport_class explicitly requires EXPORT_SYMBOL 2011-10-31 19:31:15 -04:00