diff options
Diffstat (limited to 'net/ipv4/arp.c')
| -rw-r--r-- | net/ipv4/arp.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/net/ipv4/arp.c b/net/ipv4/arp.c index ec0e36893b01..b425748f02d7 100644 --- a/net/ipv4/arp.c +++ b/net/ipv4/arp.c | |||
| @@ -241,7 +241,7 @@ static int arp_constructor(struct neighbour *neigh) | |||
| 241 | neigh->type = inet_addr_type(addr); | 241 | neigh->type = inet_addr_type(addr); |
| 242 | 242 | ||
| 243 | rcu_read_lock(); | 243 | rcu_read_lock(); |
| 244 | in_dev = rcu_dereference(__in_dev_get(dev)); | 244 | in_dev = __in_dev_get_rcu(dev); |
| 245 | if (in_dev == NULL) { | 245 | if (in_dev == NULL) { |
| 246 | rcu_read_unlock(); | 246 | rcu_read_unlock(); |
| 247 | return -EINVAL; | 247 | return -EINVAL; |
| @@ -989,8 +989,8 @@ static int arp_req_set(struct arpreq *r, struct net_device * dev) | |||
| 989 | ipv4_devconf.proxy_arp = 1; | 989 | ipv4_devconf.proxy_arp = 1; |
| 990 | return 0; | 990 | return 0; |
| 991 | } | 991 | } |
| 992 | if (__in_dev_get(dev)) { | 992 | if (__in_dev_get_rtnl(dev)) { |
| 993 | __in_dev_get(dev)->cnf.proxy_arp = 1; | 993 | __in_dev_get_rtnl(dev)->cnf.proxy_arp = 1; |
| 994 | return 0; | 994 | return 0; |
| 995 | } | 995 | } |
| 996 | return -ENXIO; | 996 | return -ENXIO; |
| @@ -1095,8 +1095,8 @@ static int arp_req_delete(struct arpreq *r, struct net_device * dev) | |||
| 1095 | ipv4_devconf.proxy_arp = 0; | 1095 | ipv4_devconf.proxy_arp = 0; |
| 1096 | return 0; | 1096 | return 0; |
| 1097 | } | 1097 | } |
| 1098 | if (__in_dev_get(dev)) { | 1098 | if (__in_dev_get_rtnl(dev)) { |
| 1099 | __in_dev_get(dev)->cnf.proxy_arp = 0; | 1099 | __in_dev_get_rtnl(dev)->cnf.proxy_arp = 0; |
| 1100 | return 0; | 1100 | return 0; |
| 1101 | } | 1101 | } |
| 1102 | return -ENXIO; | 1102 | return -ENXIO; |
