From: Andrew Lunn Date: Thu, 3 Dec 2015 20:12:33 +0000 (+0100) Subject: batman-adv: Act on NETDEV_*_TYPE_CHANGE events X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=a1a66b1100373ead1fa2383bc3dee42c508bb504;p=GitHub%2FLineageOS%2FG12%2Fandroid_kernel_amlogic_linux-4.9.git batman-adv: Act on NETDEV_*_TYPE_CHANGE events A network interface can change type. It may change from a type which batman does not support, e.g. hdlc, to one it does, e.g. hdlc-eth. When an interface changes type, it sends two notifications. Handle these notifications. Signed-off-by: Andrew Lunn Signed-off-by: David S. Miller --- diff --git a/net/batman-adv/hard-interface.c b/net/batman-adv/hard-interface.c index aa8867e1d983..a58184fdf5fd 100644 --- a/net/batman-adv/hard-interface.c +++ b/net/batman-adv/hard-interface.c @@ -709,7 +709,8 @@ static int batadv_hard_if_event(struct notifier_block *this, } hard_iface = batadv_hardif_get_by_netdev(net_dev); - if (!hard_iface && event == NETDEV_REGISTER) + if (!hard_iface && (event == NETDEV_REGISTER || + event == NETDEV_POST_TYPE_CHANGE)) hard_iface = batadv_hardif_add_interface(net_dev); if (!hard_iface) @@ -724,6 +725,7 @@ static int batadv_hard_if_event(struct notifier_block *this, batadv_hardif_deactivate_interface(hard_iface); break; case NETDEV_UNREGISTER: + case NETDEV_PRE_TYPE_CHANGE: list_del_rcu(&hard_iface->list); batadv_hardif_remove_interface(hard_iface);