vserver 1.9.3
[linux-2.6.git] / net / irda / irlan / irlan_eth.c
index 11a2955..04bb892 100644 (file)
@@ -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 */
 }