linux/net/batman-adv
Sven Eckelmann 3a4375a9f0 batman-adv: Avoid deadlock between rtnl_lock and s_active
The hard_if_event is called by the notifier with rtnl_lock and tries to
remove sysfs entries when a NETDEV_UNREGISTER event is received. This
will automatically take the s_active lock.

The s_active lock is also used when a new interface is added to a meshif
through sysfs. In that situation we cannot wait for the rntl_lock before
creating the actual batman-adv interface to prevent a deadlock. It is
still possible to try to get the rtnl_lock and immediately abort the
current operation when the trylock call failed.

Signed-off-by: Sven Eckelmann <sven@narfation.org>
2011-05-08 16:10:42 +02:00
..
aggregation.c batman-adv: Move definition of atomic_dec_not_zero() into main.h 2011-05-01 22:49:03 +02:00
aggregation.h batman-adv: rename batman_if struct to hard_iface 2011-03-05 12:52:06 +01:00
bat_debugfs.c batman-adv: Update copyright years 2011-01-31 14:57:12 +01:00
bat_debugfs.h batman-adv: Update copyright years 2011-01-31 14:57:12 +01:00
bat_sysfs.c batman-adv: Avoid deadlock between rtnl_lock and s_active 2011-05-08 16:10:42 +02:00
bat_sysfs.h batman-adv: Update copyright years 2011-01-31 14:57:12 +01:00
bitarray.c batman-adv: Update copyright years 2011-01-31 14:57:12 +01:00
bitarray.h batman-adv: Update copyright years 2011-01-31 14:57:12 +01:00
gateway_client.c batman-adv: Make bat_priv->primary_if an rcu protected pointer 2011-05-01 22:49:03 +02:00
gateway_client.h batman-adv: concentrate all curr_gw related rcu operations in select/deselect functions 2011-04-17 21:11:01 +02:00
gateway_common.c batman-adv: Update copyright years 2011-01-31 14:57:12 +01:00
gateway_common.h batman-adv: Update copyright years 2011-01-31 14:57:12 +01:00
hard-interface.c batman-adv: Remove unnecessary hardif_list_lock 2011-05-08 16:10:41 +02:00
hard-interface.h batman-adv: Make bat_priv->primary_if an rcu protected pointer 2011-05-01 22:49:03 +02:00
hash.c batman-adv: remove extra layer between hash and hash element - hash bucket 2011-03-05 12:52:00 +01:00
hash.h batman-adv: remove extra layer between hash and hash element - hash bucket 2011-03-05 12:52:00 +01:00
icmp_socket.c batman-adv: Make bat_priv->primary_if an rcu protected pointer 2011-05-01 22:49:03 +02:00
icmp_socket.h batman-adv: Remove duplicate types.h inclusions 2011-02-11 23:30:29 +01:00
Kconfig
main.c batman-adv: Remove unnecessary hardif_list_lock 2011-05-08 16:10:41 +02:00
main.h batman-adv: Move definition of atomic_dec_not_zero() into main.h 2011-05-01 22:49:03 +02:00
Makefile batman-adv: Update copyright years 2011-01-31 14:57:12 +01:00
originator.c batman-adv: remove misplaced comment 2011-05-08 16:10:07 +02:00
originator.h batman-adv: Make orig_node->router an rcu protected pointer 2011-04-17 21:11:01 +02:00
packet.h batman-adv: Update copyright years 2011-01-31 14:57:12 +01:00
ring_buffer.c batman-adv: Update copyright years 2011-01-31 14:57:12 +01:00
ring_buffer.h batman-adv: Update copyright years 2011-01-31 14:57:12 +01:00
routing.c batman-adv: Make bat_priv->primary_if an rcu protected pointer 2011-05-01 22:49:03 +02:00
routing.h batman-adv: Remove unused hdr_size variable in route_unicast_packet() 2011-03-05 12:52:08 +01:00
send.c batman-adv: Make bat_priv->primary_if an rcu protected pointer 2011-05-01 22:49:03 +02:00
send.h batman-adv: rename batman_if struct to hard_iface 2011-03-05 12:52:06 +01:00
soft-interface.c batman-adv: Remove unnecessary hardif_list_lock 2011-05-08 16:10:41 +02:00
soft-interface.h batman-adv: Disallow regular interface as mesh device 2011-03-05 12:52:09 +01:00
translation-table.c batman-adv: Make bat_priv->primary_if an rcu protected pointer 2011-05-01 22:49:03 +02:00
translation-table.h batman-adv: Remove duplicate types.h inclusions 2011-02-11 23:30:29 +01:00
types.h batman-adv: multi vlan support for bridge loop detection 2011-05-08 16:10:41 +02:00
unicast.c batman-adv: Make bat_priv->primary_if an rcu protected pointer 2011-05-01 22:49:03 +02:00
unicast.h batman-adv: rename batman_if struct to hard_iface 2011-03-05 12:52:06 +01:00
vis.c batman-adv: Make bat_priv->primary_if an rcu protected pointer 2011-05-01 22:49:03 +02:00
vis.h batman-adv: Update copyright years 2011-01-31 14:57:12 +01:00