Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4133fc09 authored by Ying Xue's avatar Ying Xue Committed by David S. Miller
Browse files

rocker: fix a neigh entry leak issue



Once we get a neighbour through looking up arp cache or creating a
new one in rocker_port_ipv4_resolve(), the neighbour's refcount is
already taken. But as we don't put the refcount again after it's
used, this makes the neighbour entry leaked.

Suggested-by: default avatarEric Dumazet <edumazet@google.com>
Acked-by: default avatarJiri Pirko <jiri@resnulli.us>
Acked-by: default avatarEric Dumazet <edumazet@google.com>
Signed-off-by: default avatarYing Xue <ying.xue@windriver.com>
Acked-by: default avatarJiri Pirko <jiri@resnulli.us>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 54eac850
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -3037,10 +3037,11 @@ static int rocker_port_ipv4_resolve(struct rocker_port *rocker_port,
	struct neighbour *n = __ipv4_neigh_lookup(dev, (__force u32)ip_addr);
	int err = 0;

	if (!n)
	if (!n) {
		n = neigh_create(&arp_tbl, &ip_addr, dev);
	if (!n)
		return -ENOMEM;
		if (IS_ERR(n))
			return IS_ERR(n);
	}

	/* If the neigh is already resolved, then go ahead and
	 * install the entry, otherwise start the ARP process to
@@ -3053,6 +3054,7 @@ static int rocker_port_ipv4_resolve(struct rocker_port *rocker_port,
	else
		neigh_event_send(n, NULL);

	neigh_release(n);
	return err;
}