patch "rapidio: handle create_workqueue() failure" added to char-misc-linus
Subsystems (2)
This is a note to let you know that I've just added the patch titled
rapidio: handle create_workqueue() failure
to my char-misc git tree which can be found at
git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git
in the char-misc-linus branch.
The patch will show up in the next release of the linux-next tree (usually sometime within the next 24 hours during the week.)
The patch will hopefully also be merged in Linus's tree for the next -rc kernel release.
If you have any questions about this process, please let me know.
From 69ce3ae36dcb03cdf416b0862a45369ddbf50fdf Mon Sep 17 00:00:00 2001
From: Anirudh Rayabharam <[email protected]>
Date: Mon, 3 May 2021 13:57:12 +0200
Subject: rapidio: handle create_workqueue() failure
In case create_workqueue() fails, release all resources and return -ENOMEM to caller to avoid potential NULL pointer deref later. Move up the create_workequeue() call to return early and avoid unwinding the call to riocm_rx_fill().
--- drivers/rapidio/rio_cm.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-)
drivers/rapidio/rio_cm.c +8 -1
@@ -2127,6 +2127,14 @@ static int riocm_add_mport(struct device *dev,return -ENODEV ; } + cm->rx_wq =create_workqueue (DRV_NAME "/rxq" ); +if (!cm->rx_wq) { +rio_release_inb_mbox (mport, cmbox); +rio_release_outb_mbox (mport, cmbox); +kfree (cm); +return -ENOMEM ; + } +/* * Allocate and register inbound messaging buffers to be ready * to receive channel and system management requests
@@ -2137,7 +2145,6 @@ static int riocm_add_mport(struct device *dev, cm->rx_slots =RIOCM_RX_RING_SIZE ;mutex_init (&cm->rx_lock);riocm_rx_fill (cm,RIOCM_RX_RING_SIZE ); - cm->rx_wq =create_workqueue (DRV_NAME "/rxq" );INIT_WORK (&cm->rx_work, rio_ibmsg_handler); cm->tx_slot =0 ;
Signature · 1 line
2.31.1