All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] staging: ks7010_sdio: fix NULL pointer dereference and memory leak
@ 2018-04-12 14:30 Gustavo A. R. Silva
  2018-04-12 15:08 ` Dan Carpenter
  0 siblings, 1 reply; 3+ messages in thread
From: Gustavo A. R. Silva @ 2018-04-12 14:30 UTC (permalink / raw)
  To: Greg Kroah-Hartman; +Cc: devel, linux-kernel, Gustavo A. R. Silva

priv is being dereferenced when it is still null, hence there is an
explicit null pointer dereference at line 935: free_netdev(priv->net_dev)

Also, memory allocated for netdev at line 854:
netdev = alloc_etherdev(sizeof(*priv));
is not being free'd, hence there is a memory leak.

Fix this by null checking priv before dererefencing it and free netdev
before return.

Addresses-Coverity-ID: 1467844 ("Explicit null dereferenced")
Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
---
 drivers/staging/ks7010/ks7010_sdio.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/drivers/staging/ks7010/ks7010_sdio.c b/drivers/staging/ks7010/ks7010_sdio.c
index b8f55a1..f5d4c62 100644
--- a/drivers/staging/ks7010/ks7010_sdio.c
+++ b/drivers/staging/ks7010/ks7010_sdio.c
@@ -932,8 +932,12 @@ static int ks7010_sdio_probe(struct sdio_func *func,
 	return 0;
 
  err_free_netdev:
-	free_netdev(priv->net_dev);
-	card->priv = NULL;
+	if (priv) {
+		free_netdev(priv->net_dev);
+		card->priv = NULL;
+	} else {
+		free_netdev(netdev);
+	}
  err_release_irq:
 	sdio_claim_host(func);
 	sdio_release_irq(func);
-- 
2.7.4

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

end of thread, other threads:[~2018-04-12 15:14 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-04-12 14:30 [PATCH] staging: ks7010_sdio: fix NULL pointer dereference and memory leak Gustavo A. R. Silva
2018-04-12 15:08 ` Dan Carpenter
2018-04-12 15:14   ` Gustavo A. R. Silva

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.