| From 3efc31f76dd7fc8a71cd86683909f637e9b7cadb Mon Sep 17 00:00:00 2001 |
| From: "himanshu.madhani@cavium.com" <himanshu.madhani@cavium.com> |
| Date: Mon, 15 Jan 2018 20:46:47 -0800 |
| Subject: scsi: qla2xxx: Fix recursion while sending terminate exchange |
| |
| From: himanshu.madhani@cavium.com <himanshu.madhani@cavium.com> |
| |
| 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> |
| |
| --- |
| drivers/scsi/qla2xxx/qla_target.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/drivers/scsi/qla2xxx/qla_target.c |
| +++ b/drivers/scsi/qla2xxx/qla_target.c |
| @@ -3711,7 +3711,7 @@ static int qlt_term_ctio_exchange(struct |
| term = 1; |
| |
| if (term) |
| - qlt_term_ctio_exchange(qpair, ctio, cmd, status); |
| + qlt_send_term_exchange(qpair, cmd, &cmd->atio, 1, 0); |
| |
| return term; |
| } |