]> git.baikalelectronics.ru Git - kernel.git/commit
libfc: Do not invoke the response handler after fc_exch_done()
authorBart Van Assche <bvanassche@acm.org>
Sat, 17 Aug 2013 20:34:43 +0000 (20:34 +0000)
committerRobert Love <robert.w.love@intel.com>
Wed, 4 Sep 2013 20:45:22 +0000 (13:45 -0700)
commit97f627b4cbef97125f8d1b4f50bc5a7fa8dce633
treecd9a65fa2d45e6397ba1620846dc4c9359638df4
parent24f1bae1a74833109ad90a15cf55f8f0d40450aa
libfc: Do not invoke the response handler after fc_exch_done()

While the FCoE initiator driver invokes fc_exch_done() from inside
the libfc response handler, FCoE target drivers typically invoke
fc_exch_done() from outside the libfc response handler. The object
fc_exch.arg points at may disappear as soon as fc_exch_done() has
finished. So it's important not to invoke the response handler
function after fc_exch_done() has finished. Modify libfc such that
this guarantee is provided if fc_exch_done() is invoked from
outside a response handler. This patch fixes a sporadic crash in
FCoE target implementations after a command has been aborted.

Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Cc: Neil Horman <nhorman@tuxdriver.com>
Signed-off-by: Robert Love <robert.w.love@intel.com>
drivers/scsi/libfc/fc_exch.c
include/scsi/libfc.h