Building the Linux kernel with Clang and LLVM
 help / color / mirror / Atom feed
* Re: [RFC PATCH] mm/hugetlb: fix resv_map memory leak in __mmap_region error path
       [not found] <20260425070700.562229-1-25181214217@stu.xidian.edu.cn>
@ 2026-05-01 22:03 ` kernel test robot
  2026-05-01 22:14 ` kernel test robot
  1 sibling, 0 replies; 2+ messages in thread
From: kernel test robot @ 2026-05-01 22:03 UTC (permalink / raw)
  To: Mingyu Wang; +Cc: llvm, oe-kbuild-all

Hi Mingyu,

[This is a private test report for your RFC patch.]
kernel test robot noticed the following build warnings:

[auto build test WARNING on akpm-mm/mm-everything]

url:    https://github.com/intel-lab-lkp/linux/commits/Mingyu-Wang/mm-hugetlb-fix-resv_map-memory-leak-in-__mmap_region-error-path/20260425-203812
base:   https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-everything
patch link:    https://lore.kernel.org/r/20260425070700.562229-1-25181214217%40stu.xidian.edu.cn
patch subject: [RFC PATCH] mm/hugetlb: fix resv_map memory leak in __mmap_region error path
config: arm-allnoconfig (https://download.01.org/0day-ci/archive/20260502/202605020650.VNBzVdYb-lkp@intel.com/config)
compiler: clang version 23.0.0git (https://github.com/llvm/llvm-project 5bac06718f502014fade905512f1d26d578a18f3)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260502/202605020650.VNBzVdYb-lkp@intel.com/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 <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202605020650.VNBzVdYb-lkp@intel.com/

All warnings (new ones prefixed by >>):

   In file included from arch/arm/kernel/asm-offsets.c:14:
   In file included from include/linux/mm.h:8:
   In file included from include/linux/gfp.h:7:
   In file included from include/linux/mmzone.h:22:
>> include/linux/mm_types.h:865:28: warning: declaration of 'struct vm_area_desc' will not be visible outside of this function [-Wvisibility]
     865 |         void (*abort_hook)(struct vm_area_desc *desc);
         |                                   ^
   1 warning generated.
--
   In file included from kernel/fork.c:16:
   In file included from include/linux/slab.h:17:
   In file included from include/linux/gfp.h:7:
   In file included from include/linux/mmzone.h:22:
>> include/linux/mm_types.h:865:28: warning: declaration of 'struct vm_area_desc' will not be visible outside of this function [-Wvisibility]
     865 |         void (*abort_hook)(struct vm_area_desc *desc);
         |                                   ^
   In file included from kernel/fork.c:34:
   In file included from include/linux/mempolicy.h:16:
   include/linux/pagemap.h:521:45: error: use of undeclared identifier 'PMD_SHIFT'
     521 |         return mapping_max_folio_order(mapping) >= PMD_ORDER;
         |                                                    ^~~~~~~~~
   include/linux/pgtable.h:8:20: note: expanded from macro 'PMD_ORDER'
       8 | #define PMD_ORDER       (PMD_SHIFT - PAGE_SHIFT)
         |                          ^~~~~~~~~
   In file included from kernel/fork.c:42:
   include/linux/mman.h:157:9: warning: division by zero is undefined [-Wdivision-by-zero]
     157 |                _calc_vm_trans(flags, MAP_SYNC,       VM_SYNC      ) |
         |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/mman.h:135:21: note: expanded from macro '_calc_vm_trans'
     135 |    : ((x) & (bit1)) / ((bit1) / (bit2))))
         |                     ^ ~~~~~~~~~~~~~~~~~
   2 warnings and 1 error generated.
--
   In file included from kernel/cpu.c:5:
   In file included from include/linux/sched/mm.h:8:
>> include/linux/mm_types.h:865:28: warning: declaration of 'struct vm_area_desc' will not be visible outside of this function [-Wvisibility]
     865 |         void (*abort_hook)(struct vm_area_desc *desc);
         |                                   ^
   In file included from kernel/cpu.c:26:
   In file included from include/linux/suspend.h:5:
   In file included from include/linux/swap.h:13:
   include/linux/pagemap.h:521:45: error: use of undeclared identifier 'PMD_SHIFT'
     521 |         return mapping_max_folio_order(mapping) >= PMD_ORDER;
         |                                                    ^~~~~~~~~
   include/linux/pgtable.h:8:20: note: expanded from macro 'PMD_ORDER'
       8 | #define PMD_ORDER       (PMD_SHIFT - PAGE_SHIFT)
         |                          ^~~~~~~~~
   1 warning and 1 error generated.
