From: Dexuan Cui <decui@xxxxxxxxxxxxx> Sent: Sunday, November 24, 2019 9:34 PM > > With the recent 59bb47985c1d ("mm, sl[aou]b: guarantee natural > alignment for kmalloc(power-of-two)"), kzalloc() is able to allocate > a 4KB buffer that is guaranteed to be 4KB-aligned. Here the size and > alignment of hbus is important because hbus's field > retarget_msi_interrupt_params must not cross a 4KB page boundary. > > Here we prefer kzalloc to get_zeroed_page(), because a buffer > allocated by the latter is not tracked and scanned by kmemleak, and > hence kmemleak reports the pointer contained in the hbus buffer > (i.e. the hpdev struct, which is created in new_pcichild_device() and > is tracked by hbus->children) as memory leak (false positive). > > If the kernel doesn't have 59bb47985c1d, get_zeroed_page() *must* be > used to allocate the hbus buffer and we can avoid the kmemleak false > positive by using kmemleak_alloc() and kmemleak_free() to ask > kmemleak to track and scan the hbus buffer. > > Reported-by: Lili Deng <v-lide@xxxxxxxxxxxxx> > Signed-off-by: Dexuan Cui <decui@xxxxxxxxxxxxx> > --- > drivers/pci/controller/pci-hyperv.c | 24 +++++++++++++++++++++--- > 1 file changed, 21 insertions(+), 3 deletions(-) > Reviewed-by: Michael Kelley <mikelley@xxxxxxxxxxxxx>