Currently, batadv_get_real_netdevice can return different results in this situation:
ip netns add main ip netns add peer ip -net main link add dummy1 type dummy ip -net main link add link dummy1 netns peer type macsec # same ifindex as dummy1 ip -net main link add link dummy1 netns peer type macsec port 2
Let's use the presence of a ndo_get_iflink operation, rather than the value it returns, to detect a device without a link.
Fixes: 5ed4a460a1d3 ("batman-adv: additional checks for virtual interfaces on top of WiFi") Signed-off-by: Sabrina Dubroca sd@queasysnail.net --- net/batman-adv/hard-interface.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/net/batman-adv/hard-interface.c b/net/batman-adv/hard-interface.c index 0d87c5d56844..8f7d2dd37321 100644 --- a/net/batman-adv/hard-interface.c +++ b/net/batman-adv/hard-interface.c @@ -223,7 +223,7 @@ static struct net_device *batadv_get_real_netdevice(struct net_device *netdev) if (!netdev) return NULL;
- if (netdev->ifindex == dev_get_iflink(netdev)) { + if (!(netdev->netdev_ops && netdev->netdev_ops->ndo_get_iflink)) { dev_hold(netdev); return netdev; }