Re: [PATCH 1/2] usb: chipidea: move malloced regmap directly into struct hw_bank

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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 <mkl@xxxxxxxxxxxxxx>
> >> ---
> >>  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 majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux