]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/commitdiff
scsi: qla2xxx: Fix recursion while sending terminate exchange
authorhimanshu.madhani@cavium.com <himanshu.madhani@cavium.com>
Tue, 16 Jan 2018 04:46:47 +0000 (20:46 -0800)
committerThadeu Lima de Souza Cascardo <cascardo@canonical.com>
Thu, 15 Mar 2018 21:29:04 +0000 (18:29 -0300)
BugLink: http://bugs.launchpad.net/bugs/1756100
commit 3efc31f76dd7fc8a71cd86683909f637e9b7cadb upstream.

During error test case where switch port status is toggled from enable to
disable, following stack trace is seen which indicates recursion trying to
send terminate exchange.  This regression was introduced by commit
82de802ad46e ("scsi: qla2xxx: Preparation for Target MQ.")

BUG: stack guard page was hit at ffffb96488383ff8 (stack is ffffb96488384000..ffffb96488387fff)
BUG: stack guard page was hit at ffffb964886c3ff8 (stack is ffffb964886c4000..ffffb964886c7fff)
kernel stack overflow (double-fault): 0000 [#1] SMP
qlt_term_ctio_exchange+0x9c/0xb0 [qla2xxx]
qlt_term_ctio_exchange+0x9c/0xb0 [qla2xxx]
qlt_term_ctio_exchange+0x9c/0xb0 [qla2xxx]
qlt_term_ctio_exchange+0x9c/0xb0 [qla2xxx]
qlt_term_ctio_exchange+0x9c/0xb0 [qla2xxx]

Fixes: 82de802ad46e ("scsi: qla2xxx: Preparation for Target MQ.")
Cc: <stable@vger.kernel.org> #4.10
Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@canonical.com>
drivers/scsi/qla2xxx/qla_target.c

index 18069edd47732e5246bdb9ab7e109052c7bd2563..fefe3ef16748a959edf300895c57733d7900c006 100644 (file)
@@ -3708,7 +3708,7 @@ static int qlt_term_ctio_exchange(struct qla_qpair *qpair, void *ctio,
                term = 1;
 
        if (term)
-               qlt_term_ctio_exchange(qpair, ctio, cmd, status);
+               qlt_send_term_exchange(qpair, cmd, &cmd->atio, 1, 0);
 
        return term;
 }