]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blob - releases/4.15.10/scsi-qla2xxx-fix-recursion-while-sending-terminate-exchange.patch
Fix up backported ptrace patch
[thirdparty/kernel/stable-queue.git] / releases / 4.15.10 / scsi-qla2xxx-fix-recursion-while-sending-terminate-exchange.patch
1 From 3efc31f76dd7fc8a71cd86683909f637e9b7cadb Mon Sep 17 00:00:00 2001
2 From: "himanshu.madhani@cavium.com" <himanshu.madhani@cavium.com>
3 Date: Mon, 15 Jan 2018 20:46:47 -0800
4 Subject: scsi: qla2xxx: Fix recursion while sending terminate exchange
5
6 From: himanshu.madhani@cavium.com <himanshu.madhani@cavium.com>
7
8 commit 3efc31f76dd7fc8a71cd86683909f637e9b7cadb upstream.
9
10 During error test case where switch port status is toggled from enable to
11 disable, following stack trace is seen which indicates recursion trying to
12 send terminate exchange. This regression was introduced by commit
13 82de802ad46e ("scsi: qla2xxx: Preparation for Target MQ.")
14
15 BUG: stack guard page was hit at ffffb96488383ff8 (stack is ffffb96488384000..ffffb96488387fff)
16 BUG: stack guard page was hit at ffffb964886c3ff8 (stack is ffffb964886c4000..ffffb964886c7fff)
17 kernel stack overflow (double-fault): 0000 [#1] SMP
18 qlt_term_ctio_exchange+0x9c/0xb0 [qla2xxx]
19 qlt_term_ctio_exchange+0x9c/0xb0 [qla2xxx]
20 qlt_term_ctio_exchange+0x9c/0xb0 [qla2xxx]
21 qlt_term_ctio_exchange+0x9c/0xb0 [qla2xxx]
22 qlt_term_ctio_exchange+0x9c/0xb0 [qla2xxx]
23
24 Fixes: 82de802ad46e ("scsi: qla2xxx: Preparation for Target MQ.")
25 Cc: <stable@vger.kernel.org> #4.10
26 Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com>
27 Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
28 Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
29
30 ---
31 drivers/scsi/qla2xxx/qla_target.c | 2 +-
32 1 file changed, 1 insertion(+), 1 deletion(-)
33
34 --- a/drivers/scsi/qla2xxx/qla_target.c
35 +++ b/drivers/scsi/qla2xxx/qla_target.c
36 @@ -3708,7 +3708,7 @@ static int qlt_term_ctio_exchange(struct
37 term = 1;
38
39 if (term)
40 - qlt_term_ctio_exchange(qpair, ctio, cmd, status);
41 + qlt_send_term_exchange(qpair, cmd, &cmd->atio, 1, 0);
42
43 return term;
44 }