Commit 51e9ba48 authored by Kuniyuki Iwashima's avatar Kuniyuki Iwashima Committed by Jakub Kicinski
Browse files

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: default avatarKuniyuki Iwashima <kuniyu@amazon.com>
Link: https://lore.kernel.org/r/20240430015813.71143-5-kuniyu@amazon.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent f8696133
Loading
Loading
Loading
Loading
+18 −13
Original line number Diff line number Diff line
@@ -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)) {
	if (!neigh)
		return -ENXIO;

	if (READ_ONCE(neigh->nud_state) & NUD_NOARP) {
		neigh_release(neigh);
		return -ENXIO;
	}

	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));
			err = 0;
		}
		neigh_release(neigh);
	}
	return err;

	return 0;
}

int arp_invalidate(struct net_device *dev, __be32 ip, bool force)