> On Apr 15, 2022, at 5:42 AM, Chesnokov Gleb <Chesnokov.G@xxxxxxxxxx> wrote: > > Aborting commands that have already been sent to the firmware can > cause BUG in qlt_free_cmd(): BUG_ON(cmd->sg_mapped) > > For instance: > - command passes rdx_to_xfer state, maps sgl, sends to the > fimware > - reset occurs, qla2xxx performs ISP error recovery, > aborts the command > - target stack calls qlt_abort_cmd() and then qlt_free_cmd() > - BUG_ON(cmd->sg_mapped) in qlt_free_cmd() occurs because sgl was not > unmapped > > Thus, unmap sgl in qlt_abort_cmd() for commands with the aborted flag > set. > Do you have a log showing this error sequence? Can you share more details? > Signed-off-by: Gleb Chesnokov <Chesnokov.G@xxxxxxxxxx> > --- > drivers/scsi/qla2xxx/qla_target.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/drivers/scsi/qla2xxx/qla_target.c b/drivers/scsi/qla2xxx/qla_target.c > index 2d30578aebcf..a02235a6a8e9 100644 > --- a/drivers/scsi/qla2xxx/qla_target.c > +++ b/drivers/scsi/qla2xxx/qla_target.c > @@ -3826,6 +3826,9 @@ int qlt_abort_cmd(struct qla_tgt_cmd *cmd) > > spin_lock_irqsave(&cmd->cmd_lock, flags); > if (cmd->aborted) { > + if (cmd->sg_mapped) > + qlt_unmap_sg(vha, cmd); > + > spin_unlock_irqrestore(&cmd->cmd_lock, flags); > /* > * It's normal to see 2 calls in this path: > -- > 2.35.1