All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4] USB: ehci_brcm_hub_control: improve port index sanitizing
@ 2021-11-13  4:57 Haimin Zhang
  2021-11-13  8:13 ` Greg KH
  2021-11-13 15:40 ` Alan Stern
  0 siblings, 2 replies; 4+ messages in thread
From: Haimin Zhang @ 2021-11-13  4:57 UTC (permalink / raw)
  To: gregkh, linux-usb; +Cc: Haimin Zhang, TCS Robot

Due to (wIndex & 0xff) - 1 can get an integer greater than 0xf, this
can cause array index to be out of bounds since the size of array
port_status is 0xf. This change prevents a possible out-of-bounds
pointer computation by forcing the use of a valid port number.

Reported-by: TCS Robot <tcs_robot@tencent.com>
Signed-off-by: Haimin Zhang <tcs.kernel@gmail.com>
---
 drivers/usb/host/ehci-brcm.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/usb/host/ehci-brcm.c b/drivers/usb/host/ehci-brcm.c
index d3626bfa966b..2e92918a14dd 100644
--- a/drivers/usb/host/ehci-brcm.c
+++ b/drivers/usb/host/ehci-brcm.c
@@ -62,8 +62,12 @@ static int ehci_brcm_hub_control(
 	u32 __iomem	*status_reg;
 	unsigned long flags;
 	int retval, irq_disabled = 0;
+	u32 temp;
 
-	status_reg = &ehci->regs->port_status[(wIndex & 0xff) - 1];
+	temp = (wIndex & 0xff) - 1;
+	if (temp >= HCS_N_PORTS_MAX)
+		temp = 0;
+	status_reg = &ehci->regs->port_status[temp];
 
 	/*
 	 * RESUME is cleared when GetPortStatus() is called 20ms after start
-- 
2.30.1 (Apple Git-130)


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH v4] USB: ehci_brcm_hub_control: improve port index sanitizing
  2021-11-13  4:57 [PATCH v4] USB: ehci_brcm_hub_control: improve port index sanitizing Haimin Zhang
@ 2021-11-13  8:13 ` Greg KH
  2021-11-13 15:40 ` Alan Stern
  1 sibling, 0 replies; 4+ messages in thread
From: Greg KH @ 2021-11-13  8:13 UTC (permalink / raw)
  To: Haimin Zhang; +Cc: linux-usb, TCS Robot

On Sat, Nov 13, 2021 at 12:57:14PM +0800, Haimin Zhang wrote:
> Due to (wIndex & 0xff) - 1 can get an integer greater than 0xf, this
> can cause array index to be out of bounds since the size of array
> port_status is 0xf. This change prevents a possible out-of-bounds
> pointer computation by forcing the use of a valid port number.
> 
> Reported-by: TCS Robot <tcs_robot@tencent.com>
> Signed-off-by: Haimin Zhang <tcs.kernel@gmail.com>
> ---
>  drivers/usb/host/ehci-brcm.c | 6 +++++-
>  1 file changed, 5 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/usb/host/ehci-brcm.c b/drivers/usb/host/ehci-brcm.c
> index d3626bfa966b..2e92918a14dd 100644
> --- a/drivers/usb/host/ehci-brcm.c
> +++ b/drivers/usb/host/ehci-brcm.c
> @@ -62,8 +62,12 @@ static int ehci_brcm_hub_control(
>  	u32 __iomem	*status_reg;
>  	unsigned long flags;
>  	int retval, irq_disabled = 0;
> +	u32 temp;
>  
> -	status_reg = &ehci->regs->port_status[(wIndex & 0xff) - 1];
> +	temp = (wIndex & 0xff) - 1;
> +	if (temp >= HCS_N_PORTS_MAX)
> +		temp = 0;
> +	status_reg = &ehci->regs->port_status[temp];
>  
>  	/*
>  	 * RESUME is cleared when GetPortStatus() is called 20ms after start
> -- 
> 2.30.1 (Apple Git-130)
> 

Hi,

This is the friendly patch-bot of Greg Kroah-Hartman.  You have sent him
a patch that has triggered this response.  He used to manually respond
to these common problems, but in order to save his sanity (he kept
writing the same thing over and over, yet to different people), I was
created.  Hopefully you will not take offence and will fix the problem
in your patch and resubmit it so that it can be accepted into the Linux
kernel tree.

You are receiving this message because of the following common error(s)
as indicated below:

- This looks like a new version of a previously submitted patch, but you
  did not list below the --- line any changes from the previous version.
  Please read the section entitled "The canonical patch format" in the
  kernel file, Documentation/SubmittingPatches for what needs to be done
  here to properly describe this.

If you wish to discuss this problem further, or you have questions about
how to resolve this issue, please feel free to respond to this email and
Greg will reply once he has dug out from the pending patches received
from other developers.

thanks,

greg k-h's patch email bot

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH v4] USB: ehci_brcm_hub_control: improve port index sanitizing
  2021-11-13  4:57 [PATCH v4] USB: ehci_brcm_hub_control: improve port index sanitizing Haimin Zhang
  2021-11-13  8:13 ` Greg KH
@ 2021-11-13 15:40 ` Alan Stern
       [not found]   ` <CAB2z9eybMuHKj64OJhjcUTMR5Or5kR_PgCqHb-KPCuYrvOZ3ow@mail.gmail.com>
  1 sibling, 1 reply; 4+ messages in thread
From: Alan Stern @ 2021-11-13 15:40 UTC (permalink / raw)
  To: Haimin Zhang; +Cc: gregkh, linux-usb, TCS Robot

On Sat, Nov 13, 2021 at 12:57:14PM +0800, Haimin Zhang wrote:
> Due to (wIndex & 0xff) - 1 can get an integer greater than 0xf, this
> can cause array index to be out of bounds since the size of array
> port_status is 0xf. This change prevents a possible out-of-bounds
> pointer computation by forcing the use of a valid port number.

I would write 15 instead of 0xf.  The size of the array is 15; see the 
definition of HCS_N_PORTS_MAX.  (Yes, I realize the 0xf is equal to 15, 
but why force people to go out of their way to translate a hex number 
into decimal?)

> 
> Reported-by: TCS Robot <tcs_robot@tencent.com>
> Signed-off-by: Haimin Zhang <tcs.kernel@gmail.com>
> ---

You did not include the version change information here.

>  drivers/usb/host/ehci-brcm.c | 6 +++++-
>  1 file changed, 5 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/usb/host/ehci-brcm.c b/drivers/usb/host/ehci-brcm.c
> index d3626bfa966b..2e92918a14dd 100644
> --- a/drivers/usb/host/ehci-brcm.c
> +++ b/drivers/usb/host/ehci-brcm.c
> @@ -62,8 +62,12 @@ static int ehci_brcm_hub_control(
>  	u32 __iomem	*status_reg;
>  	unsigned long flags;
>  	int retval, irq_disabled = 0;
> +	u32 temp;
>  
> -	status_reg = &ehci->regs->port_status[(wIndex & 0xff) - 1];
> +	temp = (wIndex & 0xff) - 1;
> +	if (temp >= HCS_N_PORTS_MAX)
> +		temp = 0;

There ought to be a comment explaining why you are doing this (namely, 
to avoid an "index out of bounds" warning).  The reason isn't 
automatically obvious.

Alan Stern

> +	status_reg = &ehci->regs->port_status[temp];
>  
>  	/*
>  	 * RESUME is cleared when GetPortStatus() is called 20ms after start
> -- 
> 2.30.1 (Apple Git-130)
> 

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH v5] USB: ehci_brcm_hub_control: Improve port index sanitizing
       [not found]   ` <CAB2z9eybMuHKj64OJhjcUTMR5Or5kR_PgCqHb-KPCuYrvOZ3ow@mail.gmail.com>
@ 2021-11-13 16:53     ` Alan Stern
  0 siblings, 0 replies; 4+ messages in thread
From: Alan Stern @ 2021-11-13 16:53 UTC (permalink / raw)
  To: Greg KH, zhang haiming; +Cc: USB mailing list

From: Haimin Zhang <tcs.kernel@gmail.com>

Due to (wIndex & 0xff) - 1 can get an integer greater than 15, this
can cause array index to be out of bounds since the size of array
port_status is 15. This change prevents a possible out-of-bounds
pointer computation by forcing the use of a valid port number.

Reported-by: TCS Robot <tcs_robot@tencent.com>
Signed-off-by: Haimin Zhang <tcs.kernel@gmail.com>
Signed-off-by: Alan Stern <stern@rowland.harvard.edu>

---

v5 (Alan Stern):	Changed 0xf in patch description to 15.  Added
			comment explaining why the port index is sanitized.

 drivers/usb/host/ehci-brcm.c |    6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

Index: usb-devel/drivers/usb/host/ehci-brcm.c
===================================================================
--- usb-devel.orig/drivers/usb/host/ehci-brcm.c
+++ usb-devel/drivers/usb/host/ehci-brcm.c
@@ -62,8 +62,12 @@ static int ehci_brcm_hub_control(
 	u32 __iomem	*status_reg;
 	unsigned long flags;
 	int retval, irq_disabled = 0;
+	u32 temp;
 
-	status_reg = &ehci->regs->port_status[(wIndex & 0xff) - 1];
+	temp = (wIndex & 0xff) - 1;
+	if (temp >= HCS_N_PORTS_MAX)	/* Avoid index-out-of-bounds warning */
+		temp = 0;
+	status_reg = &ehci->regs->port_status[temp];
 
 	/*
 	 * RESUME is cleared when GetPortStatus() is called 20ms after start

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2021-11-13 16:53 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-11-13  4:57 [PATCH v4] USB: ehci_brcm_hub_control: improve port index sanitizing Haimin Zhang
2021-11-13  8:13 ` Greg KH
2021-11-13 15:40 ` Alan Stern
     [not found]   ` <CAB2z9eybMuHKj64OJhjcUTMR5Or5kR_PgCqHb-KPCuYrvOZ3ow@mail.gmail.com>
2021-11-13 16:53     ` [PATCH v5] USB: ehci_brcm_hub_control: Improve " Alan Stern

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.