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

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

 



Hi,

Roger Quadros <rogerq@xxxxxx> writes:
> On 06/04/17 13:45, Felipe Balbi wrote:
>> 
>> Hi,
>> 
>> Sergei Shtylyov <sergei.shtylyov@xxxxxxxxxxxxxxxxxx> writes:
>>> Hello.
>>>
>>> On 4/6/2017 1:17 PM, 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
>>>
>>>     "Seen" and "failing".
>>>
>>>> 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.
>>>>
>>>>  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
>>> [...]
>>>> @@ -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))
>>>
>>>     Why do we need double parens?
>> 
>> I don't know (i.e. don't wanna care) how BIT() is implemented. But I
>> still want to be able to:
>> 
>> DWC3_DALEPENA_EP(dwc->num_eps - (dep->epnum >> 1) + whatever_number_I_want);
>> 
>
> Caller needs to assume that macro is sane so I'd avoid the double parens.
>
> fyi.
> #define BIT(nr)                 (1UL << (nr))

fair enough, fixed on 'next' and 'testing/next'

-- 
balbi
--
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