All of lore.kernel.org
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Laurence Oberman" <loberman@redhat.com>
Cc: linux-scsi@vger.kernel.org, linux-hyperv@vger.kernel.org
Subject: Re: [PATCH] scsi: storvsc: Support manual scans for all Hyper-V targets
Date: Thu, 23 Jul 2026 15:30:54 +0000	[thread overview]
Message-ID: <20260723153101.13F911F00A3A@smtp.kernel.org> (raw)
In-Reply-To: <20260723151458.872265-1-loberman@redhat.com>

Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:

New issues:
- [Low] The patch calls the unexported internal midlayer function `scsi_scan_host_selected()` and includes the private header `"scsi_priv.h"` from a hardware driver, which will break module builds.

Pre-existing issues:
- [High] Timeouts on targets scanned without an `fc_rport` parent will cause a NULL pointer dereference in the FC transport error handler.
--

--- Patch [1]: [PATCH] scsi: storvsc: Support manual scans for all Hyper-V targets ---
commit ce267d7e85b7a51757a8afe1188939d3c5146d27
Author: Laurence Oberman <loberman@redhat.com>

scsi: storvsc: Support manual scans for all Hyper-V targets

This patch provides a storvsc-specific user_scan callback that directly
invokes scsi_scan_host_selected(). This bypasses the single-rport lookup
in fc_user_scan() to allow userspace to explicitly scan any target
supported by storvsc. The goal is to avoid requiring storvsc to create
and manage synthetic fc_rports for every Hyper-V target.

> diff --git a/drivers/scsi/storvsc_drv.c b/drivers/scsi/storvsc_drv.c
> index f03dc03a42c35..eb40473a8aad6 100644
> --- a/drivers/scsi/storvsc_drv.c
> +++ b/drivers/scsi/storvsc_drv.c
> @@ -43,6 +43,7 @@
>  #include <scsi/scsi_dbg.h>
>  #include <scsi/scsi_transport_fc.h>
>  #include <scsi/scsi_transport.h>
> +#include "scsi_priv.h"

[Severity: Low]
Will this cause an architectural layering violation? Including a private
midlayer header like scsi_priv.h from a low-level hardware driver normally
breaks subsystem encapsulation.

[ ... ]

> @@ -550,6 +551,17 @@ static void storvsc_host_scan(struct work_struct *work)
>  	scsi_scan_host(host);
>  }
>  
> +#if IS_ENABLED(CONFIG_SCSI_FC_ATTRS)
> +static int storvsc_user_scan(struct Scsi_Host *host,
> +			     unsigned int channel,
> +			     unsigned int id,
> +			     u64 lun)
> +{
> +	return scsi_scan_host_selected(host, channel, id, lun,
> +				       SCSI_SCAN_MANUAL);
> +}

[Severity: Low]
Does this cause a module build failure during the modpost link stage?

The function scsi_scan_host_selected() in drivers/scsi/scsi_scan.c lacks an
EXPORT_SYMBOL directive. If the kernel is configured to build storvsc as a
module (CONFIG_HYPERV_STORAGE=m), it seems it will fail to link.

[Severity: High]
This is a pre-existing issue, but does creating a topology without an
fc_rport parent lead to a NULL pointer dereference during error handling?

If a SCSI command times out on a target scanned directly under the SCSI host
(which this manual scan facilitates), storvsc_eh_timed_out() delegates to
the FC transport's fc_eh_timed_out(). Because the target was scanned under
the host device instead of an fc_rport, starget_to_rport() evaluates to NULL.

This NULL pointer is then unconditionally dereferenced in
drivers/scsi/scsi_transport_fc.c:fc_eh_timed_out():

fc_eh_timed_out()
{
    ...
    struct fc_rport *rport = starget_to_rport(scsi_target(scmd->device));

    if (rport->port_state == FC_PORTSTATE_BLOCKED)
    ...
}

Can timeouts under hardware or network load on these targets trigger a
kernel panic?

> +#endif
> +

[ ... ]

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260723151458.872265-1-loberman@redhat.com?part=1

  reply	other threads:[~2026-07-23 15:31 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-23 15:14 [PATCH] scsi: storvsc: Support manual scans for all Hyper-V targets Laurence Oberman
2026-07-23 15:30 ` sashiko-bot [this message]
2026-07-23 15:43   ` Laurence Oberman
2026-08-03 12:45 ` kernel test robot
2026-08-04 15:37   ` Laurence Oberman

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=20260723153101.13F911F00A3A@smtp.kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=linux-hyperv@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=loberman@redhat.com \
    --cc=sashiko-reviews@lists.linux.dev \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.