[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20190310075735.3392-1-kjlu@umn.edu>
Date: Sun, 10 Mar 2019 01:57:33 -0600
From: Kangjie Lu <kjlu@....edu>
To: kjlu@....edu
Cc: pakki001@....edu, Wolfgang Grandegger <wg@...ndegger.com>,
Marc Kleine-Budde <mkl@...gutronix.de>,
"David S. Miller" <davem@...emloft.net>,
Wei Liu <wei.liu2@...rix.com>, Joe Perches <joe@...ches.com>,
linux-can@...r.kernel.org, netdev@...r.kernel.org,
linux-kernel@...r.kernel.org
Subject: [PATCH] net: spi: fix a potential NULL pointer dereference
In case alloc_workqueue fails to allocate the work queue and
returns NULL, the fix releases the resources and returns
-ENOMEM.
Signed-off-by: Kangjie Lu <kjlu@....edu>
---
drivers/net/can/spi/mcp251x.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/drivers/net/can/spi/mcp251x.c b/drivers/net/can/spi/mcp251x.c
index e90817608645..2737b9a20dfe 100644
--- a/drivers/net/can/spi/mcp251x.c
+++ b/drivers/net/can/spi/mcp251x.c
@@ -962,6 +962,14 @@ static int mcp251x_open(struct net_device *net)
priv->wq = alloc_workqueue("mcp251x_wq", WQ_FREEZABLE | WQ_MEM_RECLAIM,
0);
+ if (unlikely(!priv->wq)) {
+ dev_err(&spi->dev, "failed to allocate work queue\n");
+ mcp251x_power_enable(priv->transceiver, 0);
+ close_candev(net);
+ ret = -ENOMEM;
+ goto open_unlock;
+ }
+
INIT_WORK(&priv->tx_work, mcp251x_tx_work_handler);
INIT_WORK(&priv->restart_work, mcp251x_restart_work_handler);
--
2.17.1
Powered by blists - more mailing lists