FAILED: patch "[PATCH] qla2xxx: Fix inadequate lock protection for ABTS." failed to apply to 4.10-stable tree
Subsystems (3)
[email protected]
maintainerThe patch below does not apply to the 4.10-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
Quoted 1 line
From
8f6fc8d4e7ae2347d6261d11a7eb2b247d2954d8Mon Sep 17 00:00:00 2001
From: Quinn Tran <[email protected]>
Date: Wed, 15 Mar 2017 09:48:46 -0700
Subject: [PATCH] qla2xxx: Fix inadequate lock protection for ABTS.
Normally, ABTS is sent to Target Core as Task MGMT command. In the case of error, qla2xxx needs to send response, hardware_lock is required to prevent request queue corruption.
drivers/scsi/qla2xxx/qla_target.c +10 -2
@@ -130,6 +130,9 @@ static void qlt_send_term_imm_notif(struct scsi_qla_host *vha,static struct fc_port *qlt_create_sess (struct scsi_qla_host *vha,fc_port_t *fcport,bool local);void qlt_unreg_sess (struct fc_port *sess); +static void qlt_24xx_handle_abts (struct scsi_qla_host *, +struct abts_recv_from_24xx *); +/* * Global Variables */
@@ -389,6 +392,8 @@ static bool qlt_24xx_atio_pkt_all_vps(struct scsi_qla_host *vha, (struct abts_recv_from_24xx *)atio;struct scsi_qla_host *host =qlt_find_host_by_vp_idx (vha, entry->vp_index); +unsigned long flags; +if (unlikely (!host)) {ql_dbg (ql_dbg_tgt, vha,0xffff , "qla_target(%d): Response pkt (ABTS_RECV_24XX) "
@@ -396,9 +401,12 @@ static bool qlt_24xx_atio_pkt_all_vps(struct scsi_qla_host *vha, vha->vp_idx, entry->vp_index);break ; } -qlt_response_pkt (host, (response_t *)atio); +if (!ha_locked) +spin_lock_irqsave (&host->hw->hardware_lock, flags); +qlt_24xx_handle_abts (host, (struct abts_recv_from_24xx *)atio); +if (!ha_locked) +spin_unlock_irqrestore (&host->hw->hardware_lock, flags);break ; - }/* case PUREX_IOCB_TYPE: ql2xmvasynctoatio */
Hi Quinn & Himanshu,
Quoted 8 lines · On Fri, 2017-03-24 at 08:51 +0100, [email protected] wrote:
The patch below does not apply to the 4.10-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.thanks,
greg k-h
This looks like a pretty somple backport to v4.10.y stable code.
Can someone send out an updated version to Greg-KH + stable team so it can be picked up for v4.10.y and earlier stable releases..?
Thank you,
Quoted 56 lines
------------------ original commit in Linus's tree ------------------
From
8f6fc8d4e7ae2347d6261d11a7eb2b247d2954d8Mon Sep 17 00:00:00 2001
From: Quinn Tran <[email protected]>
Date: Wed, 15 Mar 2017 09:48:46 -0700
Subject: [PATCH] qla2xxx: Fix inadequate lock protection for ABTS.Normally, ABTS is sent to Target Core as Task MGMT command. In the case of error, qla2xxx needs to send response,
hardware_lockis required to prevent request queue corruption.Cc <[email protected]>Signed-off-by Quinn Tran <[email protected]>Signed-off-by Himanshu Madhani <[email protected]>Signed-off-by Nicholas Bellinger <[email protected]>drivers/scsi/qla2xxx/qla_target.c +10
-2@@ -130,6 +130,9 @@ static void qlt_send_term_imm_notif(struct scsi_qla_host *vha,static struct fc_port *qlt_create_sess (struct scsi_qla_host *vha,fc_port_t *fcport,bool local);void qlt_unreg_sess (struct fc_port *sess); +static void qlt_24xx_handle_abts (struct scsi_qla_host *, +struct abts_recv_from_24xx *); +/* * Global Variables */ @@ -389,6 +392,8 @@ static bool qlt_24xx_atio_pkt_all_vps(struct scsi_qla_host *vha, (struct abts_recv_from_24xx *)atio;struct scsi_qla_host *host =qlt_find_host_by_vp_idx (vha, entry->vp_index); +unsigned long flags; +if (unlikely (!host)) {ql_dbg (ql_dbg_tgt, vha,0xffff , "qla_target(%d): Response pkt (ABTS_RECV_24XX) "@@ -396,9 +401,12 @@ static bool qlt_24xx_atio_pkt_all_vps(struct scsi_qla_host *vha, vha->vp_idx, entry->vp_index);break ; } -qlt_response_pkt (host, (response_t *)atio); +if (!ha_locked) +spin_lock_irqsave (&host->hw->hardware_lock, flags); +qlt_24xx_handle_abts (host, (struct abts_recv_from_24xx *)atio); +if (!ha_locked) +spin_unlock_irqrestore (&host->hw->hardware_lock, flags);break ; - }/* case PUREX_IOCB_TYPE: ql2xmvasynctoatio */
Hi Nic,
Quoted 10 lines · Nicholas A. Bellinger
Hi Quinn & Himanshu,
Quoted 5 lines · On Fri, 2017-03-24 at 08:51 +0100, [email protected] wrote:
The patch below does not apply to the 4.10-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
Quoted 9 lines
Quoted 3 lines
thanks,
greg k-h
This looks like a pretty somple backport to v4.10.y stable code.
Can someone send out an updated version to Greg-KH + stable team so it can be picked up for v4.10.y and earlier stable releases..?
I had sent back port to Greg, but the patch which introduced issue
was not present in 4.10.x stable yet. So we do not need to back port this patch to stable.
Quoted 56 lines
Thank you,
Quoted 54 lines
------------------ original commit in Linus's tree ------------------
From
8f6fc8d4e7ae2347d6261d11a7eb2b247d2954d8Mon Sep 17 00:00:00 2001
From: Quinn Tran <[email protected]>
Date: Wed, 15 Mar 2017 09:48:46 -0700
Subject: [PATCH] qla2xxx: Fix inadequate lock protection for ABTS.Normally, ABTS is sent to Target Core as Task MGMT command. In the case of error, qla2xxx needs to send response,
hardware_lockis required to prevent request queue corruption.Cc <[email protected]>Signed-off-by Quinn Tran <[email protected]>Signed-off-by Himanshu Madhani <[email protected]>Signed-off-by Nicholas Bellinger <[email protected]>drivers/scsi/qla2xxx/qla_target.c +10
-2@@ -130,6 +130,9 @@ static void qlt_send_term_imm_notif(struct scsi_qla_host *vha,static struct fc_port *qlt_create_sess (struct scsi_qla_host *vha,fc_port_t *fcport,bool local);void qlt_unreg_sess (struct fc_port *sess); +static void qlt_24xx_handle_abts (struct scsi_qla_host *, +struct abts_recv_from_24xx *); +/* * Global Variables */ @@ -389,6 +392,8 @@ static bool qlt_24xx_atio_pkt_all_vps(struct scsi_qla_host *vha, (struct abts_recv_from_24xx *)atio;struct scsi_qla_host *host =qlt_find_host_by_vp_idx (vha, entry->vp_index); +unsigned long flags; +if (unlikely (!host)) {ql_dbg (ql_dbg_tgt, vha,0xffff , "qla_target(%d): Response pkt (ABTS_RECV_24XX) "@@ -396,9 +401,12 @@ static bool qlt_24xx_atio_pkt_all_vps(struct scsi_qla_host *vha, vha->vp_idx, entry->vp_index);break ; } -qlt_response_pkt (host, (response_t *)atio); +if (!ha_locked) +spin_lock_irqsave (&host->hw->hardware_lock, flags); +qlt_24xx_handle_abts (host, (struct abts_recv_from_24xx *)atio); +if (!ha_locked) +spin_unlock_irqrestore (&host->hw->hardware_lock, flags);break ; - }
Quoted 4 lines
drivers/scsi/qla2xxx/qla_target.c static bool qlt_24xx_atio_pkt_all_vps(struct scsi_qla_host *vha, · line 412
Quoted 2 lines
drivers/scsi/qla2xxx/qla_target.c +0
-0/* case PUREX_IOCB_TYPE: ql2xmvasynctoatio */
Thanks,
- Himanshu
Quoted 22 lines · Himanshu
Hi Nic,
Quoted 10 lines · Nicholas A. Bellinger
Hi Quinn & Himanshu,
Quoted 5 lines · On Fri, 2017-03-24 at 08:51 +0100, [email protected] wrote:
The patch below does not apply to the 4.10-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.Quoted 9 lines
Quoted 3 lines
thanks,
greg k-h
This looks like a pretty somple backport to v4.10.y stable code.
Can someone send out an updated version to Greg-KH + stable team so it can be picked up for v4.10.y and earlier stable releases..?
Quoted 5 lines
I had sent back port to Greg, but the patch which introduced issue
was not present in 4.10.x stable yet. So we do not need to back port this patch to stable.
Thanks for clarifying, I was just double-checking.