On 24/06/2020 8.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.. Yes, that's correct. > > >> 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 > - Péter Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki