diff mbox series

mm.h: Fix "mm: Add temporary vma iterator versions of vma_merge(), split_vma(), and __split_vma()

Message ID 20230109205300.955019-1-Liam.Howlett@oracle.com (mailing list archive)
State New
Headers show
Series mm.h: Fix "mm: Add temporary vma iterator versions of vma_merge(), split_vma(), and __split_vma() | expand

Commit Message

Liam R. Howlett Jan. 9, 2023, 8:53 p.m. UTC
The extern definition of __split_vma() was removed too early.  Re-add it
and remove it once the users are all converted.

Reported-by: SeongJae Park <sj@kernel.org>
Signed-off-by: Liam R. Howlett <Liam.Howlett@oracle.com>
---
 include/linux/mm.h | 2 ++
 1 file changed, 2 insertions(+)

Comments

Andrew Morton Jan. 9, 2023, 11:15 p.m. UTC | #1
On Mon, 9 Jan 2023 20:53:22 +0000 Liam Howlett <liam.howlett@oracle.com> wrote:

> The extern definition of __split_vma() was removed too early.  Re-add it
> and remove it once the users are all converted.

I think I sorted this out.

__split_vma() can be made static to mmap.c?
Liam R. Howlett Jan. 10, 2023, 2:14 p.m. UTC | #2
* Andrew Morton <akpm@linux-foundation.org> [230109 18:15]:
> On Mon, 9 Jan 2023 20:53:22 +0000 Liam Howlett <liam.howlett@oracle.com> wrote:
> 
> > The extern definition of __split_vma() was removed too early.  Re-add it
> > and remove it once the users are all converted.
> 
> I think I sorted this out.
> 
> __split_vma() can be made static to mmap.c?

Ah, I don't think so?  SeongJae reported an issue that I caused by
dropping this definition from the header before mm/madvise.c was updated
to use the alternative.  I think it needs to be in the header and so it
should just probably be there until the function is dropped entirely
later in the series.
Sven Schnelle Jan. 10, 2023, 3:06 p.m. UTC | #3
Liam Howlett <liam.howlett@oracle.com> writes:

> * Andrew Morton <akpm@linux-foundation.org> [230109 18:15]:
>> On Mon, 9 Jan 2023 20:53:22 +0000 Liam Howlett <liam.howlett@oracle.com> wrote:
>> 
>> > The extern definition of __split_vma() was removed too early.  Re-add it
>> > and remove it once the users are all converted.
>> 
>> I think I sorted this out.
>> 
>> __split_vma() can be made static to mmap.c?
>
> Ah, I don't think so?  SeongJae reported an issue that I caused by
> dropping this definition from the header before mm/madvise.c was updated
> to use the alternative.  I think it needs to be in the header and so it
> should just probably be there until the function is dropped entirely
> later in the series.

FWIW, i encountered that issue while bisecting another maple tree issue
with next-20230110:

linux/mm/madvise.c: In function ‘madvise_update_vma’:
linux/mm/madvise.c:165:25: error: implicit declaration of function ‘__split_vma’; did you mean ‘split_vma’? [-Werror=implicit-function-declaration]
  165 |                 error = __split_vma(mm, vma, start, 1);
      |                         ^~~~~~~~~~~
      |                         split_vma
cc1: some warnings being treated as errors
make[3]: *** [linux/scripts/Makefile.build:252: mm/madvise.o] Error 1
make[2]: *** [linux/scripts/Makefile.build:504: mm] Error 2
make[1]: *** [linux/Makefile:2008: .] Error 2

Can we instead fix the original patch instead, so bisect works, or is
it too late?
diff mbox series

Patch

diff --git a/include/linux/mm.h b/include/linux/mm.h
index 9c790c88f691..14e3698fcbe7 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -2840,6 +2840,8 @@  extern struct vm_area_struct *vmi_vma_merge(struct vma_iterator *vmi,
 	struct file *, pgoff_t, struct mempolicy *, struct vm_userfaultfd_ctx,
 	struct anon_vma_name *);
 extern struct anon_vma *find_mergeable_anon_vma(struct vm_area_struct *);
+extern int __split_vma(struct mm_struct *, struct vm_area_struct *,
+			       unsigned long addr, int new_below);
 extern int vmi__split_vma(struct vma_iterator *vmi, struct mm_struct *,
 	struct vm_area_struct *, unsigned long addr, int new_below);
 extern int split_vma(struct mm_struct *, struct vm_area_struct *,