dmaengine: fsl-edma: use struct_size() in kzalloc()
Subsystems (2)
PATCH 1/1 dmaengine: fsl-edma: use struct_size() in kzalloc()
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 foo {
int stuff;
void *entry[];
};instance = kzalloc(sizeof(struct foo) + sizeof(void *) * count, GFP_KERNEL);
Instead of leaving these open-coded and prone to type mistakes, we can now use the new struct_size() helper:
instance = kzalloc(struct_size(instance, entry, count), GFP_KERNEL);
This code was detected with the help of Coccinelle.
--- drivers/dma/fsl-edma-common.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-)
drivers/dma/fsl-edma-common.c +1 -3
@@ -339,9 +339,7 @@ static struct fsl_edma_desc *fsl_edma_alloc_desc(struct fsl_edma_chan *fsl_chan,struct fsl_edma_desc *fsl_desc;int i; - fsl_desc =kzalloc (sizeof (*fsl_desc) + -sizeof (struct fsl_edma_sw_tcd ) * - sg_len,GFP_NOWAIT ); + fsl_desc =kzalloc (struct_size (fsl_desc, tcd, sg_len),GFP_NOWAIT );if (!fsl_desc)return NULL ;
Quoted 28 lines · Gustavo A. R. Silva
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 foo { int stuff; void *entry[]; };instance =
kzalloc(sizeof(struct foo) + sizeof(void *) * count, GFP_KERNEL);Instead of leaving these open-coded and prone to type mistakes, we can now use the new
struct_size()helper:instance =
kzalloc(struct_size(instance, entry, count), GFP_KERNEL);This code was detected with the help of Coccinelle.
Signed-off-by Gustavo A. R. Silva <[email protected]>--- drivers/dma/fsl-edma-common.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-)drivers/dma/fsl-edma-common.c +0
-0
drivers/dma/fsl-edma-common.c static struct fsl_edma_desc *fsl_edma_alloc_desc(struct fsl_edma_chan *fsl_chan, · line 345
Quoted 10 lines
drivers/dma/fsl-edma-common.c +1
-3@@ -339,9 +339,7 @@ static struct fsl_edma_desc *fsl_edma_alloc_desc(struct fsl_edma_chan *fsl_chan,struct fsl_edma_desc *fsl_desc;int i; - fsl_desc =kzalloc (sizeof (*fsl_desc) + -sizeof (struct fsl_edma_sw_tcd ) * - sg_len,GFP_NOWAIT ); + fsl_desc =kzalloc (struct_size (fsl_desc, tcd, sg_len),GFP_NOWAIT );if (!fsl_desc)return NULL ;
Quoted 3 lines
Signature · 1 line
2.20.1
Quoted 32 lines · Angelo Dureghello
Quoted 31 lines · Gustavo A. R. Silva
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 foo { int stuff; void *entry[]; };instance =
kzalloc(sizeof(struct foo) + sizeof(void *) * count, GFP_KERNEL);Instead of leaving these open-coded and prone to type mistakes, we can now use the new
struct_size()helper:instance =
kzalloc(struct_size(instance, entry, count), GFP_KERNEL);This code was detected with the help of Coccinelle.
Signed-off-by Gustavo A. R. Silva <[email protected]>--- drivers/dma/fsl-edma-common.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-)drivers/dma/fsl-edma-common.c +0
-0@@ -339,9 +339,7 @@ static struct fsl_edma_desc *fsl_edma_alloc_desc(struct fsl_edma_chan *fsl_chan,struct fsl_edma_desc *fsl_desc;int i;
Quoted 10 lines
drivers/dma/fsl-edma-common.c static struct fsl_edma_desc *fsl_edma_alloc_desc(struct fsl_edma_chan *fsl_chan, · line 345
Quoted 7 lines
drivers/dma/fsl-edma-common.c +1
-3- fsl_desc =kzalloc (sizeof (*fsl_desc) + -sizeof (struct fsl_edma_sw_tcd ) * - sg_len,GFP_NOWAIT ); + fsl_desc =kzalloc (struct_size (fsl_desc, tcd, sg_len),GFP_NOWAIT );if (!fsl_desc)return NULL ;Tested-by Angelo Dureghello <[email protected]>
Thanks, Angelo.
---
Gustavo
Quoted 9 lines · Gustavo A. R. Silva
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 foo { int stuff; void *entry[]; };
Quoted 8 lines
instance =
kzalloc(sizeof(struct foo) + sizeof(void *) * count, GFP_KERNEL);Instead of leaving these open-coded and prone to type mistakes, we can now use the new
struct_size()helper:instance =
kzalloc(struct_size(instance, entry, count), GFP_KERNEL);This code was detected with the help of Coccinelle.
Applied, thanks