2022-07-11 15:25:08

by Andrey Strachuk

[permalink] [raw]
Subject: [PATCH] usb: cdns3: removed useless condition in cdns3_gadget_ep_dequeue()

Comparison of 'ep' with NULL is useless since
'ep' is a result of container_of and cannot be NULL
in any reasonable scenario.


Found by Linux Verification Center (linuxtesting.org) with SVACE.

Signed-off-by: Andrey Strachuk <[email protected]>
Fixes: 64b558f597d1 ("usb: cdns3: Change file names for cdns3 driver.")
---
drivers/usb/cdns3/cdns3-gadget.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/usb/cdns3/cdns3-gadget.c b/drivers/usb/cdns3/cdns3-gadget.c
index 5c15c48952a6..f31b389ae0b2 100644
--- a/drivers/usb/cdns3/cdns3-gadget.c
+++ b/drivers/usb/cdns3/cdns3-gadget.c
@@ -2608,7 +2608,7 @@ int cdns3_gadget_ep_dequeue(struct usb_ep *ep,
unsigned long flags;
int ret = 0;

- if (!ep || !request || !ep->desc)
+ if (!request || !ep->desc)
return -EINVAL;

spin_lock_irqsave(&priv_dev->lock, flags);
--
2.25.1


2022-07-14 14:54:30

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH] usb: cdns3: removed useless condition in cdns3_gadget_ep_dequeue()

On Mon, Jul 11, 2022 at 06:10:32PM +0300, Andrey Strachuk wrote:
> Comparison of 'ep' with NULL is useless since
> 'ep' is a result of container_of and cannot be NULL
> in any reasonable scenario.

ep is nto the result of container_of() in this driver, are you SURE this
is correct?

If so, please show the proper callstack where this is determined.

thanks,

greg k-h

2022-07-16 12:19:43

by Peter Chen

[permalink] [raw]
Subject: Re: [PATCH] usb: cdns3: removed useless condition in cdns3_gadget_ep_dequeue()

On 22-07-11 18:10:32, Andrey Strachuk wrote:
> Comparison of 'ep' with NULL is useless since
> 'ep' is a result of container_of and cannot be NULL
> in any reasonable scenario.
>

If ep is NULL, the container_of(NULL, struct cdns3_endpoint,
endpoint) will not cause panic, but later ep->desc will cause panic.
So we can't delete the NULL check for ep.

Peter

>
> Found by Linux Verification Center (linuxtesting.org) with SVACE.
>
> Signed-off-by: Andrey Strachuk <[email protected]>
> Fixes: 64b558f597d1 ("usb: cdns3: Change file names for cdns3 driver.")
> ---
> drivers/usb/cdns3/cdns3-gadget.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/usb/cdns3/cdns3-gadget.c b/drivers/usb/cdns3/cdns3-gadget.c
> index 5c15c48952a6..f31b389ae0b2 100644
> --- a/drivers/usb/cdns3/cdns3-gadget.c
> +++ b/drivers/usb/cdns3/cdns3-gadget.c
> @@ -2608,7 +2608,7 @@ int cdns3_gadget_ep_dequeue(struct usb_ep *ep,
> unsigned long flags;
> int ret = 0;
>
> - if (!ep || !request || !ep->desc)
> + if (!request || !ep->desc)
> return -EINVAL;
>
> spin_lock_irqsave(&priv_dev->lock, flags);
> --
> 2.25.1
>

--

Thanks,
Peter Chen