All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH net-next] rocker: fix a neigh entry leak issue
@ 2015-05-14  7:06 Ying Xue
  2015-05-14  8:44 ` Jiri Pirko
  2015-05-14 14:06 ` Eric Dumazet
  0 siblings, 2 replies; 4+ messages in thread
From: Ying Xue @ 2015-05-14  7:06 UTC (permalink / raw)
  To: jiri, sfeldma; +Cc: netdev

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 we don't put the refcount again after it's used,
which make the neighbour entry leaked.

Signed-off-by: Ying Xue <ying.xue@windriver.com>
---
 drivers/net/ethernet/rocker/rocker.c |    1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/net/ethernet/rocker/rocker.c b/drivers/net/ethernet/rocker/rocker.c
index 1fc006b..7504540 100644
--- a/drivers/net/ethernet/rocker/rocker.c
+++ b/drivers/net/ethernet/rocker/rocker.c
@@ -3053,6 +3053,7 @@ static int rocker_port_ipv4_resolve(struct rocker_port *rocker_port,
 	else
 		neigh_event_send(n, NULL);
 
+	neigh_release(n);
 	return err;
 }
 
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH net-next] rocker: fix a neigh entry leak issue
  2015-05-14  7:06 [PATCH net-next] rocker: fix a neigh entry leak issue Ying Xue
@ 2015-05-14  8:44 ` Jiri Pirko
  2015-05-14 14:06 ` Eric Dumazet
  1 sibling, 0 replies; 4+ messages in thread
From: Jiri Pirko @ 2015-05-14  8:44 UTC (permalink / raw)
  To: Ying Xue; +Cc: sfeldma, netdev

Thu, May 14, 2015 at 09:06:30AM CEST, ying.xue@windriver.com wrote:
>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 we don't put the refcount again after it's used,
>which make the neighbour entry leaked.
>
>Signed-off-by: Ying Xue <ying.xue@windriver.com>

Acked-by: Jiri Pirko <jiri@resnulli.us>

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH net-next] rocker: fix a neigh entry leak issue
  2015-05-14  7:06 [PATCH net-next] rocker: fix a neigh entry leak issue Ying Xue
  2015-05-14  8:44 ` Jiri Pirko
@ 2015-05-14 14:06 ` Eric Dumazet
  2015-05-14 16:17   ` David Miller
  1 sibling, 1 reply; 4+ messages in thread
From: Eric Dumazet @ 2015-05-14 14:06 UTC (permalink / raw)
  To: Ying Xue; +Cc: jiri, sfeldma, netdev

On Thu, 2015-05-14 at 15:06 +0800, Ying Xue wrote:
> 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 we don't put the refcount again after it's used,
> which make the neighbour entry leaked.
> 
> Signed-off-by: Ying Xue <ying.xue@windriver.com>
> ---
>  drivers/net/ethernet/rocker/rocker.c |    1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/net/ethernet/rocker/rocker.c b/drivers/net/ethernet/rocker/rocker.c
> index 1fc006b..7504540 100644
> --- a/drivers/net/ethernet/rocker/rocker.c
> +++ b/drivers/net/ethernet/rocker/rocker.c
> @@ -3053,6 +3053,7 @@ static int rocker_port_ipv4_resolve(struct rocker_port *rocker_port,
>  	else
>  		neigh_event_send(n, NULL);
>  
> +	neigh_release(n);
>  	return err;
>  }
>  

I do not think this fix is complete.

neigh_create() can return an error, and we'll crash.

diff --git a/drivers/net/ethernet/rocker/rocker.c b/drivers/net/ethernet/rocker/rocker.c
index f0a9cb44be6bedc2171f6c9f79200cfa5d0bb0fa..ff0befbd8b4351c6f8fef93513967d5450d29e64 100644
--- a/drivers/net/ethernet/rocker/rocker.c
+++ b/drivers/net/ethernet/rocker/rocker.c
@@ -3037,11 +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 PTR_ERR(n);
+	}
 	/* If the neigh is already resolved, then go ahead and
 	 * install the entry, otherwise start the ARP process to
 	 * resolve the neigh.

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH net-next] rocker: fix a neigh entry leak issue
  2015-05-14 14:06 ` Eric Dumazet
@ 2015-05-14 16:17   ` David Miller
  0 siblings, 0 replies; 4+ messages in thread
From: David Miller @ 2015-05-14 16:17 UTC (permalink / raw)
  To: eric.dumazet; +Cc: ying.xue, jiri, sfeldma, netdev

From: Eric Dumazet <eric.dumazet@gmail.com>
Date: Thu, 14 May 2015 07:06:22 -0700

> On Thu, 2015-05-14 at 15:06 +0800, Ying Xue wrote:
>> 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 we don't put the refcount again after it's used,
>> which make the neighbour entry leaked.
>> 
>> Signed-off-by: Ying Xue <ying.xue@windriver.com>
>> ---
>>  drivers/net/ethernet/rocker/rocker.c |    1 +
>>  1 file changed, 1 insertion(+)
>> 
>> diff --git a/drivers/net/ethernet/rocker/rocker.c b/drivers/net/ethernet/rocker/rocker.c
>> index 1fc006b..7504540 100644
>> --- a/drivers/net/ethernet/rocker/rocker.c
>> +++ b/drivers/net/ethernet/rocker/rocker.c
>> @@ -3053,6 +3053,7 @@ static int rocker_port_ipv4_resolve(struct rocker_port *rocker_port,
>>  	else
>>  		neigh_event_send(n, NULL);
>>  
>> +	neigh_release(n);
>>  	return err;
>>  }
>>  
> 
> I do not think this fix is complete.
> 
> neigh_create() can return an error, and we'll crash.

Correct, neigh_create() return values must be checked with IS_ERR().

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2015-05-14 16:17 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-05-14  7:06 [PATCH net-next] rocker: fix a neigh entry leak issue Ying Xue
2015-05-14  8:44 ` Jiri Pirko
2015-05-14 14:06 ` Eric Dumazet
2015-05-14 16:17   ` David Miller

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.