2016-04-22 05:52:28

by Vaishali Thakkar

[permalink] [raw]
Subject: [PATCH] usb: core: Do not use sizeof on pointer type

When sizeof is applied to a pointer typed expression, it gives
the size of the pointer. So, do not use sizeof on pointer type.

Problem found using Coccinelle.

Signed-off-by: Vaishali Thakkar <[email protected]>
---
drivers/usb/core/hcd.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c
index 2ca2cef..2aa352d 100644
--- a/drivers/usb/core/hcd.c
+++ b/drivers/usb/core/hcd.c
@@ -1386,7 +1386,7 @@ static int hcd_alloc_coherent(struct usb_bus *bus,
return -EFAULT;
}

- vaddr = hcd_buffer_alloc(bus, size + sizeof(vaddr),
+ vaddr = hcd_buffer_alloc(bus, size + sizeof(*vaddr),
mem_flags, dma_handle);
if (!vaddr)
return -ENOMEM;
--
2.1.4


2016-04-22 06:53:43

by Clemens Ladisch

[permalink] [raw]
Subject: Re: [PATCH] usb: core: Do not use sizeof on pointer type

Vaishali Thakkar wrote:
> When sizeof is applied to a pointer typed expression, it gives
> the size of the pointer.

And why would that be wrong in this case?

> +++ b/drivers/usb/core/hcd.c
> @@ -1386,7 +1386,7 @@ static int hcd_alloc_coherent(struct usb_bus *bus,
> return -EFAULT;
> }
>
> - vaddr = hcd_buffer_alloc(bus, size + sizeof(vaddr),
> + vaddr = hcd_buffer_alloc(bus, size + sizeof(*vaddr),
> mem_flags, dma_handle);
> if (!vaddr)
> return -ENOMEM;
>

Please note the following comment:

/*
* Store the virtual address of the buffer at the end
* of the allocated dma buffer. [...]


Regards,
Clemens

2016-04-22 06:58:12

by Bjørn Mork

[permalink] [raw]
Subject: Re: [PATCH] usb: core: Do not use sizeof on pointer type

Vaishali Thakkar <[email protected]> writes:

> When sizeof is applied to a pointer typed expression, it gives
> the size of the pointer. So, do not use sizeof on pointer type.

What if the intended result was the size of the pointer?

> Problem found using Coccinelle.

Yes, sure. But you cannot just blindly apply the result without reading
and understanding the code.


Bjørn