Patch "net: qrtr: Fix memory leak on qrtr_tx_wait failure" has been added to the 5.11-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    net: qrtr: Fix memory leak on qrtr_tx_wait failure

to the 5.11-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     net-qrtr-fix-memory-leak-on-qrtr_tx_wait-failure.patch
and it can be found in the queue-5.11 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 4464105121fcde000d7a8b5bfe9c9361f4dd8ccf
Author: Loic Poulain <loic.poulain@xxxxxxxxxx>
Date:   Tue Mar 30 16:11:08 2021 +0200

    net: qrtr: Fix memory leak on qrtr_tx_wait failure
    
    [ Upstream commit 8a03dd925786bdc3834d56ccc980bb70668efa35 ]
    
    qrtr_tx_wait does not check for radix_tree_insert failure, causing
    the 'flow' object to be unreferenced after qrtr_tx_wait return. Fix
    that by releasing flow on radix_tree_insert failure.
    
    Fixes: 5fdeb0d372ab ("net: qrtr: Implement outgoing flow control")
    Reported-by: syzbot+739016799a89c530b32a@xxxxxxxxxxxxxxxxxxxxxxxxx
    Signed-off-by: Loic Poulain <loic.poulain@xxxxxxxxxx>
    Reviewed-by: Bjorn Andersson <bjorn.andersson@xxxxxxxxxx>
    Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@xxxxxxxxxx>
    Signed-off-by: David S. Miller <davem@xxxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/net/qrtr/qrtr.c b/net/qrtr/qrtr.c
index dfc820ee553a..1e4fb568fa84 100644
--- a/net/qrtr/qrtr.c
+++ b/net/qrtr/qrtr.c
@@ -271,7 +271,10 @@ static int qrtr_tx_wait(struct qrtr_node *node, int dest_node, int dest_port,
 		flow = kzalloc(sizeof(*flow), GFP_KERNEL);
 		if (flow) {
 			init_waitqueue_head(&flow->resume_tx);
-			radix_tree_insert(&node->qrtr_tx_flow, key, flow);
+			if (radix_tree_insert(&node->qrtr_tx_flow, key, flow)) {
+				kfree(flow);
+				flow = NULL;
+			}
 		}
 	}
 	mutex_unlock(&node->qrtr_tx_lock);



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux