linux/net/batman-adv
Sven Eckelmann 77d69d8ce1 batman-adv: Modify mesh_iface outside sysfs context
The legacy sysfs interface to modify interfaces belonging to batman-adv
is run inside a region holding s_lock. And to add a net_device, it has
to also get the rtnl_lock. This is exactly the other way around than in
other virtual net_devices and conflicts with netdevice notifier which
executes inside rtnl_lock.

The inverted lock situation is currently solved by executing the removal
of netdevices via workqueue. The workqueue isn't executed inside
rtnl_lock and thus can independently get the s_lock and the rtnl_lock.

But this workaround fails when the netdevice notifier creates events in
quick succession and the earlier triggered removal of a net_device isn't
processed in the workqueue before the adding of the new netdevice (with
same name) event is issued.

Instead the legacy sysfs interface store events have to be enqueued in
a workqueue to loose the s_lock. The worker is then free to get the
required locks and the deadlock is avoided.

Signed-off-by: Sven Eckelmann <sven@narfation.org>
Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch>
Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
2016-08-09 07:54:27 +02:00
..
bat_algo.c batman-adv: split routing API data structure in subobjects 2016-07-04 12:37:19 +02:00
bat_algo.h batman-adv: Fix bat_(iv|v) function declaration header 2016-06-30 10:29:43 +02:00
bat_iv_ogm.c batman-adv: split routing API data structure in subobjects 2016-07-04 12:37:19 +02:00
bat_iv_ogm.h batman-adv: Fix bat_(iv|v) function declaration header 2016-06-30 10:29:43 +02:00
bat_v_elp.c batman-adv: split routing API data structure in subobjects 2016-07-04 12:37:19 +02:00
bat_v_elp.h batman-adv: Keep includes ordered by filename 2016-06-30 10:29:43 +02:00
bat_v_ogm.c batman-adv: split routing API data structure in subobjects 2016-07-04 12:37:19 +02:00
bat_v_ogm.h batman-adv: Include main.h in bat_v_ogm.h 2016-06-30 10:29:43 +02:00
bat_v.c batman-adv: split routing API data structure in subobjects 2016-07-04 12:37:19 +02:00
bat_v.h batman-adv: Fix bat_(iv|v) function declaration header 2016-06-30 10:29:43 +02:00
bitarray.c batman-adv: Consolidate logging related functions 2016-06-30 10:29:43 +02:00
bitarray.h batman-adv: Use bool as return type for boolean functions 2016-05-10 18:28:54 +08:00
bridge_loop_avoidance.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-07-24 00:53:32 -04:00
bridge_loop_avoidance.h batman-adv: Use bool as return type for boolean functions 2016-05-10 18:28:54 +08:00
debugfs.c batman-adv: Add debugfs table for mcast flags 2016-06-30 10:29:43 +02:00
debugfs.h batman-adv: update copyright years for 2016 2016-02-02 12:55:10 +08:00
distributed-arp-table.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-07-24 00:53:32 -04:00
distributed-arp-table.h batman-adv: update copyright years for 2016 2016-02-02 12:55:10 +08:00
fragmentation.c batman-adv: return netdev status in the TX path 2016-07-04 12:37:18 +02:00
fragmentation.h batman-adv: return netdev status in the TX path 2016-07-04 12:37:18 +02:00
gateway_client.c batman-adv: Consolidate logging related functions 2016-06-30 10:29:43 +02:00
gateway_client.h batman-adv: update copyright years for 2016 2016-02-02 12:55:10 +08:00
gateway_common.c batman-adv: Consolidate logging related functions 2016-06-30 10:29:43 +02:00
gateway_common.h batman-adv: add throughput override attribute to hard_ifaces 2016-02-29 16:05:32 +08:00
hard-interface.c batman-adv: split routing API data structure in subobjects 2016-07-04 12:37:19 +02:00
hard-interface.h batman-adv: Create batman soft interfaces within correct netns. 2016-05-10 18:26:44 +08:00
hash.c batman-adv: update copyright years for 2016 2016-02-02 12:55:10 +08:00
hash.h batman-adv: Use bool as return type for boolean functions 2016-05-10 18:28:54 +08:00
icmp_socket.c batman-adv: Consolidate logging related functions 2016-06-30 10:29:43 +02:00
icmp_socket.h batman-adv: update copyright years for 2016 2016-02-02 12:55:10 +08:00
Kconfig batman-adv: Add multicast optimization support for bridged setups 2016-06-30 10:29:43 +02:00
log.c batman-adv: Consolidate logging related functions 2016-06-30 10:29:43 +02:00
log.h batman-adv: throughput meter implementation 2016-07-04 12:37:18 +02:00
main.c batman-adv: Define module rtnl link name 2016-08-09 07:54:26 +02:00
main.h batman-adv: Start new development cycle 2016-08-09 07:54:24 +02:00
Makefile batman-adv: throughput meter implementation 2016-07-04 12:37:18 +02:00
multicast.c batman-adv: Add debugfs table for mcast flags 2016-06-30 10:29:43 +02:00
multicast.h batman-adv: Add debugfs table for mcast flags 2016-06-30 10:29:43 +02:00
netlink.c batman-adv: split routing API data structure in subobjects 2016-07-04 12:37:19 +02:00
netlink.h batman-adv: throughput meter implementation 2016-07-04 12:37:18 +02:00
network-coding.c batman-adv: Consolidate logging related functions 2016-06-30 10:29:43 +02:00
network-coding.h batman-adv: update copyright years for 2016 2016-02-02 12:55:10 +08:00
originator.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-07-24 00:53:32 -04:00
originator.h batman-adv: refactor batadv_neigh_node_* functions to follow common style 2016-06-30 10:29:43 +02:00
packet.h batman-adv: throughput meter implementation 2016-07-04 12:37:18 +02:00
routing.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-07-24 00:53:32 -04:00
routing.h batman-adv: Use bool as return type for boolean functions 2016-05-10 18:28:54 +08:00
send.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-07-24 00:53:32 -04:00
send.h batman-adv: remove ogm_emit and ogm_schedule API calls 2016-06-30 10:29:43 +02:00
soft-interface.c This feature patchset includes the following changes: 2016-07-04 23:33:59 -07:00
soft-interface.h batman-adv: Use bool as return type for boolean functions 2016-05-10 18:28:54 +08:00
sysfs.c batman-adv: Modify mesh_iface outside sysfs context 2016-08-09 07:54:27 +02:00
sysfs.h batman-adv: update copyright years for 2016 2016-02-02 12:55:10 +08:00
tp_meter.c batman-adv: throughput meter implementation 2016-07-04 12:37:18 +02:00
tp_meter.h batman-adv: throughput meter implementation 2016-07-04 12:37:18 +02:00
translation-table.c This feature patchset includes the following changes: 2016-07-04 23:33:59 -07:00
translation-table.h batman-adv: update copyright years for 2016 2016-02-02 12:55:10 +08:00
tvlv.c batman-adv: return netdev status in the TX path 2016-07-04 12:37:18 +02:00
tvlv.h batman-adv: split tvlv into a separate file 2016-06-30 10:29:43 +02:00
types.h batman-adv: Modify mesh_iface outside sysfs context 2016-08-09 07:54:27 +02:00