diff --git a/core/hdd/src/wlan_hdd_tx_rx.c b/core/hdd/src/wlan_hdd_tx_rx.c index 33b348b57b36..36d01598bcdb 100644 --- a/core/hdd/src/wlan_hdd_tx_rx.c +++ b/core/hdd/src/wlan_hdd_tx_rx.c @@ -1540,7 +1540,10 @@ static bool hdd_is_arp_local(struct sk_buff *skb) arp = (struct arphdr *)skb->data; if (arp->ar_op == htons(ARPOP_REQUEST)) { - rtnl_lock(); + /* if fail to acquire rtnl lock, assume it's local arp */ + if (!rtnl_trylock()) + return true; + in_dev = __in_dev_get_rtnl(skb->dev); if (in_dev) { for (ifap = &in_dev->ifa_list; (ifa = *ifap) != NULL;