arp: Remove a nest in arp_req_get().
This is a prep patch to make the following changes tidy. No functional change intended. Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com> Link: https://lore.kernel.org/r/20240430015813.71143-5-kuniyu@amazon.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
f8696133f6
commit
51e9ba48d4
|
@ -1138,23 +1138,28 @@ static int arp_req_get(struct arpreq *r, struct net_device *dev)
|
|||
{
|
||||
__be32 ip = ((struct sockaddr_in *) &r->arp_pa)->sin_addr.s_addr;
|
||||
struct neighbour *neigh;
|
||||
int err = -ENXIO;
|
||||
|
||||
neigh = neigh_lookup(&arp_tbl, &ip, dev);
|
||||
if (neigh) {
|
||||
if (!(READ_ONCE(neigh->nud_state) & NUD_NOARP)) {
|
||||
read_lock_bh(&neigh->lock);
|
||||
memcpy(r->arp_ha.sa_data, neigh->ha,
|
||||
min(dev->addr_len, sizeof(r->arp_ha.sa_data_min)));
|
||||
r->arp_flags = arp_state_to_flags(neigh);
|
||||
read_unlock_bh(&neigh->lock);
|
||||
r->arp_ha.sa_family = dev->type;
|
||||
strscpy(r->arp_dev, dev->name, sizeof(r->arp_dev));
|
||||
err = 0;
|
||||
}
|
||||
if (!neigh)
|
||||
return -ENXIO;
|
||||
|
||||
if (READ_ONCE(neigh->nud_state) & NUD_NOARP) {
|
||||
neigh_release(neigh);
|
||||
return -ENXIO;
|
||||
}
|
||||
return err;
|
||||
|
||||
read_lock_bh(&neigh->lock);
|
||||
memcpy(r->arp_ha.sa_data, neigh->ha,
|
||||
min(dev->addr_len, sizeof(r->arp_ha.sa_data_min)));
|
||||
r->arp_flags = arp_state_to_flags(neigh);
|
||||
read_unlock_bh(&neigh->lock);
|
||||
|
||||
neigh_release(neigh);
|
||||
|
||||
r->arp_ha.sa_family = dev->type;
|
||||
strscpy(r->arp_dev, dev->name, sizeof(r->arp_dev));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int arp_invalidate(struct net_device *dev, __be32 ip, bool force)
|
||||
|
|
Loading…
Reference in New Issue