diff options
| author | Dave Airlie <airlied@redhat.com> | 2015-08-17 14:13:53 +1000 |
|---|---|---|
| committer | Dave Airlie <airlied@redhat.com> | 2015-08-17 14:13:53 +1000 |
| commit | 4eebf60b7452fbd551fd7dece855ba7825a49cbc (patch) | |
| tree | 490b4d194ba09c90e10201ab7fc084a0bda0ed27 /net/ipv4/arp.c | |
| parent | 8f9cb50789e76f3e224e8861adf650e55c747af4 (diff) | |
| parent | 2c6625cd545bdd66acff14f3394865d43920a5c7 (diff) | |
Merge tag 'v4.2-rc7' into drm-next
Linux 4.2-rc7
Backmerge master for i915 fixes
Diffstat (limited to 'net/ipv4/arp.c')
| -rw-r--r-- | net/ipv4/arp.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/net/ipv4/arp.c b/net/ipv4/arp.c index 933a92820d26..6c8b1fbafce8 100644 --- a/net/ipv4/arp.c +++ b/net/ipv4/arp.c @@ -1017,14 +1017,16 @@ static int arp_req_get(struct arpreq *r, struct net_device *dev) neigh = neigh_lookup(&arp_tbl, &ip, dev); if (neigh) { - read_lock_bh(&neigh->lock); - memcpy(r->arp_ha.sa_data, neigh->ha, dev->addr_len); - r->arp_flags = arp_state_to_flags(neigh); - read_unlock_bh(&neigh->lock); - r->arp_ha.sa_family = dev->type; - strlcpy(r->arp_dev, dev->name, sizeof(r->arp_dev)); + if (!(neigh->nud_state & NUD_NOARP)) { + read_lock_bh(&neigh->lock); + memcpy(r->arp_ha.sa_data, neigh->ha, dev->addr_len); + r->arp_flags = arp_state_to_flags(neigh); + read_unlock_bh(&neigh->lock); + r->arp_ha.sa_family = dev->type; + strlcpy(r->arp_dev, dev->name, sizeof(r->arp_dev)); + err = 0; + } neigh_release(neigh); - err = 0; } return err; } |
