Patch "IB/ipoib: Change list_del to list_del_init in the tx object" has been added to the 3.18-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
IB/ipoib: Change list_del to list_del_init in the tx object
to the 3.18-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:
ib-ipoib-change-list_del-to-list_del_init-in-the-tx-object.patch
and it can be found in the queue-3.18 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From foo@baz Thu Nov 9 10:19:57 CET 2017
From: Feras Daoud <[email protected]>
Date: Wed, 28 Dec 2016 14:47:28 +0200
Subject: IB/ipoib: Change list_del to list_del_init in the tx object
From: Feras Daoud <[email protected]>
[ Upstream commit 27d41d29c7f093f6f77843624fbb080c1b4a8b9c ]
Since ipoib_cm_tx_start function and ipoib_cm_tx_reap function belong to different work queues, they can run in parallel.
In this case if ipoib_cm_tx_reap calls list_del and release the lock, ipoib_cm_tx_start may acquire it and call list_del_init on the already deleted object.
Changing list_del to list_del_init in ipoib_cm_tx_reap fixes the problem.
--- drivers/infiniband/ulp/ipoib/ipoib_cm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/infiniband/ulp/ipoib/ipoib_cm.c +1 -1
@@ -1362,7 +1362,7 @@ static void ipoib_cm_tx_reap(struct workwhile (!list_empty (&priv->cm.reap_list)) { p =list_entry (priv->cm.reap_list.next,typeof (*p), list); -list_del (&p->list); +list_del_init (&p->list);spin_unlock_irqrestore (&priv->lock, flags);netif_tx_unlock_bh (dev);ipoib_cm_tx_destroy (p);
Patches currently in stable-queue which might be from [email protected] are
queue-3.18/ib-ipoib-change-list_del-to-list_del_init-in-the-tx-object.patch