On Thu, Aug 29, 2019 at 2:50 AM Gustavo A. R. Silva <gustavo@xxxxxxxxxxxxxx> 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 ubifs_znode { > ... > struct ubifs_zbranch zbranch[]; > }; > > 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(struct ubifs_znode) + c->fanout * sizeof(struct ubifs_zbranch) > > with: > > struct_size(c->cnext, zbranch, c->fanout) > > This code was detected with the help of Coccinelle. > > Signed-off-by: Gustavo A. R. Silva <gustavo@xxxxxxxxxxxxxx> > --- > fs/ubifs/super.c | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > diff --git a/fs/ubifs/super.c b/fs/ubifs/super.c > index 2706f13e3eb9..ca86489048c8 100644 > --- a/fs/ubifs/super.c > +++ b/fs/ubifs/super.c > @@ -661,8 +661,7 @@ static int init_constants_sb(struct ubifs_info *c) > long long tmp64; > > c->main_bytes = (long long)c->main_lebs * c->leb_size; > - c->max_znode_sz = sizeof(struct ubifs_znode) + > - c->fanout * sizeof(struct ubifs_zbranch); > + c->max_znode_sz = struct_size(c->cnext, zbranch, c->fanout); First of all, c->fanout is bound checked. I had to lookup how struct_size() works to understand this single line of code and why you use the completely unrelated c->cnext here. Sorry this change does not make the code any better just harder to read. -- Thanks, //richard ______________________________________________________ Linux MTD discussion mailing list http://lists.infradead.org/mailman/listinfo/linux-mtd/