All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH net] rocker: move dereference before free
@ 2017-06-28 11:44 ` Dan Carpenter
  0 siblings, 0 replies; 4+ messages in thread
From: Dan Carpenter @ 2017-06-28 11:44 UTC (permalink / raw)
  To: Jiri Pirko, Arnd Bergmann; +Cc: netdev, kernel-janitors

My static checker complains that ofdpa_neigh_del() can sometimes free
"found".   It just makes sense to use it first before deleting it.

Fixes: ecf244f753e0 ("rocker: fix maybe-uninitialized warning")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
---
Most ref counting function use atomic_dec() but ofdpa_neigh_del() just
uses normal decrement.  Are you sure this isn't racy?

This applies to net.  In net-next the code has shifted around and it
doesn't apply anymore.  Should I send a different patch for net-next?

diff --git a/drivers/net/ethernet/rocker/rocker_ofdpa.c b/drivers/net/ethernet/rocker/rocker_ofdpa.c
index 2ae852454780..a9ce82d3e9cf 100644
--- a/drivers/net/ethernet/rocker/rocker_ofdpa.c
+++ b/drivers/net/ethernet/rocker/rocker_ofdpa.c
@@ -1505,8 +1505,8 @@ static int ofdpa_port_ipv4_nh(struct ofdpa_port *ofdpa_port,
 		*index = entry->index;
 		resolved = false;
 	} else if (removing) {
-		ofdpa_neigh_del(trans, found);
 		*index = found->index;
+		ofdpa_neigh_del(trans, found);
 	} else if (updating) {
 		ofdpa_neigh_update(found, trans, NULL, false);
 		resolved = !is_zero_ether_addr(found->eth_dst);

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

* [PATCH net] rocker: move dereference before free
@ 2017-06-28 11:44 ` Dan Carpenter
  0 siblings, 0 replies; 4+ messages in thread
From: Dan Carpenter @ 2017-06-28 11:44 UTC (permalink / raw)
  To: Jiri Pirko, Arnd Bergmann; +Cc: netdev, kernel-janitors

My static checker complains that ofdpa_neigh_del() can sometimes free
"found".   It just makes sense to use it first before deleting it.

Fixes: ecf244f753e0 ("rocker: fix maybe-uninitialized warning")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
---
Most ref counting function use atomic_dec() but ofdpa_neigh_del() just
uses normal decrement.  Are you sure this isn't racy?

This applies to net.  In net-next the code has shifted around and it
doesn't apply anymore.  Should I send a different patch for net-next?

diff --git a/drivers/net/ethernet/rocker/rocker_ofdpa.c b/drivers/net/ethernet/rocker/rocker_ofdpa.c
index 2ae852454780..a9ce82d3e9cf 100644
--- a/drivers/net/ethernet/rocker/rocker_ofdpa.c
+++ b/drivers/net/ethernet/rocker/rocker_ofdpa.c
@@ -1505,8 +1505,8 @@ static int ofdpa_port_ipv4_nh(struct ofdpa_port *ofdpa_port,
 		*index = entry->index;
 		resolved = false;
 	} else if (removing) {
-		ofdpa_neigh_del(trans, found);
 		*index = found->index;
+		ofdpa_neigh_del(trans, found);
 	} else if (updating) {
 		ofdpa_neigh_update(found, trans, NULL, false);
 		resolved = !is_zero_ether_addr(found->eth_dst);

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

* Re: [PATCH net] rocker: move dereference before free
  2017-06-28 11:44 ` Dan Carpenter
@ 2017-06-29 18:19   ` David Miller
  -1 siblings, 0 replies; 4+ messages in thread
From: David Miller @ 2017-06-29 18:19 UTC (permalink / raw)
  To: dan.carpenter; +Cc: jiri, arnd, netdev, kernel-janitors

From: Dan Carpenter <dan.carpenter@oracle.com>
Date: Wed, 28 Jun 2017 14:44:21 +0300

> My static checker complains that ofdpa_neigh_del() can sometimes free
> "found".   It just makes sense to use it first before deleting it.
> 
> Fixes: ecf244f753e0 ("rocker: fix maybe-uninitialized warning")
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>

Applied, thanks.

> Most ref counting function use atomic_dec() but ofdpa_neigh_del() just
> uses normal decrement.  Are you sure this isn't racy?

A spinlock is held always when this counter is touched.

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

* Re: [PATCH net] rocker: move dereference before free
@ 2017-06-29 18:19   ` David Miller
  0 siblings, 0 replies; 4+ messages in thread
From: David Miller @ 2017-06-29 18:19 UTC (permalink / raw)
  To: dan.carpenter; +Cc: jiri, arnd, netdev, kernel-janitors

From: Dan Carpenter <dan.carpenter@oracle.com>
Date: Wed, 28 Jun 2017 14:44:21 +0300

> My static checker complains that ofdpa_neigh_del() can sometimes free
> "found".   It just makes sense to use it first before deleting it.
> 
> Fixes: ecf244f753e0 ("rocker: fix maybe-uninitialized warning")
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>

Applied, thanks.

> Most ref counting function use atomic_dec() but ofdpa_neigh_del() just
> uses normal decrement.  Are you sure this isn't racy?

A spinlock is held always when this counter is touched.

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

end of thread, other threads:[~2017-06-29 18:19 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-06-28 11:44 [PATCH net] rocker: move dereference before free Dan Carpenter
2017-06-28 11:44 ` Dan Carpenter
2017-06-29 18:19 ` David Miller
2017-06-29 18:19   ` 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.