All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg KH <gregkh@linuxfoundation.org>
To: Xu Yang <xu.yang_2@nxp.com>
Cc: peter.chen@kernel.org, linux-usb@vger.kernel.org,
	imx@lists.linux.dev, jun.li@nxp.com
Subject: Re: [PATCH] usb: chipidea: host: Improve port index sanitizing
Date: Mon, 2 Dec 2024 07:32:52 +0100	[thread overview]
Message-ID: <2024120211-scruffy-query-1a50@gregkh> (raw)
In-Reply-To: <20241202023311.2q6bmef7wykymbno@hippo>

On Mon, Dec 02, 2024 at 10:33:11AM +0800, Xu Yang wrote:
> On Fri, Nov 29, 2024 at 01:14:35PM +0100, Greg KH wrote:
> > On Fri, Nov 29, 2024 at 07:33:18PM +0800, Xu Yang wrote:
> > > Coverity complains "Illegal address computation (OVERRUN)" on status_reg.
> > > This will follow "846cbf98cbef USB: EHCI: Improve port index sanitizing" to
> > > improve port index sanitizing.
> > > 
> > > Signed-off-by: Xu Yang <xu.yang_2@nxp.com>
> > > ---
> > >  drivers/usb/chipidea/host.c | 10 ++++++++--
> > >  1 file changed, 8 insertions(+), 2 deletions(-)
> > > 
> > > diff --git a/drivers/usb/chipidea/host.c b/drivers/usb/chipidea/host.c
> > > index 0cce19208370..442d79e32a65 100644
> > > --- a/drivers/usb/chipidea/host.c
> > > +++ b/drivers/usb/chipidea/host.c
> > > @@ -256,8 +256,14 @@ static int ci_ehci_hub_control(
> > >  	struct device *dev = hcd->self.controller;
> > >  	struct ci_hdrc *ci = dev_get_drvdata(dev);
> > >  
> > > -	port_index = wIndex & 0xff;
> > > -	port_index -= (port_index > 0);
> > > +	/*
> > > +	 * Avoid out-of-bounds values while calculating the port index
> > > +	 * from wIndex. The compiler doesn't like pointers to invalid
> > > +	 * addresses, even if they are never used.
> > 
> > The compiler does not care so what does care?  Why is this needed if it
> > is never accessed?  This comment is odd to me.
> 
> I refer to Alan's comments[1]. So the compiler may report this issue on his
> side. On my side, the static analysis tool is Coverity from Synopsys. It's
> reporting that port_index may be bigger than HCS_N_PORTS_MAX(15). So
> illegal array pointer may be caculated. 
> 
> [1] https://lore.kernel.org/r/20211002190217.GA537967@rowland.harvard.edu
> 
> > 
> > thanks,
> > 
> > greg k-h
> > 
> > 
> > > +	 */
> > > +	port_index = (wIndex - 1) & 0xff;
> > > +	if (port_index >= HCS_N_PORTS_MAX)
> > > +		port_index = 0;
> > >  	status_reg = &ehci->regs->port_status[port_index];
> > 
> > So this is used?  But what controls wIndex here and how can it be too
> > big?
> 
> The wIndex stands for port number here. Actually wIndex won't be too big.
> However, the static analysis tool just see:
> 
>   port_index = wIndex & 0xff;
>   port_index -= (port_index > 0);
> 
> and it think the value of port_index is now between 0 and 254 (inclusive).
> 
> ehci_def.h define port_status as below:
> 
>   #define HCS_N_PORTS_MAX         15
>   u32     port_status[HCS_N_PORTS_MAX];
> 
> So the tool think illegal array pointer may be obtained.
> 
>   status_reg = &ehci->regs->port_status[port_index];

Many times, static analysis tools are just wrong :)

But ok, this makes a bit more sense, can you resend this with the
additional information in the changelog text?

thanks,

greg k-h

      reply	other threads:[~2024-12-02  6:32 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-11-29 11:33 [PATCH] usb: chipidea: host: Improve port index sanitizing Xu Yang
2024-11-29 12:14 ` Greg KH
2024-12-02  2:33   ` Xu Yang
2024-12-02  6:32     ` Greg KH [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=2024120211-scruffy-query-1a50@gregkh \
    --to=gregkh@linuxfoundation.org \
    --cc=imx@lists.linux.dev \
    --cc=jun.li@nxp.com \
    --cc=linux-usb@vger.kernel.org \
    --cc=peter.chen@kernel.org \
    --cc=xu.yang_2@nxp.com \
    /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.