Message ID | 20190828184015.GA4273@embeddedor (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | ioat/dca: Use struct_size() helper | expand |
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; > >
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 --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;
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(-)