On Wed, Dec 09, 2020 at 01:36:50PM +0800, kernel test robot wrote: > Hi, > > I love your patch! Yet something to improve: > > [auto build test ERROR on linux/master] > [also build test ERROR on linus/master hnaz-linux-mm/master v5.10-rc7] > [cannot apply to mmotm/master rcu/dev rcu/rcu/next next-20201208] > [If your patch is applied to the wrong git tree, kindly drop us a note. > And when submitting patch, we suggest to use '--base' as documented in > https://git-scm.com/docs/git-format-patch] > > url: https://github.com/0day-ci/linux/commits/paulmck-kernel-org/mm-Add-mem_dump_obj-to-print-source-of-memory-block/20201209-091546 > base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 09162bc32c880a791c6c0668ce0745cf7958f576 > config: x86_64-randconfig-a004-20201208 (attached as .config) > compiler: gcc-9 (Debian 9.3.0-15) 9.3.0 > reproduce (this is a W=1 build): > # https://github.com/0day-ci/linux/commit/c49050a9b3235279954c0b5d82abd90fa09d9359 > git remote add linux-review https://github.com/0day-ci/linux > git fetch --no-tags linux-review paulmck-kernel-org/mm-Add-mem_dump_obj-to-print-source-of-memory-block/20201209-091546 > git checkout c49050a9b3235279954c0b5d82abd90fa09d9359 > # save the attached .config to linux build tree > make W=1 ARCH=x86_64 > > If you fix the issue, kindly add following tag as appropriate > Reported-by: kernel test robot > > All errors (new ones prefixed by >>): > > ld: mm/slab_common.o: in function `kmem_dump_obj': > >> mm/slab_common.c:589: undefined reference to `kmem_provenance' I will find a spot in mm/slab.c that is not under #ifdef sooner or later... Fix queued. ;-) Thanx, Paul > vim +589 mm/slab_common.c > > 557 > 558 /** > 559 * kmem_dump_obj - Print available slab provenance information > 560 * @object: slab object for which to find provenance information. > 561 * > 562 * This function uses pr_cont(), so that the caller is expected to have > 563 * printed out whatever preamble is appropriate. The provenance information > 564 * depends on the type of object and on how much debugging is enabled. > 565 * For a slab-cache object, the fact that it is a slab object is printed, > 566 * and, if available, the slab name, return address, and stack trace from > 567 * the allocation of that object. > 568 * > 569 * This function will splat if passed a pointer to a non-slab object. > 570 * If you are not sure what type of object you have, you should instead > 571 * use mem_dump_obj(). > 572 */ > 573 void kmem_dump_obj(void *object) > 574 { > 575 int i; > 576 struct page *page; > 577 struct kmem_provenance kp; > 578 > 579 if (WARN_ON_ONCE(!virt_addr_valid(object))) > 580 return; > 581 page = virt_to_head_page(object); > 582 if (WARN_ON_ONCE(!PageSlab(page))) { > 583 pr_cont(" non-slab memory.\n"); > 584 return; > 585 } > 586 kp.kp_ptr = object; > 587 kp.kp_page = page; > 588 kp.kp_nstack = KS_ADDRS_COUNT; > > 589 kmem_provenance(&kp); > 590 if (page->slab_cache) > 591 pr_cont(" slab %s", page->slab_cache->name); > 592 else > 593 pr_cont(" slab "); > 594 if (kp.kp_ret) > 595 pr_cont(" allocated at %pS\n", kp.kp_ret); > 596 else > 597 pr_cont("\n"); > 598 if (kp.kp_stack[0]) { > 599 for (i = 0; i < ARRAY_SIZE(kp.kp_stack); i++) { > 600 if (!kp.kp_stack[i]) > 601 break; > 602 pr_info(" %pS\n", kp.kp_stack[i]); > 603 } > 604 } > 605 } > 606 EXPORT_SYMBOL_GPL(kmem_dump_obj); > 607 > > --- > 0-DAY CI Kernel Test Service, Intel Corporation > https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org