--
   In file included from kernel/sched/core.c:12:
   In file included from include/linux/highmem.h:5:
   In file included from include/linux/fs.h:5:
   In file included from include/linux/fs/super.h:5:
   In file included from include/linux/fs/super_types.h:7:
   In file included from include/linux/list_lru.h:14:
   In file included from include/linux/xarray.h:16:
   In file included from include/linux/gfp.h:7:
   In file included from include/linux/mmzone.h:22:
>> include/linux/mm_types.h:865:28: warning: declaration of 'struct vm_area_desc' will not be visible outside of this function [-Wvisibility]
     865 |         void (*abort_hook)(struct vm_area_desc *desc);
         |                                   ^
   In file included from kernel/sched/core.c:83:
   In file included from arch/arm/include/asm/tlb.h:21:
   include/linux/pagemap.h:521:45: error: use of undeclared identifier 'PMD_SHIFT'
     521 |         return mapping_max_folio_order(mapping) >= PMD_ORDER;
         |                                                    ^~~~~~~~~
   include/linux/pgtable.h:8:20: note: expanded from macro 'PMD_ORDER'
       8 | #define PMD_ORDER       (PMD_SHIFT - PAGE_SHIFT)
         |                          ^~~~~~~~~
   kernel/sched/core.c:8053:12: warning: array index -1 is before the beginning of the array [-Warray-bounds]
    8053 |                                        preempt_modes[preempt_dynamic_mode] : "undef",
         |                                        ^             ~~~~~~~~~~~~~~~~~~~~
   kernel/sched/core.c:8028:1: note: array 'preempt_modes' declared here
    8028 | const char *preempt_modes[] = {
         | ^
   2 warnings and 1 error generated.
--
   In file included from kernel/time/timekeeping.c:6:
   In file included from include/linux/audit.h:13:
   In file included from include/linux/ptrace.h:7:
   In file included from include/linux/sched/signal.h:9:
   In file included from include/linux/sched/task.h:13:
   In file included from include/linux/uaccess.h:13:
   In file included from arch/arm/include/asm/uaccess.h:17:
   In file included from arch/arm/include/asm/pgtable.h:16:
   In file included from arch/arm/include/asm/pgtable-nommu.h:13:
   In file included from include/linux/slab.h:17:
   In file included from include/linux/gfp.h:7:
   In file included from include/linux/mmzone.h:22:
>> include/linux/mm_types.h:865:28: warning: declaration of 'struct vm_area_desc' will not be visible outside of this function [-Wvisibility]
     865 |         void (*abort_hook)(struct vm_area_desc *desc);
         |                                   ^
   kernel/time/timekeeping.c:1948:13: warning: variable 'suspend_timing_needed' set but not used [-Wunused-but-set-global]
    1948 | static bool suspend_timing_needed;
         |             ^
   2 warnings generated.
--
   In file included from kernel/time/alarmtimer.c:18:
   In file included from include/linux/rtc.h:17:
   In file included from include/linux/interrupt.h:11:
   In file included from include/linux/hardirq.h:11:
   In file included from arch/arm/include/asm/hardirq.h:10:
   In file included from include/asm-generic/hardirq.h:17:
   In file included from include/linux/irq.h:19:
   In file included from include/linux/topology.h:34:
   In file included from include/linux/mmzone.h:22:
>> include/linux/mm_types.h:865:28: warning: declaration of 'struct vm_area_desc' will not be visible outside of this function [-Wvisibility]
     865 |         void (*abort_hook)(struct vm_area_desc *desc);
         |                                   ^
   kernel/time/alarmtimer.c:54:29: warning: variable 'freezer_alarmtype' set but not used [-Wunused-but-set-global]
      54 | static enum alarmtimer_type freezer_alarmtype;
         |                             ^
   kernel/time/alarmtimer.c:55:16: warning: variable 'freezer_expires' set but not used [-Wunused-but-set-global]
      55 | static ktime_t freezer_expires;
         |                ^
   3 warnings generated.
--
   In file included from arch/arm/kernel/asm-offsets.c:14:
   In file included from include/linux/mm.h:8:
   In file included from include/linux/gfp.h:7:
   In file included from include/linux/mmzone.h:22:
>> include/linux/mm_types.h:865:28: warning: declaration of 'struct vm_area_desc' will not be visible outside of this function [-Wvisibility]
     865 |         void (*abort_hook)(struct vm_area_desc *desc);
         |                                   ^
   1 warning generated.
   In file included from kernel/sched/rq-offsets.c:5:
   In file included from kernel/sched/sched.h:15:
   In file included from include/linux/sched/mm.h:8:
>> include/linux/mm_types.h:865:28: warning: declaration of 'struct vm_area_desc' will not be visible outside of this function [-Wvisibility]
     865 |         void (*abort_hook)(struct vm_area_desc *desc);
         |                                   ^
   1 warning generated.


vim +865 include/linux/mm_types.h

   820	
   821	/*
   822	 * Describes an action an mmap_prepare hook can instruct to be taken to complete
   823	 * the mapping of a VMA. Specified in vm_area_desc.
   824	 */
   825	struct mmap_action {
   826		union {
   827			struct {
   828				unsigned long start;
   829				unsigned long start_pfn;
   830				unsigned long size;
   831				pgprot_t pgprot;
   832			} remap;
   833			struct {
   834				phys_addr_t start_phys_addr;
   835				unsigned long size;
   836			} simple_ioremap;
   837			struct {
   838				unsigned long start;
   839				struct page **pages;
   840				unsigned long nr_pages;
   841				pgoff_t pgoff;
   842			} map_kernel;
   843		};
   844		enum mmap_action_type type;
   845	
   846		/*
   847		 * If specified, this hook is invoked after the selected action has been
   848		 * successfully completed. Note that the VMA write lock still held.
   849		 *
   850		 * The absolute minimum ought to be done here.
   851		 *
   852		 * Returns 0 on success, or an error code.
   853		 */
   854		int (*success_hook)(const struct vm_area_struct *vma);
   855	
   856		/*
   857		 * If specified, this hook is invoked when an error occurred when
   858		 * attempting the selected action.
   859		 *
   860		 * The hook can return an error code in order to filter the error, but
   861		 * it is not valid to clear the error here.
   862		 */
   863		int (*error_hook)(int err);
   864		
 > 865		void (*abort_hook)(struct vm_area_desc *desc);
   866	
   867		/*
   868		 * This should be set in rare instances where the operation required
   869		 * that the rmap should not be able to access the VMA until
   870		 * completely set up.
   871		 */
   872		bool hide_from_rmap_until_complete :1;
   873	};
   874	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [RFC PATCH] mm/hugetlb: fix resv_map memory leak in __mmap_region error path
       [not found] <20260425070700.562229-1-25181214217@stu.xidian.edu.cn>
  2026-05-01 22:03 ` [RFC PATCH] mm/hugetlb: fix resv_map memory leak in __mmap_region error path kernel test robot
@ 2026-05-01 22:14 ` kernel test robot
  1 sibling, 0 replies; 2+ messages in thread
From: kernel test robot @ 2026-05-01 22:14 UTC (permalink / raw)
  To: Mingyu Wang; +Cc: llvm, oe-kbuild-all

Hi Mingyu,

[This is a private test report for your RFC patch.]
kernel test robot noticed the following build errors:

[auto build test ERROR on akpm-mm/mm-everything]

url:    https://github.com/intel-lab-lkp/linux/commits/Mingyu-Wang/mm-hugetlb-fix-resv_map-memory-leak-in-__mmap_region-error-path/20260425-203812
base:   https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-everything
patch link:    https://lore.kernel.org/r/20260425070700.562229-1-25181214217%40stu.xidian.edu.cn
patch subject: [RFC PATCH] mm/hugetlb: fix resv_map memory leak in __mmap_region error path
config: hexagon-allnoconfig (https://download.01.org/0day-ci/archive/20260502/202605020645.8318Xwwx-lkp@intel.com/config)
compiler: clang version 23.0.0git (https://github.com/llvm/llvm-project 5bac06718f502014fade905512f1d26d578a18f3)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260502/202605020645.8318Xwwx-lkp@intel.com/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 <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202605020645.8318Xwwx-lkp@intel.com/

All errors (new ones prefixed by >>):

   In file included from mm/vma.c:7:
   In file included from mm/vma_internal.h:12:
   In file included from include/linux/backing-dev.h:13:
   In file included from include/linux/fs.h:5:
   In file included from include/linux/fs/super.h:5:
   In file included from include/linux/fs/super_types.h:7:
   In file included from include/linux/list_lru.h:14:
   In file included from include/linux/xarray.h:16:
   In file included from include/linux/gfp.h:7:
   In file included from include/linux/mmzone.h:22:
   include/linux/mm_types.h:865:28: warning: declaration of 'struct vm_area_desc' will not be visible outside of this function [-Wvisibility]
     865 |         void (*abort_hook)(struct vm_area_desc *desc);
         |                                   ^
>> mm/vma.c:2805:26: error: incompatible pointer types passing 'struct vm_area_desc *' to parameter of type 'struct vm_area_desc *' [-Wincompatible-pointer-types]
    2805 |                 desc.action.abort_hook(&desc);
         |                                        ^~~~~
   1 warning and 1 error generated.


vim +2805 mm/vma.c

  2731	
  2732	static unsigned long __mmap_region(struct file *file, unsigned long addr,
  2733			unsigned long len, vma_flags_t vma_flags,
  2734			unsigned long pgoff, struct list_head *uf)
  2735	{
  2736		struct mm_struct *mm = current->mm;
  2737		struct vm_area_struct *vma = NULL;
  2738		bool have_mmap_prepare = file && file->f_op->mmap_prepare;
  2739		VMA_ITERATOR(vmi, mm, addr);
  2740		MMAP_STATE(map, mm, &vmi, addr, len, pgoff, vma_flags, file);
  2741		struct vm_area_desc desc = {
  2742			.mm = mm,
  2743			.file = file,
  2744			.action = {
  2745				.type = MMAP_NOTHING, /* Default to no further action. */
  2746			},
  2747		};
  2748		bool allocated_new = false;
  2749		int error;
  2750	
  2751		map.check_ksm_early = can_set_ksm_flags_early(&map);
  2752	
  2753		error = __mmap_setup(&map, &desc, uf);
  2754		if (!error && have_mmap_prepare)
  2755			error = call_mmap_prepare(&map, &desc);
  2756		if (error)
  2757			goto abort_munmap;
  2758	
  2759		if (map.check_ksm_early)
  2760			update_ksm_flags(&map);
  2761	
  2762		/* Attempt to merge with adjacent VMAs... */
  2763		if (map.prev || map.next) {
  2764			VMG_MMAP_STATE(vmg, &map, /* vma = */ NULL);
  2765	
  2766			vma = vma_merge_new_range(&vmg);
  2767		}
  2768	
  2769		/* ...but if we can't, allocate a new VMA. */
  2770		if (!vma) {
  2771			error = __mmap_new_vma(&map, &vma, &desc.action);
  2772			if (error)
  2773				goto unacct_error;
  2774			allocated_new = true;
  2775		}
  2776	
  2777		if (have_mmap_prepare)
  2778			set_vma_user_defined_fields(vma, &map);
  2779	
  2780		__mmap_complete(&map, vma);
  2781	
  2782		if (have_mmap_prepare && allocated_new) {
  2783			error = mmap_action_complete(vma, &desc.action,
  2784						     /*is_compat=*/false);
  2785			if (error)
  2786				return error;
  2787		}
  2788	
  2789		return addr;
  2790	
  2791		/* Accounting was done by __mmap_setup(). */
  2792	unacct_error:
  2793		if (map.charged)
  2794			vm_unacct_memory(map.charged);
  2795	abort_munmap:
  2796		/*
  2797		 * This indicates that .mmap_prepare has set a new file, differing from
  2798		 * desc->vm_file. But since we're aborting the operation, only the
  2799		 * original file will be cleaned up. Ensure we clean up both.
  2800		 */
  2801		if (map.file_doesnt_need_get)
  2802			fput(map.file);
  2803		
  2804		if (have_mmap_prepare && desc.action.abort_hook)
> 2805			desc.action.abort_hook(&desc);
  2806		
  2807		vms_abort_munmap_vmas(&map.vms, &map.mas_detach);
  2808		return error;
  2809	}
  2810	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2026-05-01 22:15 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <20260425070700.562229-1-25181214217@stu.xidian.edu.cn>
2026-05-01 22:03 ` [RFC PATCH] mm/hugetlb: fix resv_map memory leak in __mmap_region error path kernel test robot
2026-05-01 22:14 ` kernel test robot

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox