IB/iser: Fix a possible race in iser connection states transition
authorAriel Nahum <arieln@mellanox.com>
Thu, 22 May 2014 08:00:19 +0000 (11:00 +0300)
committerRoland Dreier <roland@purestorage.com>
Mon, 26 May 2014 15:19:48 +0000 (08:19 -0700)
commit66d4e62d27875f3ae417e3b73396e290bb184b5c
tree8c6390d7bbd438ffbf2ab0001a426ba2bd8a8602
parentb73c3adabdb1e2cb2f2c69bc3cbb9306aa3f9700
IB/iser: Fix a possible race in iser connection states transition

In some circumstances (multiple targets), RDMA_CM ESTABLISHED event
and ep_disconnect may race. In this case, the iser connection state
may transition to UP (after ep_disconnect transitioned it to
TERMINATING), while the connection is being torn down.

Upon RDMA_CM event ESTABLISHED we allow iser connection state to
transition to UP only from PENDING. We also make sure to protect this
state change (done under the connection lock).

Signed-off-by: Ariel Nahum <arieln@mellanox.com>
Signed-off-by: Sagi Grimberg <sagig@mellanox.com>
Reviewed-by: Or Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: Roland Dreier <roland@purestorage.com>
drivers/infiniband/ulp/iser/iser_verbs.c