diff options
author | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2015-08-10 02:28:09 +0300 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2015-08-10 02:28:09 +0300 |
commit | 5d44f4b3484e85c8d4527ecaca5e536da774ae21 (patch) | |
tree | 5c699fd097844ecdf30ef9b47444064d713ac410 /net/ipv4/arp.c | |
parent | 4816693286d4ff9219b1cc72c2ab9c589448ebcb (diff) | |
parent | f7644cbfcdf03528f0f450f3940c4985b2291f49 (diff) | |
download | linux-5d44f4b3484e85c8d4527ecaca5e536da774ae21.tar.xz |
Merge 4.2-rc6 into char-misc-next
We want the fixes in Linus's tree in here as well.
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
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; } |