| From 5e68b86c7b7c059c0f0ec4bf8adabe63f84a61eb Mon Sep 17 00:00:00 2001 |
| From: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| Date: Mon, 3 May 2021 13:57:11 +0200 |
| Subject: Revert "rapidio: fix a NULL pointer dereference when create_workqueue() fails" |
| |
| From: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| commit 5e68b86c7b7c059c0f0ec4bf8adabe63f84a61eb upstream. |
| |
| This reverts commit 23015b22e47c5409620b1726a677d69e5cd032ba. |
| |
| Because of recent interactions with developers from @umn.edu, all |
| commits from them have been recently re-reviewed to ensure if they were |
| correct or not. |
| |
| Upon review, this commit was found to be incorrect for the reasons |
| below, so it must be reverted. It will be fixed up "correctly" in a |
| later kernel change. |
| |
| The original commit has a memory leak on the error path here, it does |
| not clean up everything properly. |
| |
| Cc: Kangjie Lu <kjlu@umn.edu> |
| Cc: Alexandre Bounine <alex.bou9@gmail.com> |
| Cc: Matt Porter <mporter@kernel.crashing.org> |
| Cc: Andrew Morton <akpm@linux-foundation.org> |
| Cc: Linus Torvalds <torvalds@linux-foundation.org> |
| Fixes: 23015b22e47c ("rapidio: fix a NULL pointer dereference when create_workqueue() fails") |
| Cc: stable <stable@vger.kernel.org> |
| Link: https://lore.kernel.org/r/20210503115736.2104747-45-gregkh@linuxfoundation.org |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/rapidio/rio_cm.c | 8 -------- |
| 1 file changed, 8 deletions(-) |
| |
| --- a/drivers/rapidio/rio_cm.c |
| +++ b/drivers/rapidio/rio_cm.c |
| @@ -2147,14 +2147,6 @@ static int riocm_add_mport(struct device |
| mutex_init(&cm->rx_lock); |
| riocm_rx_fill(cm, RIOCM_RX_RING_SIZE); |
| cm->rx_wq = create_workqueue(DRV_NAME "/rxq"); |
| - if (!cm->rx_wq) { |
| - riocm_error("failed to allocate IBMBOX_%d on %s", |
| - cmbox, mport->name); |
| - rio_release_outb_mbox(mport, cmbox); |
| - kfree(cm); |
| - return -ENOMEM; |
| - } |
| - |
| INIT_WORK(&cm->rx_work, rio_ibmsg_handler); |
| |
| cm->tx_slot = 0; |