lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Wed, 25 Oct 2017 01:56:18 +0000 From: "Levin, Alexander (Sasha Levin)" <alexander.levin@...izon.com> To: "linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>, "stable@...r.kernel.org" <stable@...r.kernel.org> Cc: Feras Daoud <ferasda@...lanox.com>, Erez Shitrit <erezsh@...lanox.com>, Leon Romanovsky <leon@...nel.org>, Doug Ledford <dledford@...hat.com>, "Levin, Alexander (Sasha Levin)" <alexander.levin@...izon.com> Subject: [PATCH AUTOSEL for 4.4 23/25] IB/ipoib: Change list_del to list_del_init in the tx object From: Feras Daoud <ferasda@...lanox.com> [ 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. Fixes: 839fcaba355a ("IPoIB: Connected mode experimental support") Signed-off-by: Feras Daoud <ferasda@...lanox.com> Signed-off-by: Erez Shitrit <erezsh@...lanox.com> Reviewed-by: Alex Vesker <valex@...lanox.com> Signed-off-by: Leon Romanovsky <leon@...nel.org> Reviewed-by: Yuval Shaia <yuval.shaia@...cle.com> Signed-off-by: Doug Ledford <dledford@...hat.com> Signed-off-by: Sasha Levin <alexander.levin@...izon.com> --- drivers/infiniband/ulp/ipoib/ipoib_cm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/infiniband/ulp/ipoib/ipoib_cm.c b/drivers/infiniband/ulp/ipoib/ipoib_cm.c index 2018d24344de..f74b11542603 100644 --- a/drivers/infiniband/ulp/ipoib/ipoib_cm.c +++ b/drivers/infiniband/ulp/ipoib/ipoib_cm.c @@ -1373,7 +1373,7 @@ static void ipoib_cm_tx_reap(struct work_struct *work) while (!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); -- 2.11.0
Powered by blists - more mailing lists