fnic: Use the local variable instead of I/O flag to acquire io_req_lock in fnic_queue...
authorHiral Shah <hishah@cisco.com>
Tue, 14 Jul 2015 14:08:57 +0000 (07:08 -0700)
committerJames Bottomley <JBottomley@Odin.com>
Tue, 18 Aug 2015 15:11:23 +0000 (08:11 -0700)
commitdb196935d9562abec4510f48d887bc1f1e054fcf
treeecb0bef070e82906f548fd6490d8c0110ab43b9b
parent4f258a46346c03fa0bbb6199ffaf4e1f9f599660
fnic: Use the local variable instead of I/O flag to acquire io_req_lock in fnic_queuecommand() to avoid deadloack

We added changes in fnic driver patch 1.6.0.16 to acquire
io_req_lock in fnic_queuecommand() before issuing I/O so that io completion
is serialized. But when releasing the lock we check for the I/O flag and
this could be modified if IO abort occurs before I/O completion. In this case
we wont release the lock and causes deadlock in some scenerios. Using the
local variable to check the IO lock status will resolve the problem.

Fixes: 41df7b02db82cf6c14f094757bac3830d10a827f
Signed-off-by: Hiral Shah <hishah@cisco.com>
Signed-off-by: Sesidhar Baddela <sebaddel@cisco.com>
Signed-off-by: Anil Chintalapati <achintal@cisco.com>
Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
Cc: stable@vger.kernel.org
Signed-off-by: James Bottomley <JBottomley@Odin.com>
drivers/scsi/fnic/fnic.h
drivers/scsi/fnic/fnic_scsi.c