All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: "Liam R. Howlett" <Liam.Howlett@oracle.com>
Cc: oe-kbuild-all@lists.linux.dev,
	Linux Memory Management List <linux-mm@kvack.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
Subject: [linux-next:master 7320/8126] lib/../mm/vma.h:173:22: error: implicit declaration of function 'vma_iter_store_gfp'; did you mean 'vma_iter_clear_gfp'?
Date: Sat, 31 Aug 2024 04:25:52 +0800	[thread overview]
Message-ID: <202408310422.VQwKBiSC-lkp@intel.com> (raw)

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head:   985bf40edf4343dcb04c33f58b40b4a85c1776d4
commit: 59f8f23d91921f023428e34c061e8ee88b7670c7 [7320/8126] mm: change failure of MAP_FIXED to restoring the gap on failure
config: x86_64-randconfig-x005-20230818 (https://download.01.org/0day-ci/archive/20240831/202408310422.VQwKBiSC-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240831/202408310422.VQwKBiSC-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/202408310422.VQwKBiSC-lkp@intel.com/

Note: the linux-next/master HEAD 985bf40edf4343dcb04c33f58b40b4a85c1776d4 builds fine.
      It may have been fixed somewhere.

All errors (new ones prefixed by >>):

   In file included from include/linux/build_bug.h:5,
                    from lib/vsprintf.c:21:
   lib/../mm/vma.h: In function 'vms_abort_munmap_vmas':
>> lib/../mm/vma.h:173:22: error: implicit declaration of function 'vma_iter_store_gfp'; did you mean 'vma_iter_clear_gfp'? [-Werror=implicit-function-declaration]
     173 |         if (unlikely(vma_iter_store_gfp(vms->vmi, NULL, GFP_KERNEL))) {
         |                      ^~~~~~~~~~~~~~~~~~
   include/linux/compiler.h:77:45: note: in definition of macro 'unlikely'
      77 | # define unlikely(x)    __builtin_expect(!!(x), 0)
         |                                             ^
   In file included from lib/../mm/internal.h:22,
                    from lib/vsprintf.c:50:
   lib/../mm/vma.h: At top level:
>> lib/../mm/vma.h:336:19: error: static declaration of 'vma_iter_store_gfp' follows non-static declaration
     336 | static inline int vma_iter_store_gfp(struct vma_iterator *vmi,
         |                   ^~~~~~~~~~~~~~~~~~
   lib/../mm/vma.h:173:22: note: previous implicit declaration of 'vma_iter_store_gfp' with type 'int()'
     173 |         if (unlikely(vma_iter_store_gfp(vms->vmi, NULL, GFP_KERNEL))) {
         |                      ^~~~~~~~~~~~~~~~~~
   include/linux/compiler.h:77:45: note: in definition of macro 'unlikely'
      77 | # define unlikely(x)    __builtin_expect(!!(x), 0)
         |                                             ^
   lib/vsprintf.c: In function 'va_format':
   lib/vsprintf.c:1683:9: warning: function 'va_format' might be a candidate for 'gnu_printf' format attribute [-Wsuggest-attribute=format]
    1683 |         buf += vsnprintf(buf, end > buf ? end - buf : 0, va_fmt->fmt, va);
         |         ^~~
   cc1: some warnings being treated as errors


vim +173 lib/../mm/vma.h

   147	
   148	/*
   149	 * vms_abort_munmap_vmas() - Undo as much as possible from an aborted munmap()
   150	 * operation.
   151	 * @vms: The vma unmap structure
   152	 * @mas_detach: The maple state with the detached maple tree
   153	 *
   154	 * Reattach any detached vmas, free up the maple tree used to track the vmas.
   155	 * If that's not possible because the ptes are cleared (and vm_ops->closed() may
   156	 * have been called), then a NULL is written over the vmas and the vmas are
   157	 * removed (munmap() completed).
   158	 */
   159	static inline void vms_abort_munmap_vmas(struct vma_munmap_struct *vms,
   160			struct ma_state *mas_detach)
   161	{
   162		if (!vms->nr_pages)
   163			return;
   164	
   165		if (vms->clear_ptes)
   166			return reattach_vmas(mas_detach);
   167	
   168		/*
   169		 * Aborting cannot just call the vm_ops open() because they are often
   170		 * not symmetrical and state data has been lost.  Resort to the old
   171		 * failure method of leaving a gap where the MAP_FIXED mapping failed.
   172		 */
 > 173		if (unlikely(vma_iter_store_gfp(vms->vmi, NULL, GFP_KERNEL))) {
   174			pr_warn_once("%s: (%d) Unable to abort munmap() operation\n",
   175				     current->comm, current->pid);
   176			/* Leaving vmas detached and in-tree may hamper recovery */
   177			reattach_vmas(mas_detach);
   178		} else {
   179			/* Clean up the insertion of unfortunate the gap */
   180			vms_complete_munmap_vmas(vms, mas_detach);
   181		}
   182	}
   183	
   184	int
   185	do_vmi_align_munmap(struct vma_iterator *vmi, struct vm_area_struct *vma,
   186			    struct mm_struct *mm, unsigned long start,
   187			    unsigned long end, struct list_head *uf, bool unlock);
   188	
   189	int do_vmi_munmap(struct vma_iterator *vmi, struct mm_struct *mm,
   190			  unsigned long start, size_t len, struct list_head *uf,
   191			  bool unlock);
   192	
   193	void remove_vma(struct vm_area_struct *vma, bool unreachable, bool closed);
   194	
   195	void unmap_region(struct ma_state *mas, struct vm_area_struct *vma,
   196			struct vm_area_struct *prev, struct vm_area_struct *next);
   197	
   198	/* Required by mmap_region(). */
   199	bool
   200	can_vma_merge_before(struct vm_area_struct *vma, unsigned long vm_flags,
   201			struct anon_vma *anon_vma, struct file *file,
   202			pgoff_t vm_pgoff, struct vm_userfaultfd_ctx vm_userfaultfd_ctx,
   203			struct anon_vma_name *anon_name);
   204	
   205	/* Required by mmap_region() and do_brk_flags(). */
   206	bool
   207	can_vma_merge_after(struct vm_area_struct *vma, unsigned long vm_flags,
   208			struct anon_vma *anon_vma, struct file *file,
   209			pgoff_t vm_pgoff, struct vm_userfaultfd_ctx vm_userfaultfd_ctx,
   210			struct anon_vma_name *anon_name);
   211	
   212	struct vm_area_struct *vma_modify(struct vma_iterator *vmi,
   213					  struct vm_area_struct *prev,
   214					  struct vm_area_struct *vma,
   215					  unsigned long start, unsigned long end,
   216					  unsigned long vm_flags,
   217					  struct mempolicy *policy,
   218					  struct vm_userfaultfd_ctx uffd_ctx,
   219					  struct anon_vma_name *anon_name);
   220	
   221	/* We are about to modify the VMA's flags. */
   222	static inline struct vm_area_struct
   223	*vma_modify_flags(struct vma_iterator *vmi,
   224			  struct vm_area_struct *prev,
   225			  struct vm_area_struct *vma,
   226			  unsigned long start, unsigned long end,
   227			  unsigned long new_flags)
   228	{
   229		return vma_modify(vmi, prev, vma, start, end, new_flags,
   230				  vma_policy(vma), vma->vm_userfaultfd_ctx,
   231				  anon_vma_name(vma));
   232	}
   233	
   234	/* We are about to modify the VMA's flags and/or anon_name. */
   235	static inline struct vm_area_struct
   236	*vma_modify_flags_name(struct vma_iterator *vmi,
   237			       struct vm_area_struct *prev,
   238			       struct vm_area_struct *vma,
   239			       unsigned long start,
   240			       unsigned long end,
   241			       unsigned long new_flags,
   242			       struct anon_vma_name *new_name)
   243	{
   244		return vma_modify(vmi, prev, vma, start, end, new_flags,
   245				  vma_policy(vma), vma->vm_userfaultfd_ctx, new_name);
   246	}
   247	
   248	/* We are about to modify the VMA's memory policy. */
   249	static inline struct vm_area_struct
   250	*vma_modify_policy(struct vma_iterator *vmi,
   251			   struct vm_area_struct *prev,
   252			   struct vm_area_struct *vma,
   253			   unsigned long start, unsigned long end,
   254			   struct mempolicy *new_pol)
   255	{
   256		return vma_modify(vmi, prev, vma, start, end, vma->vm_flags,
   257				  new_pol, vma->vm_userfaultfd_ctx, anon_vma_name(vma));
   258	}
   259	
   260	/* We are about to modify the VMA's flags and/or uffd context. */
   261	static inline struct vm_area_struct
   262	*vma_modify_flags_uffd(struct vma_iterator *vmi,
   263			       struct vm_area_struct *prev,
   264			       struct vm_area_struct *vma,
   265			       unsigned long start, unsigned long end,
   266			       unsigned long new_flags,
   267			       struct vm_userfaultfd_ctx new_ctx)
   268	{
   269		return vma_modify(vmi, prev, vma, start, end, new_flags,
   270				  vma_policy(vma), new_ctx, anon_vma_name(vma));
   271	}
   272	
   273	struct vm_area_struct
   274	*vma_merge_new_vma(struct vma_iterator *vmi, struct vm_area_struct *prev,
   275			   struct vm_area_struct *vma, unsigned long start,
   276			   unsigned long end, pgoff_t pgoff);
   277	
   278	struct vm_area_struct *vma_merge_extend(struct vma_iterator *vmi,
   279						struct vm_area_struct *vma,
   280						unsigned long delta);
   281	
   282	void unlink_file_vma_batch_init(struct unlink_vma_file_batch *vb);
   283	
   284	void unlink_file_vma_batch_final(struct unlink_vma_file_batch *vb);
   285	
   286	void unlink_file_vma_batch_add(struct unlink_vma_file_batch *vb,
   287				       struct vm_area_struct *vma);
   288	
   289	void unlink_file_vma(struct vm_area_struct *vma);
   290	
   291	void vma_link_file(struct vm_area_struct *vma);
   292	
   293	int vma_link(struct mm_struct *mm, struct vm_area_struct *vma);
   294	
   295	struct vm_area_struct *copy_vma(struct vm_area_struct **vmap,
   296		unsigned long addr, unsigned long len, pgoff_t pgoff,
   297		bool *need_rmap_locks);
   298	
   299	struct anon_vma *find_mergeable_anon_vma(struct vm_area_struct *vma);
   300	
   301	bool vma_needs_dirty_tracking(struct vm_area_struct *vma);
   302	bool vma_wants_writenotify(struct vm_area_struct *vma, pgprot_t vm_page_prot);
   303	
   304	int mm_take_all_locks(struct mm_struct *mm);
   305	void mm_drop_all_locks(struct mm_struct *mm);
   306	unsigned long count_vma_pages_range(struct mm_struct *mm,
   307					    unsigned long addr, unsigned long end,
   308					    unsigned long *nr_accounted);
   309	
   310	static inline bool vma_wants_manual_pte_write_upgrade(struct vm_area_struct *vma)
   311	{
   312		/*
   313		 * We want to check manually if we can change individual PTEs writable
   314		 * if we can't do that automatically for all PTEs in a mapping. For
   315		 * private mappings, that's always the case when we have write
   316		 * permissions as we properly have to handle COW.
   317		 */
   318		if (vma->vm_flags & VM_SHARED)
   319			return vma_wants_writenotify(vma, vma->vm_page_prot);
   320		return !!(vma->vm_flags & VM_WRITE);
   321	}
   322	
   323	#ifdef CONFIG_MMU
   324	static inline pgprot_t vm_pgprot_modify(pgprot_t oldprot, unsigned long vm_flags)
   325	{
   326		return pgprot_modify(oldprot, vm_get_page_prot(vm_flags));
   327	}
   328	#endif
   329	
   330	static inline struct vm_area_struct *vma_prev_limit(struct vma_iterator *vmi,
   331							    unsigned long min)
   332	{
   333		return mas_prev(&vmi->mas, min);
   334	}
   335	
 > 336	static inline int vma_iter_store_gfp(struct vma_iterator *vmi,
   337				struct vm_area_struct *vma, gfp_t gfp)
   338	{
   339		if (vmi->mas.status != ma_start &&
   340		    ((vmi->mas.index > vma->vm_start) || (vmi->mas.last < vma->vm_start)))
   341			vma_iter_invalidate(vmi);
   342	
   343		__mas_set_range(&vmi->mas, vma->vm_start, vma->vm_end - 1);
   344		mas_store_gfp(&vmi->mas, vma, gfp);
   345		if (unlikely(mas_is_err(&vmi->mas)))
   346			return -ENOMEM;
   347	
   348		return 0;
   349	}
   350	

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

                 reply	other threads:[~2024-08-30 20:26 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202408310422.VQwKBiSC-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=Liam.Howlett@oracle.com \
    --cc=akpm@linux-foundation.org \
    --cc=linux-mm@kvack.org \
    --cc=lorenzo.stoakes@oracle.com \
    --cc=oe-kbuild-all@lists.linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.