dmaengine: st_fdma: use struct_size() in kzalloc()
Subsystems (2)
PATCH 1/1 dmaengine: st_fdma: 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/st_fdma.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
drivers/dma/st_fdma.c +1 -2
@@ -243,8 +243,7 @@ static struct st_fdma_desc *st_fdma_alloc_desc(struct st_fdma_chan *fchan,struct st_fdma_desc *fdesc;int i; - fdesc =kzalloc (sizeof (*fdesc) + -sizeof (struct st_fdma_sw_node ) * sg_len,GFP_NOWAIT ); + fdesc =kzalloc (struct_size (fdesc, node, sg_len),GFP_NOWAIT );if (!fdesc)return NULL ;
Hi Gustavo
Quoted 29 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/st_fdma.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)drivers/dma/st_fdma.c +0
-0
drivers/dma/st_fdma.c static struct st_fdma_desc *st_fdma_alloc_desc(struct st_fdma_chan *fchan, · line 249
Quoted 9 lines
drivers/dma/st_fdma.c +1
-2@@ -243,8 +243,7 @@ static struct st_fdma_desc *st_fdma_alloc_desc(struct st_fdma_chan *fchan,struct st_fdma_desc *fdesc;int i; - fdesc =kzalloc (sizeof (*fdesc) + -sizeof (struct st_fdma_sw_node ) * sg_len,GFP_NOWAIT ); + fdesc =kzalloc (struct_size (fdesc, node, sg_len),GFP_NOWAIT );if (!fdesc)return NULL ;
Thanks
Quoted 7 lines · Patrice CHOTARD
Hi Gustavo
Quoted 4 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:
[..]
Quoted 14 lines
Quoted 14 lines
Signed-off-by Gustavo A. R. Silva <[email protected]>--- drivers/dma/st_fdma.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)drivers/dma/st_fdma.c +0
-0@@ -243,8 +243,7 @@ static struct st_fdma_desc *st_fdma_alloc_desc(struct st_fdma_chan *fchan,struct st_fdma_desc *fdesc;int i;
Quoted 11 lines
drivers/dma/st_fdma.c static struct st_fdma_desc *st_fdma_alloc_desc(struct st_fdma_chan *fchan, · line 249
Quoted 7 lines
drivers/dma/st_fdma.c +1
-2- fdesc =kzalloc (sizeof (*fdesc) + -sizeof (struct st_fdma_sw_node ) * sg_len,GFP_NOWAIT ); + fdesc =kzalloc (struct_size (fdesc, node, sg_len),GFP_NOWAIT );if (!fdesc)return NULL ;Acked-by Patrice Chotard <[email protected]>
Thanks, Patrice.
---
Gustavo