linux/net/batman-adv
Sven Eckelmann f2d23861b8 batman-adv: Deactivate TO_BE_ACTIVATED hardif on shutdown
The shutdown of an batman-adv interface can happen with one of its slave
interfaces still being in the BATADV_IF_TO_BE_ACTIVATED state. A possible
reason for it is that the routing algorithm BATMAN_V was selected and
batadv_schedule_bat_ogm was not yet called for this interface. This slave
interface still has to be set to BATADV_IF_INACTIVE or the batman-adv
interface will never reduce its usage counter and thus never gets shutdown.

This problem can be simulated via:

    $ modprobe dummy
    $ modprobe batman-adv routing_algo=BATMAN_V
    $ ip link add bat0 type batadv
    $ ip link set dummy0 master bat0
    $ ip link set dummy0 up
    $ ip link del bat0
    unregister_netdevice: waiting for bat0 to become free. Usage count = 3

Reported-by: Matthias Schiffer <mschiffer@universe-factory.net>
Signed-off-by: Sven Eckelmann <sven@narfation.org>
Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch>
Signed-off-by: Antonio Quartulli <a@unstable.cc>
2016-04-24 15:40:23 +08:00
..
bat_algo.h batman-adv: OGMv2 - add basic infrastructure 2016-02-29 16:05:31 +08:00
bat_iv_ogm.c batman-adv: keep track of when unicast packets are sent 2016-02-29 16:05:32 +08:00
bat_v_elp.c batman-adv: ELP - send unicast ELP packets for throughput sampling 2016-02-29 16:25:07 +08:00
bat_v_elp.h batman-adv: ELP - compute the metric based on the estimated throughput 2016-02-29 16:25:06 +08:00
bat_v_ogm.c batman-adv: ELP - compute the metric based on the estimated throughput 2016-02-29 16:25:06 +08:00
bat_v_ogm.h batman-adv: OGMv2 - implement originators logic 2016-02-29 16:05:31 +08:00
bat_v.c batman-adv: B.A.T.M.A.N. V - implement bat_neigh_print API 2016-02-29 16:25:08 +08:00
bitarray.c batman-adv: update copyright years for 2016 2016-02-02 12:55:10 +08:00
bitarray.h batman-adv: update copyright years for 2016 2016-02-02 12:55:10 +08:00
bridge_loop_avoidance.c batman-adv: Rename batadv_claim *_free_ref function to *_put 2016-02-23 13:48:27 +08:00
bridge_loop_avoidance.h batman-adv: update copyright years for 2016 2016-02-02 12:55:10 +08:00
debugfs.c batman-adv: update copyright years for 2016 2016-02-02 12:55:10 +08:00
debugfs.h batman-adv: update copyright years for 2016 2016-02-02 12:55:10 +08:00
distributed-arp-table.c batman-adv: keep track of when unicast packets are sent 2016-02-29 16:05:32 +08:00
distributed-arp-table.h batman-adv: update copyright years for 2016 2016-02-02 12:55:10 +08:00
fragmentation.c batman-adv: keep track of when unicast packets are sent 2016-02-29 16:05:32 +08:00
fragmentation.h batman-adv: update copyright years for 2016 2016-02-02 12:55:10 +08:00
gateway_client.c batman-adv: Rename batadv_gw_node *_free_ref function to *_put 2016-02-23 13:49:06 +08:00
gateway_client.h batman-adv: update copyright years for 2016 2016-02-02 12:55:10 +08:00
gateway_common.c batman-adv: add throughput override attribute to hard_ifaces 2016-02-29 16:05:32 +08: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: Deactivate TO_BE_ACTIVATED hardif on shutdown 2016-04-24 15:40:23 +08:00
hard-interface.h batman-adv: Rename batadv_hardif *_free_ref function to *_put 2016-02-23 13:48:24 +08:00
hash.c batman-adv: update copyright years for 2016 2016-02-02 12:55:10 +08:00
hash.h batman-adv: update copyright years for 2016 2016-02-02 12:55:10 +08:00
icmp_socket.c batman-adv: keep track of when unicast packets are sent 2016-02-29 16:05:32 +08:00
icmp_socket.h batman-adv: update copyright years for 2016 2016-02-02 12:55:10 +08:00
Kconfig batman-adv: clarify CFG80211 dependency 2016-03-02 13:45:47 -05:00
main.c batman-adv: OGMv2 - add basic infrastructure 2016-02-29 16:05:31 +08:00
main.h batman-adv: Start new development cycle 2016-02-29 16:25:08 +08:00
Makefile batman-adv: OGMv2 - add basic infrastructure 2016-02-29 16:05:31 +08:00
multicast.c batman-adv: Convert batadv_orig_node to kref 2016-02-10 23:24:06 +08:00
multicast.h batman-adv: update copyright years for 2016 2016-02-02 12:55:10 +08:00
network-coding.c batman-adv: keep track of when unicast packets are sent 2016-02-29 16:05:32 +08:00
network-coding.h batman-adv: update copyright years for 2016 2016-02-02 12:55:10 +08:00
originator.c batman-adv: init neigh node last seen field 2016-04-24 15:39:19 +08:00
originator.h batman-adv: Rename batadv_orig_node_vlan *_free_ref function to *_put 2016-02-23 13:50:58 +08:00
packet.h batman-adv: OGMv2 - add basic infrastructure 2016-02-29 16:05:31 +08:00
routing.c batman-adv: Rename batadv_orig_ifinfo *_free_ref function to *_put 2016-02-23 13:48:26 +08:00
routing.h batman-adv: add seqno maximum age and protection start flag parameters 2016-02-10 23:23:57 +08:00
send.c batman-adv: keep track of when unicast packets are sent 2016-02-29 16:05:32 +08:00
send.h batman-adv: keep track of when unicast packets are sent 2016-02-29 16:05:32 +08:00
soft-interface.c batman-adv: Check skb size before using encapsulated ETH+VLAN header 2016-04-24 15:37:21 +08:00
soft-interface.h batman-adv: Rename batadv_softif_vlan *_free_ref function to *_put 2016-02-23 13:49:10 +08:00
sysfs.c batman-adv: add throughput override attribute to hard_ifaces 2016-02-29 16:05:32 +08:00
sysfs.h batman-adv: update copyright years for 2016 2016-02-02 12:55:10 +08:00
translation-table.c batman-adv: Rename batadv_tt_orig_list_entry *_free_ref function to *_put 2016-02-23 13:51:01 +08:00
translation-table.h batman-adv: update copyright years for 2016 2016-02-02 12:55:10 +08:00
types.h batman-adv: ELP - compute the metric based on the estimated throughput 2016-02-29 16:25:06 +08:00