diff mbox series

ioat/dca: Use struct_size() helper

Message ID 20190828184015.GA4273@embeddedor (mailing list archive)
State Accepted
Headers show
Series ioat/dca: Use struct_size() helper | expand

Commit Message

Gustavo A. R. Silva Aug. 28, 2019, 6:40 p.m. UTC
One of the more common cases of allocation size calculations is finding
the size of a structure that has a zero-sized array at the end, along
with memory for some number of elements for that array. For example:

struct ioat_dca_priv {
	...
        struct ioat_dca_slot     req_slots[0];
};

Make use of the struct_size() helper instead of an open-coded version
in order to avoid any potential type mistakes.

So, replace the following form:

sizeof(*ioatdca) + (sizeof(struct ioat_dca_slot) * slots)

with:

struct_size(ioatdca, req_slots, slots)

This code was detected with the help of Coccinelle.

Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
---
 drivers/dma/ioat/dca.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

Comments

Dave Jiang Aug. 28, 2019, 7:38 p.m. UTC | #1
On 8/28/19 11:40 AM, Gustavo A. R. Silva wrote:
> One of the more common cases of allocation size calculations is finding
> the size of a structure that has a zero-sized array at the end, along
> with memory for some number of elements for that array. For example:
> 
> struct ioat_dca_priv {
> 	...
>         struct ioat_dca_slot     req_slots[0];
> };
> 
> Make use of the struct_size() helper instead of an open-coded version
> in order to avoid any potential type mistakes.
> 
> So, replace the following form:
> 
> sizeof(*ioatdca) + (sizeof(struct ioat_dca_slot) * slots)
> 
> with:
> 
> struct_size(ioatdca, req_slots, slots)
> 
> This code was detected with the help of Coccinelle.
> 
> Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>

Acked-by: Dave Jiang <dave.jiang@intel.com>

> ---
>  drivers/dma/ioat/dca.c | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/drivers/dma/ioat/dca.c b/drivers/dma/ioat/dca.c
> index 70fd8454d002..be61c32a876f 100644
> --- a/drivers/dma/ioat/dca.c
> +++ b/drivers/dma/ioat/dca.c
> @@ -286,8 +286,7 @@ struct dca_provider *ioat_dca_init(struct pci_dev *pdev, void __iomem *iobase)
>  		return NULL;
>  
>  	dca = alloc_dca_provider(&ioat_dca_ops,
> -				 sizeof(*ioatdca)
> -				      + (sizeof(struct ioat_dca_slot) * slots));
> +				 struct_size(ioatdca, req_slots, slots));
>  	if (!dca)
>  		return NULL;
>  
>
Vinod Koul Sept. 4, 2019, 4:48 a.m. UTC | #2
On 28-08-19, 13:40, Gustavo A. R. Silva wrote:
> One of the more common cases of allocation size calculations is finding
> the size of a structure that has a zero-sized array at the end, along
> with memory for some number of elements for that array. For example:
> 
> struct ioat_dca_priv {
> 	...
>         struct ioat_dca_slot     req_slots[0];
> };
> 
> Make use of the struct_size() helper instead of an open-coded version
> in order to avoid any potential type mistakes.
> 
> So, replace the following form:
> 
> sizeof(*ioatdca) + (sizeof(struct ioat_dca_slot) * slots)
> 
> with:
> 
> struct_size(ioatdca, req_slots, slots)
> 
> This code was detected with the help of Coccinelle.

Please do not invent subsystem tags, git log should tell you the
convention to be used!

Applied after fixing tags, thanks
diff mbox series

Patch

diff --git a/drivers/dma/ioat/dca.c b/drivers/dma/ioat/dca.c
index 70fd8454d002..be61c32a876f 100644
--- a/drivers/dma/ioat/dca.c
+++ b/drivers/dma/ioat/dca.c
@@ -286,8 +286,7 @@  struct dca_provider *ioat_dca_init(struct pci_dev *pdev, void __iomem *iobase)
 		return NULL;
 
 	dca = alloc_dca_provider(&ioat_dca_ops,
-				 sizeof(*ioatdca)
-				      + (sizeof(struct ioat_dca_slot) * slots));
+				 struct_size(ioatdca, req_slots, slots));
 	if (!dca)
 		return NULL;