===== drivers/net/wan/sdlamain.c 1.23 vs edited ===== --- 1.23/drivers/net/wan/sdlamain.c 2003-10-06 02:23:10 +10:00 +++ edited/drivers/net/wan/sdlamain.c 2004-08-14 15:16:40 +10:00 @@ -68,6 +68,7 @@ #include #include +#include #include #define KMEM_SAFETYZONE 8 @@ -1268,37 +1269,39 @@ struct in_ifaddr *ifaddr; struct in_device *in_dev; + unsigned long addr = 0; + rcu_read_lock(); if ((in_dev = __in_dev_get(dev)) == NULL){ - return 0; + goto out; } if ((ifaddr = in_dev->ifa_list)== NULL ){ - return 0; + goto out; } switch (option){ case WAN_LOCAL_IP: - return ifaddr->ifa_local; + addr = ifaddr->ifa_local; break; case WAN_POINTOPOINT_IP: - return ifaddr->ifa_address; + addr = ifaddr->ifa_address; break; case WAN_NETMASK_IP: - return ifaddr->ifa_mask; + addr = ifaddr->ifa_mask; break; case WAN_BROADCAST_IP: - return ifaddr->ifa_broadcast; + addr = ifaddr->ifa_broadcast; break; - default: - return 0; } - return 0; +out: + rcu_read_unlock(); + return addr; } void add_gateway(sdla_t *card, struct net_device *dev)