IB/ipoib: Change list_del to list_del_init in the tx object
authorFeras Daoud <ferasda@mellanox.com>
Wed, 28 Dec 2016 12:47:28 +0000 (14:47 +0200)
committerBen Hutchings <ben@decadent.org.uk>
Mon, 5 Jun 2017 20:13:41 +0000 (21:13 +0100)
commit4d1634bb65b9d5a87c01d7a9498cb8eb7bb86272
tree4f9ed01b5e9d0fce30e52775b287badb3a6fec3c
parent31c8b9423b11de5da378c5e185d2f3f0b8c24bd8
IB/ipoib: Change list_del to list_del_init in the tx object

commit 27d41d29c7f093f6f77843624fbb080c1b4a8b9c upstream.

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@mellanox.com>
Signed-off-by: Erez Shitrit <erezsh@mellanox.com>
Reviewed-by: Alex Vesker <valex@mellanox.com>
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Reviewed-by: Yuval Shaia <yuval.shaia@oracle.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
drivers/infiniband/ulp/ipoib/ipoib_cm.c