Re: [PATCH] usb: dwc2: remove useless check of !chan
From: Greg Kroah-Hartman
Date: Tue May 19 2026 - 05:34:34 EST
On Tue, May 19, 2026 at 02:00:01PM +0800, Jisheng Zhang wrote:
> It looks a bit strange we check !chan after dereference of this pointer
> with "if (chan->ep_type != USB_ENDPOINT_XFER_CONTROL)".
>
> In fact, when entering the dwc2_hcd_save_data_toggle(), the chan won't
> be NULL, because its caller or indirect caller has ensured this,
> specifically, it's checked with below line in dwc2_hc_n_intr()
>
> if (!chan) {
> dev_err(hsotg->dev, "## hc_ptr_array for channel is NULL ##\n");
> return;
> }
>
> This addresses the following issue reported by klocwork tool:
> - Suspicious dereference of pointer 'chan' before NULL check at
> line 518
>
> Signed-off-by: Jisheng Zhang <jszhang@xxxxxxxxxx>
> ---
> drivers/usb/dwc2/hcd_intr.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/usb/dwc2/hcd_intr.c b/drivers/usb/dwc2/hcd_intr.c
> index 5c7538d498dd..397c63393c7f 100644
> --- a/drivers/usb/dwc2/hcd_intr.c
> +++ b/drivers/usb/dwc2/hcd_intr.c
> @@ -515,7 +515,7 @@ void dwc2_hcd_save_data_toggle(struct dwc2_hsotg *hsotg,
> u32 pid = (hctsiz & TSIZ_SC_MC_PID_MASK) >> TSIZ_SC_MC_PID_SHIFT;
>
> if (chan->ep_type != USB_ENDPOINT_XFER_CONTROL) {
> - if (WARN(!chan || !chan->qh,
> + if (WARN(!chan->qh,
> "chan->qh must be specified for non-control eps\n"))
> return;
Can this ever actually happen? If so, the machine just rebooted as
almost all devices with this hardware in it run with panic-on-warn
enabled. If not, can you fix this up to properly handle the error and
return correctly and not crash?
thanks,
greg k-h