Re: FAILED: patch "[PATCH] qla2xxx: Fix inadequate lock protection for ABTS." failed to apply to 4.10-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Quinn & Himanshu,

On Fri, 2017-03-24 at 08:51 +0100, gregkh@xxxxxxxxxxxxxxxxxxx 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 <stable@xxxxxxxxxxxxxxx>.
> 
> 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,

> 
> ------------------ original commit in Linus's tree ------------------
> 
> From 8f6fc8d4e7ae2347d6261d11a7eb2b247d2954d8 Mon Sep 17 00:00:00 2001
> From: Quinn Tran <quinn.tran@xxxxxxxxxx>
> 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.
> 
> Cc: <stable@xxxxxxxxxxxxxxx>
> Signed-off-by: Quinn Tran <quinn.tran@xxxxxxxxxx>
> Signed-off-by: Himanshu Madhani <himanshu.madhani@xxxxxxxxxx>
> Signed-off-by: Nicholas Bellinger <nab@xxxxxxxxxxxxxxx>
> 
> diff --git a/drivers/scsi/qla2xxx/qla_target.c b/drivers/scsi/qla2xxx/qla_target.c
> index a463bcc57902..a78c3e9bcb57 100644
> --- a/drivers/scsi/qla2xxx/qla_target.c
> +++ b/drivers/scsi/qla2xxx/qla_target.c
> @@ -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 */
> 





[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]