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)
committerDoug Ledford <dledford@redhat.com>
Thu, 12 Jan 2017 19:01:06 +0000 (14:01 -0500)
commit27d41d29c7f093f6f77843624fbb080c1b4a8b9c
treefb61bc7a58ddab779bf5bfa8e306847b521ba861
parentc586071d1dc8227a7182179b8e50ee92cc43f6d2
IB/ipoib: Change list_del to list_del_init in the tx object

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>
drivers/infiniband/ulp/ipoib/ipoib_cm.c