Re: [linux-next:master 6918/7793] mm/page_owner.c:818:22: error: passing 'memdesc_flags_t *' to parameter of incompatible type 'memdesc_flags_t'; remove &
Zi Yan <[email protected]> Tue, 21 Jul 2026 11:14:08 -0400
| Newsgroups | dev.linux.lists.llvm,dev.linux.lists.oe-kbuild-all,org.kvack.linux-mm |
|---|---|
| Message-ID | <[email protected]> |
On 21 Jul 2026, at 4:34, kernel test robot wrote: > tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master > head: 3fe08b9796f36ef437ab9328e7dd1e5ff2d66603 > commit: 2e3c4a69b0c52d1f75d13c3ac380625143888e18 [6918/7793] mm-page_owner-add-numa-node-filter-fix > config: i386-randconfig-r134-20260721 (https://download.01.org/0day-ci/archive/20260721/[email protected]/config) > compiler: clang version 22.1.3 (https://github.com/llvm/llvm-project e9846648fd6183ee6d8cbdb4502213fcf902a211) > reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260721/[email protected]/reproduce) > > If you fix the issue in a separate patch/commit (i.e. not just a new version of > the same patch/commit), kindly add following tags > | Reported-by: kernel test robot <[email protected]> > | Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/ > > Note: the linux-next/master HEAD 3fe08b9796f36ef437ab9328e7dd1e5ff2d66603 builds fine. > It may have been fixed somewhere. > > All errors (new ones prefixed by >>): > >>> mm/page_owner.c:818:22: error: passing 'memdesc_flags_t *' to parameter of incompatible type 'memdesc_flags_t'; remove & > 818 | nid = memdesc_nid(&page_flags); > | ^~~~~~~~~~~ > include/linux/mm.h:2291:47: note: passing argument to parameter 'mdf' here > 2291 | static inline int memdesc_nid(memdesc_flags_t mdf) > | ^ > 1 error generated. Hi Andrew, This patch should be folded into [1], which converts memdesc_nid() signature from memdesc_flags_t to memdesc_flags_t*, since [1] comes after Zhen Ni’s page owner patchset. Can you do that? When I tested Zhen Ni’s page owner patchset, I reverted the older series on top of linux-mm/mm-new and applied the new series. I got a compilation error and sent this fix but did not notice memdesc_nid() was changed in [1]. Sorry for the confusion. Thanks. [1] https://lore.kernel.org/all/[email protected]/, its commit id is 357d3450fb9fd999994549e0b3e980de78bcd673 on mm-unstable > > > vim +818 mm/page_owner.c > > 727 > 728 static ssize_t > 729 read_page_owner(struct file *file, char __user *buf, size_t count, loff_t *ppos) > 730 { > 731 unsigned long pfn; > 732 struct page *page; > 733 struct page_ext *page_ext; > 734 struct page_owner *page_owner; > 735 depot_stack_handle_t handle; > 736 struct page_owner_filter_state *state = file->private_data; > 737 > 738 if (!static_branch_unlikely(&page_owner_inited)) > 739 return -EINVAL; > 740 > 741 page = NULL; > 742 if (*ppos == 0) > 743 pfn = min_low_pfn; > 744 else > 745 pfn = *ppos; > 746 /* Find a valid PFN or the start of a MAX_ORDER_NR_PAGES area */ > 747 while (!pfn_valid(pfn) && (pfn & (MAX_ORDER_NR_PAGES - 1)) != 0) > 748 pfn++; > 749 > 750 /* Find an allocated page */ > 751 for (; pfn < max_pfn; pfn++) { > 752 /* > 753 * This temporary page_owner is required so > 754 * that we can avoid the context switches while holding > 755 * the rcu lock and copying the page owner information to > 756 * user through copy_to_user() or GFP_KERNEL allocations. > 757 */ > 758 struct page_owner page_owner_tmp; > 759 > 760 /* > 761 * If the new page is in a new MAX_ORDER_NR_PAGES area, > 762 * validate the area as existing, skip it if not > 763 */ > 764 if ((pfn & (MAX_ORDER_NR_PAGES - 1)) == 0 && !pfn_valid(pfn)) { > 765 pfn += MAX_ORDER_NR_PAGES - 1; > 766 continue; > 767 } > 768 > 769 page = pfn_to_page(pfn); > 770 if (skip_buddy_pages(&pfn, page)) > 771 continue; > 772 > 773 page_ext = page_ext_get(page); > 774 if (unlikely(!page_ext)) > 775 continue; > 776 > 777 /* > 778 * Some pages could be missed by concurrent allocation or free, > 779 * because we don't hold the zone lock. > 780 */ > 781 if (!test_bit(PAGE_EXT_OWNER, &page_ext->flags)) > 782 goto ext_put_continue; > 783 > 784 /* > 785 * Although we do have the info about past allocation of free > 786 * pages, it's not relevant for current memory usage. > 787 */ > 788 if (!test_bit(PAGE_EXT_OWNER_ALLOCATED, &page_ext->flags)) > 789 goto ext_put_continue; > 790 > 791 page_owner = get_page_owner(page_ext); > 792 > 793 /* > 794 * Don't print "tail" pages of high-order allocations as that > 795 * would inflate the stats. > 796 */ > 797 if (!IS_ALIGNED(pfn, 1 << page_owner->order)) > 798 goto ext_put_continue; > 799 > 800 /* > 801 * Access to page_ext->handle isn't synchronous so we should > 802 * be careful to access it. > 803 */ > 804 handle = READ_ONCE(page_owner->handle); > 805 if (!handle) > 806 goto ext_put_continue; > 807 > 808 if (state->nid_filter_enabled) { > 809 int nid; > 810 memdesc_flags_t page_flags = READ_ONCE(page->flags); > 811 > 812 /* > 813 * Bypass PF_POISONED_CHECK() in page_to_nid() to avoid > 814 * VM_BUG_ON when accessing poisoned pages. > 815 */ > 816 if (page_flags.f == PAGE_POISON_PATTERN) > 817 goto ext_put_continue; >> 818 nid = memdesc_nid(&page_flags); > 819 if (!node_isset(nid, state->nid_filter)) > 820 goto ext_put_continue; > 821 } > 822 > 823 /* Record the next PFN to read in the file offset */ > 824 *ppos = pfn + 1; > 825 > 826 page_owner_tmp = *page_owner; > 827 page_ext_put(page_ext); > 828 return print_page_owner(buf, count, pfn, page, > 829 &page_owner_tmp, handle, state); > 830 ext_put_continue: > 831 page_ext_put(page_ext); > 832 cond_resched(); > 833 } > 834 > 835 return 0; > 836 } > 837 > > -- > 0-DAY CI Kernel Test Service > https://github.com/intel/lkp-tests/wiki Best Regards, Yan, Zi