[PATCH] net: spi: fix a potential NULL pointer dereference

From: Kangjie Lu
Date: Sun Mar 10 2019 - 03:57:46 EST


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@xxxxxxx>
---
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