X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=net%2Firda%2Firlan%2Firlan_eth.c;h=04bb8925ac0462e2641a2b4f5194eb14f2cf2de9;hb=c7b5ebbddf7bcd3651947760f423e3783bbe6573;hp=11a2955f8e09f148cf7499ce44692d4871638c7d;hpb=a2c21200f1c81b08cb55e417b68150bba439b646;p=linux-2.6.git diff --git a/net/irda/irlan/irlan_eth.c b/net/irda/irlan/irlan_eth.c index 11a2955f8..04bb8925a 100644 --- a/net/irda/irlan/irlan_eth.c +++ b/net/irda/irlan/irlan_eth.c @@ -303,10 +303,10 @@ void irlan_eth_send_gratuitous_arp(struct net_device *dev) */ #ifdef CONFIG_INET IRDA_DEBUG(4, "IrLAN: Sending gratuitous ARP\n"); - in_dev = in_dev_get(dev); + rcu_read_lock(); + in_dev = __in_dev_get(dev); if (in_dev == NULL) - return; - read_lock(&in_dev->lock); + goto out; if (in_dev->ifa_list) arp_send(ARPOP_REQUEST, ETH_P_ARP, @@ -314,8 +314,8 @@ void irlan_eth_send_gratuitous_arp(struct net_device *dev) dev, in_dev->ifa_list->ifa_address, NULL, dev->dev_addr, NULL); - read_unlock(&in_dev->lock); - in_dev_put(in_dev); +out: + rcu_read_unlock(); #endif /* CONFIG_INET */ }