Linux SCSI subsystem development
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Wentao Liang" <vulab@iscas.ac.cn>
Cc: linux-scsi@vger.kernel.org
Subject: Re: [PATCH v2 3/3] scsi: lpfc: Return MBX status when a non-polled mbox cannot be issued
Date: Sat, 07 Nov 2026 16:33:58 +0000	[thread overview]
Message-ID: <sashiko-outbox-203061@kernel.org> (raw)
In-Reply-To: <20261107161655.2628796-3-vulab@iscas.ac.cn>

Thank you for your contribution! Sashiko AI review found 2 potential
issues to consider:
- [High] scsi: lpfc: wrong MBX status in lpfc_sli_issue_mbox_s4() for
  MBX_NOWAIT
- [Low] scsi: lpfc: missing Fixes trailer for commit da0436e915a5
--

commit f038148a081f8cf95b1d6a94df61cce938e8192e
Author: Wentao Liang <vulab@iscas.ac.cn>

> scsi: lpfc: Return MBX status when a non-polled mbox cannot be issued
>
> lpfc_sli_issue_mbox_s4() reports a failure to hand a command to the port
> with an MBX status code in every path except one: when interrupts are not
> enabled and the caller asked for MBX_NOWAIT, it returns -EIO.  A negative
> errno does not belong in that code space, and a caller has no MBX value to
> test for this outcome.
>
> Return MBXERR_ERROR, as lpfc_sli4_post_sync_mbox() already does for a
> command it cannot post.  lpfc_issue_lip() maps MBXERR_ERROR to -EIO, and
> the bsg mailbox path now converts a failure of its own, so no positive
> status is handed to a caller that expects an errno.
>
> Signed-off-by: Wentao Liang <vulab@iscas.ac.cn>

[Severity: Low]
This fixes the -EIO return value introduced with SLI-4 mailbox support.
Should it include a Fixes tag?

  Fixes: da0436e915a5 ("[SCSI] lpfc 8.3.2 : Addition of SLI4 Interface - Base Support")

> diff --git a/drivers/scsi/lpfc/lpfc_sli.c b/drivers/scsi/lpfc/lpfc_sli.c
> index 715b328d3d184..05a76b00702a8 100644
> --- a/drivers/scsi/lpfc/lpfc_sli.c
> +++ b/drivers/scsi/lpfc/lpfc_sli.c
> @@ -10121,7 +10121,7 @@ lpfc_sli_issue_mbox_s4(struct lpfc_hba *phba, LPFC_MBOXQ_t *mboxq,
>  		if (flag == MBX_POLL)
>  			rc = lpfc_sli4_post_sync_mbox(phba, mboxq);
>  		else
> -			rc = -EIO;
> +			rc = MBXERR_ERROR;
>  		if (rc != MBX_SUCCESS)
>  			lpfc_printf_log(phba, KERN_WARNING, LOG_MBOX | LOG_SLI,
>  					"(%d):2541 Mailbox command x%x "

[Severity: High]
Should this return MBX_NOT_FINISHED instead of MBXERR_ERROR when an
MBX_NOWAIT command cannot be issued?

All other pre-enqueue failure paths for asynchronous commands in
lpfc_sli_issue_mbox_s4() (and the equivalent interrupt-disabled check in
lpfc_sli_issue_mbox_s3()) return MBX_NOT_FINISHED, whereas MBXERR_ERROR is
used for synchronous MBX_POLL commands in lpfc_sli4_post_sync_mbox().
Callers of lpfc_sli_issue_mbox() with MBX_NOWAIT check specifically for
MBX_NOT_FINISHED to detect that the command was not queued:

drivers/scsi/lpfc/lpfc_sli.c:lpfc_sli4_resume_rpi() {
	...
	rc = lpfc_sli_issue_mbox(phba, mboxq, MBX_NOWAIT);
	if (rc == MBX_NOT_FINISHED) {
		...
		lpfc_nlp_put(ndlp);
		mempool_free(mboxq, phba->mbox_mem_pool);
		return -EIO;
	}
	return 0;
}

When interrupts are disabled (for example after lpfc_stop_port_s4()) and
MBXERR_ERROR is returned, callers treat the unqueued command as accepted.
Because its completion handler never runs, mboxq, DMA buffers, and ndlp
references are leaked, and callers such as lpfc_get_sfp_info_wait() via
sysfs lpfc_xcvr_data treat the unposted zeroed mailbox as having succeeded.

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20261107161655.2628796-1-vulab@iscas.ac.cn?part=3

      reply	other threads:[~2026-11-07 16:33 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-17 14:47 [PATCH] scsi: lpfc: Fix ndlp reference leak in lpfc_release_rpi() Wentao Liang
2026-09-17 19:35 ` Paul Ely
2026-10-06 21:21   ` Paul Ely
2026-11-07 15:17     ` Wentao Liang
2026-11-07 16:16     ` [PATCH v2 1/3] " Wentao Liang
2026-11-07 16:16       ` [PATCH v2 2/3] scsi: lpfc: Report bsg mailbox failures as an errno Wentao Liang
2026-11-07 16:25         ` sashiko-bot
2026-11-07 16:16       ` [PATCH v2 3/3] scsi: lpfc: Return MBX status when a non-polled mbox cannot be issued Wentao Liang
2026-11-07 16:33         ` sashiko-bot [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=sashiko-outbox-203061@kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=sashiko-reviews@lists.linux.dev \
    --cc=vulab@iscas.ac.cn \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox