Hi Vinod, On 6/24/20 00:55, Vinod Koul wrote: > On 19-06-20, 17:43, Gustavo A. R. Silva wrote: >> Make use of the struct_size() helper instead of an open-coded version >> in order to avoid any potential type mistakes. >> >> This code was detected with the help of Coccinelle and, audited and >> fixed manually. >> >> Addresses-KSPP-ID: https://github.com/KSPP/linux/issues/83 >> Signed-off-by: Gustavo A. R. Silva <gustavoars@xxxxxxxxxx> >> --- >> drivers/dma/ti/k3-udma.c | 4 ++-- >> 1 file changed, 2 insertions(+), 2 deletions(-) >> >> diff --git a/drivers/dma/ti/k3-udma.c b/drivers/dma/ti/k3-udma.c >> index 0d5fb154b8e2..411c54b86ba8 100644 >> --- a/drivers/dma/ti/k3-udma.c >> +++ b/drivers/dma/ti/k3-udma.c >> @@ -2209,7 +2209,7 @@ udma_prep_slave_sg_pkt(struct udma_chan *uc, struct scatterlist *sgl, >> u32 ring_id; >> unsigned int i; >> >> - d = kzalloc(sizeof(*d) + sglen * sizeof(d->hwdesc[0]), GFP_NOWAIT); >> + d = kzalloc(struct_size(d, hwdesc, sglen), GFP_NOWAIT); > > struct_size() is a * b + c but here we need, a + b * c.. the trailing > struct is N times here.. > struct_size() works exactly as expected in this case. :) Please, see: include/linux/overflow.h:314: 314 #define struct_size(p, member, count) \ 315 __ab_c_size(count, \ 316 sizeof(*(p)->member) + __must_be_array((p)->member),\ 317 sizeof(*(p))) 318 Thanks -- Gustavo >> if (!d) >> return NULL; >> >> @@ -2525,7 +2525,7 @@ udma_prep_dma_cyclic_pkt(struct udma_chan *uc, dma_addr_t buf_addr, >> if (period_len >= SZ_4M) >> return NULL; >> >> - d = kzalloc(sizeof(*d) + periods * sizeof(d->hwdesc[0]), GFP_NOWAIT); >> + d = kzalloc(struct_size(d, hwdesc, periods), GFP_NOWAIT); >> if (!d) >> return NULL; >> >> -- >> 2.27.0 >