• Bart Van Assche's avatar
    libfc: Do not invoke the response handler after fc_exch_done() · 7030fd62
    Bart Van Assche authored
    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: default avatarBart Van Assche <bvanassche@acm.org>
    Cc: Neil Horman <nhorman@tuxdriver.com>
    Signed-off-by: default avatarRobert Love <robert.w.love@intel.com>
    7030fd62
fc_exch.c 68.4 KB