[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 &
kernel test robot <[email protected]> Tue, 21 Jul 2026 16:34:57 +0800
| Newsgroups | dev.linux.lists.llvm,dev.linux.lists.oe-kbuild-all,org.kvack.linux-mm |
|---|---|
| Message-ID | <[email protected]> |
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. 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