On Thu, Sep 17, 2020 at 08:05:11PM +0300, Leon Romanovsky wrote: > On Thu, Sep 17, 2020 at 09:38:06AM -0300, Jason Gunthorpe wrote: > > On Thu, Sep 17, 2020 at 12:08:10PM +0300, Leon Romanovsky wrote: > > > On Thu, Sep 17, 2020 at 05:10:08PM +0800, Liu Shixin wrote: > > > > sizeof() when applied to a pointer typed expression should give the > > > > size of the pointed data, even if the data is a pointer. > > > > > > > > Signed-off-by: Liu Shixin <liushixin2@xxxxxxxxxx> > > > > Needs a fixes line > > > > > > if (!cnts->names) > > > > return -ENOMEM; > > > > > > > > cnts->offsets = kcalloc(num_counters, > > > > - sizeof(cnts->offsets), GFP_KERNEL); > > > > + sizeof(*cnts->offsets), GFP_KERNEL); > > > > > > This is not. > > > > Why not? > > cnts->offsets is array of pointers that we will set later. > The "sizeof(*cnts->offsets)" will return the size of size_t, while we > need to get "size_t *". Then why isn't a pointer to size **? Something is rotten here Jason