diff mbox series

scsi: qla2xxx: Prevent PRLI in target mode

Message ID 20210422153414.4022-1-a.kovaleva@yadro.com (mailing list archive)
State Accepted
Headers show
Series scsi: qla2xxx: Prevent PRLI in target mode | expand

Commit Message

Anastasia Kovaleva April 22, 2021, 3:34 p.m. UTC
In a case when the initiator in P2P mode by some circumstances do not
send PRLI, the target, in a case when the target port’s WWPN is less
than initiator’s one, changes the discovery state in DSC_GNL, and when
gnl completes, it sends PRLI to the initiator.

Usually the initiator in P2P mode always sends PRLI. We catch this issue
on Linux stable v5.4.6 https://www.spinics.net/lists/stable/msg458515.html

The change fixes this particular corner case in the behaviour of the
P2P mod target login state machine.

Fixes: a9ed06d4e640a ("scsi: qla2xxx: Allow PLOGI in target mode")
Signed-off-by: Anastasia Kovaleva <a.kovaleva@yadro.com>
Reviewed-by: Roman Bolshakov <r.bolshakov@yadro.com>
---
 drivers/scsi/qla2xxx/qla_init.c | 3 +++
 1 file changed, 3 insertions(+)

Comments

Himanshu Madhani April 22, 2021, 5:06 p.m. UTC | #1
> On Apr 22, 2021, at 10:34 AM, Anastasia Kovaleva <a.kovaleva@yadro.com> wrote:
> 
> In a case when the initiator in P2P mode by some circumstances do not
> send PRLI, the target, in a case when the target port’s WWPN is less
> than initiator’s one, changes the discovery state in DSC_GNL, and when
> gnl completes, it sends PRLI to the initiator.
> 
> Usually the initiator in P2P mode always sends PRLI. We catch this issue
> on Linux stable v5.4.6 https://www.spinics.net/lists/stable/msg458515.html
> 
> The change fixes this particular corner case in the behaviour of the
> P2P mod target login state machine.
> 
> Fixes: a9ed06d4e640a ("scsi: qla2xxx: Allow PLOGI in target mode")
> Signed-off-by: Anastasia Kovaleva <a.kovaleva@yadro.com>
> Reviewed-by: Roman Bolshakov <r.bolshakov@yadro.com>
> ---
> drivers/scsi/qla2xxx/qla_init.c | 3 +++
> 1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c
> index f01f07116bd3..71f79c988fdc 100644
> --- a/drivers/scsi/qla2xxx/qla_init.c
> +++ b/drivers/scsi/qla2xxx/qla_init.c
> @@ -1194,6 +1194,9 @@ static int qla24xx_post_prli_work(struct scsi_qla_host *vha, fc_port_t *fcport)
> {
> 	struct qla_work_evt *e;
> 
> +	if (vha->host->active_mode == MODE_TARGET)
> +                return QLA_FUNCTION_FAILED;
> +
> 	e = qla2x00_alloc_work(vha, QLA_EVT_PRLI);
> 	if (!e)
> 		return QLA_FUNCTION_FAILED;
> -- 
> 2.30.2
> 

Looks Good. 

Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>

--
Himanshu Madhani	 Oracle Linux Engineering
Martin K. Petersen April 29, 2021, 3:18 a.m. UTC | #2
On Thu, 22 Apr 2021 18:34:14 +0300, Anastasia Kovaleva wrote:

> In a case when the initiator in P2P mode by some circumstances do not
> send PRLI, the target, in a case when the target port’s WWPN is less
> than initiator’s one, changes the discovery state in DSC_GNL, and when
> gnl completes, it sends PRLI to the initiator.
> 
> Usually the initiator in P2P mode always sends PRLI. We catch this issue
> on Linux stable v5.4.6 https://www.spinics.net/lists/stable/msg458515.html
> 
> [...]

Applied to 5.13/scsi-fixes, thanks!

[1/1] scsi: qla2xxx: Prevent PRLI in target mode
      https://git.kernel.org/mkp/scsi/c/fcb16d9a8ecf
diff mbox series

Patch

diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c
index f01f07116bd3..71f79c988fdc 100644
--- a/drivers/scsi/qla2xxx/qla_init.c
+++ b/drivers/scsi/qla2xxx/qla_init.c
@@ -1194,6 +1194,9 @@  static int qla24xx_post_prli_work(struct scsi_qla_host *vha, fc_port_t *fcport)
 {
 	struct qla_work_evt *e;
 
+	if (vha->host->active_mode == MODE_TARGET)
+                return QLA_FUNCTION_FAILED;
+
 	e = qla2x00_alloc_work(vha, QLA_EVT_PRLI);
 	if (!e)
 		return QLA_FUNCTION_FAILED;