Hello,

On Fri, Dec 06, 2013 at 10:21:58AM +0100, Marc Kleine-Budde wrote:
> On 12/06/2013 07:45 AM, Peter Chen wrote:
> > On Thu, Dec 05, 2013 at 12:32:56PM +0100, Marc Kleine-Budde wrote:
> >> Without this patch a seperate chunk of memory is allocated for the regmap
> >> array. As the regmap is always used it makes no sense to allocate a 
> >> seperate
> >> memory block for it, this patch moves the regmap array directly into the 
> >> struct
> >> hw_bank.
> >>
> >> Signed-off-by: Marc Kleine-Budde <m...@pengutronix.de>
> >> ---
> >>  drivers/usb/chipidea/ci.h   | 66 
> >> ++++++++++++++++++++++-----------------------
> >>  drivers/usb/chipidea/core.c |  8 ------
> >>  2 files changed, 33 insertions(+), 41 deletions(-)
> >>
> >> diff --git a/drivers/usb/chipidea/ci.h b/drivers/usb/chipidea/ci.h
> >> index 1c94fc5..ef99d91 100644
> >> --- a/drivers/usb/chipidea/ci.h
> >> +++ b/drivers/usb/chipidea/ci.h
> >> @@ -26,6 +26,38 @@
> >>  #define ENDPT_MAX          32
> >>  
> >>  
> >> /******************************************************************************
> >> + * REGISTERS
> >> + 
> >> *****************************************************************************/
> >> +/* register size */
> >> +#define REG_BITS   (32)
> >> +
> >> +/* register indices */
> >> +enum ci_hw_regs {
> >> +  CAP_CAPLENGTH,
> >> +  CAP_HCCPARAMS,
> >> +  CAP_DCCPARAMS,
> >> +  CAP_TESTMODE,
> >> +  CAP_LAST = CAP_TESTMODE,
> >> +  OP_USBCMD,
> >> +  OP_USBSTS,
> >> +  OP_USBINTR,
> >> +  OP_DEVICEADDR,
> >> +  OP_ENDPTLISTADDR,
> >> +  OP_PORTSC,
> >> +  OP_DEVLC,
> >> +  OP_OTGSC,
> >> +  OP_USBMODE,
> >> +  OP_ENDPTSETUPSTAT,
> >> +  OP_ENDPTPRIME,
> >> +  OP_ENDPTFLUSH,
> >> +  OP_ENDPTSTAT,
> >> +  OP_ENDPTCOMPLETE,
> >> +  OP_ENDPTCTRL,
> >> +  /* endptctrl1..15 follow */
> >> +  OP_LAST = OP_ENDPTCTRL + ENDPT_MAX / 2,
> >> +};
> >> +
> >> +/******************************************************************************
> >>   * STRUCTURES
> >>   
> >> *****************************************************************************/
> >>  /**
> >> @@ -98,7 +130,7 @@ struct hw_bank {
> >>    void __iomem    *cap;
> >>    void __iomem    *op;
> >>    size_t          size;
> >> -  void __iomem    **regmap;
> >> +  void __iomem    *regmap[OP_LAST];
> > 
> > OP_LAST + 1?
> 
> Yes. Why didn't the compiler detect the out of bounds access of the array?
I cannot find it in my C book, but IIRC for an array

        sometype name[20];

in some contexts 20 is an allowed subscript (e.g. for &name[20]). Maybe
that's why gcc doesn't warn. But in general don't consider you program
to be OK just because you don't get a gcc warning :-)

Best regards
Uwe

-- 
Pengutronix e.K.                           | Uwe Kleine-König            |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to