Re: [PATCH] usb: dwc3: make macros safe to expression arguments

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

 



+Bryan

On 06/04/17 13:17, Felipe Balbi wrote:
> From: Roger Quadros <rogerq@xxxxxx>
> 
> We must make sure that our macros are safe against expressions passed
> as arguments. We have see one problem where GTXFIFOSIZ(n) was failling
> when passed the expression (epnum >> 1) as argument. The problem was
> caused by operator precedence between >> and *.
> 
> To make sure macros are safe, we just wrap argument with () when using
> it.
> 
> Signed-off-by: Roger Quadros <rogerq@xxxxxx>
> Signed-off-by: Felipe Balbi <felipe.balbi@xxxxxxxxxxxxxxx>
> ---
> 
> As discussed over IRC, Roger figured out what was the problem
> with "Bryan's patch". It turns out that GTXFIFOSIZ() macro wasn't
> safe against expression arguments.
> 
> Roger provided a patch, which I'm now sending to linux-usb in his
> regard.

Thanks Felipe.

cheers,
-roger
> 
>  drivers/usb/dwc3/core.h | 26 +++++++++++++-------------
>  1 file changed, 13 insertions(+), 13 deletions(-)
> 
> diff --git a/drivers/usb/dwc3/core.h b/drivers/usb/dwc3/core.h
> index 459ecf3afa48..8a0fbcd99638 100644
> --- a/drivers/usb/dwc3/core.h
> +++ b/drivers/usb/dwc3/core.h
> @@ -117,20 +117,20 @@
>  #define DWC3_VER_NUMBER		0xc1a0
>  #define DWC3_VER_TYPE		0xc1a4
>  
> -#define DWC3_GUSB2PHYCFG(n)	(0xc200 + (n * 0x04))
> -#define DWC3_GUSB2I2CCTL(n)	(0xc240 + (n * 0x04))
> +#define DWC3_GUSB2PHYCFG(n)	(0xc200 + ((n) * 0x04))
> +#define DWC3_GUSB2I2CCTL(n)	(0xc240 + ((n) * 0x04))
>  
> -#define DWC3_GUSB2PHYACC(n)	(0xc280 + (n * 0x04))
> +#define DWC3_GUSB2PHYACC(n)	(0xc280 + ((n) * 0x04))
>  
> -#define DWC3_GUSB3PIPECTL(n)	(0xc2c0 + (n * 0x04))
> +#define DWC3_GUSB3PIPECTL(n)	(0xc2c0 + ((n) * 0x04))
>  
> -#define DWC3_GTXFIFOSIZ(n)	(0xc300 + (n * 0x04))
> -#define DWC3_GRXFIFOSIZ(n)	(0xc380 + (n * 0x04))
> +#define DWC3_GTXFIFOSIZ(n)	(0xc300 + ((n) * 0x04))
> +#define DWC3_GRXFIFOSIZ(n)	(0xc380 + ((n) * 0x04))
>  
> -#define DWC3_GEVNTADRLO(n)	(0xc400 + (n * 0x10))
> -#define DWC3_GEVNTADRHI(n)	(0xc404 + (n * 0x10))
> -#define DWC3_GEVNTSIZ(n)	(0xc408 + (n * 0x10))
> -#define DWC3_GEVNTCOUNT(n)	(0xc40c + (n * 0x10))
> +#define DWC3_GEVNTADRLO(n)	(0xc400 + ((n) * 0x10))
> +#define DWC3_GEVNTADRHI(n)	(0xc404 + ((n) * 0x10))
> +#define DWC3_GEVNTSIZ(n)	(0xc408 + ((n) * 0x10))
> +#define DWC3_GEVNTCOUNT(n)	(0xc40c + ((n) * 0x10))
>  
>  #define DWC3_GHWPARAMS8		0xc600
>  #define DWC3_GFLADJ		0xc630
> @@ -144,13 +144,13 @@
>  #define DWC3_DGCMD		0xc714
>  #define DWC3_DALEPENA		0xc720
>  
> -#define DWC3_DEP_BASE(n)	(0xc800 + (n * 0x10))
> +#define DWC3_DEP_BASE(n)	(0xc800 + ((n) * 0x10))
>  #define DWC3_DEPCMDPAR2		0x00
>  #define DWC3_DEPCMDPAR1		0x04
>  #define DWC3_DEPCMDPAR0		0x08
>  #define DWC3_DEPCMD		0x0c
>  
> -#define DWC3_DEV_IMOD(n)	(0xca00 + (n * 0x4))
> +#define DWC3_DEV_IMOD(n)	(0xca00 + ((n) * 0x4))
>  
>  /* OTG Registers */
>  #define DWC3_OCFG		0xcc00
> @@ -460,7 +460,7 @@
>  #define DWC3_DEPCMD_CMD(x)		((x) & 0xf)
>  
>  /* The EP number goes 0..31 so ep0 is always out and ep1 is always in */
> -#define DWC3_DALEPENA_EP(n)		BIT(n)
> +#define DWC3_DALEPENA_EP(n)		BIT((n))
>  
>  #define DWC3_DEPCMD_TYPE_CONTROL	0
>  #define DWC3_DEPCMD_TYPE_ISOC		1
> 
--
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