linux-stable/drivers/w1
David Fries 18d7f891bc w1: avoid recursive device_add
__w1_attach_slave_device calls device_add which calls w1_bus_notify
which calls the w1_bq27000 slave driver, which calls
platform_device_add and device_add and deadlocks on getting
&(&priv->bus_notifier)->rwsem as it is still held in the previous
device_add.  This avoids the problem by processing the family
add/remove outside of the slave device_add call.

Commit 47eba33a09 introduced this deadlock and added
a KOBJ_ADD, as the add was already reported in device_register two add
events were being sent.  This change suppresses the device_register
add so that any slave device sysfs entries are setup before the add
goes out.

Belisko Marek reported this change fixed the deadlock he was seeing on
ARM device tree, while testing on my x86-64 system never saw the
deadlock.

Reported-by: Belisko Marek <marek.belisko@gmail.com>
Signed-off-by: David Fries <David@Fries.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-04-16 14:07:51 -07:00
..
masters w1: mxc_w1: Enable driver compilation with COMPILE_TEST 2014-02-28 15:27:09 -08:00
slaves w1: Remove excess dependencies on W1 for masters and slaves 2014-02-28 15:27:09 -08:00
Kconfig Kconfig: replace "--- help ---" with "---help---" 2012-05-07 15:01:22 +02:00
Makefile
w1.c w1: avoid recursive device_add 2014-04-16 14:07:51 -07:00
w1.h w1: format for DocBook and fixes 2014-02-07 15:40:18 -08:00
w1_family.c w1: format for DocBook and fixes 2014-02-07 15:40:18 -08:00
w1_family.h w1: format for DocBook and fixes 2014-02-07 15:40:18 -08:00
w1_int.c w1: format for DocBook and fixes 2014-02-07 15:40:18 -08:00
w1_int.h MAINTAINERS: Evgeniy has moved 2011-08-25 16:25:33 -07:00
w1_io.c w1: format for DocBook and fixes 2014-02-07 15:40:18 -08:00
w1_log.h MAINTAINERS: Evgeniy has moved 2011-08-25 16:25:33 -07:00
w1_netlink.c w1: fix netlink refcnt leak on error path 2014-04-16 14:07:51 -07:00
w1_netlink.h w1: format for DocBook and fixes 2014-02-07 15:40:18 -08:00