2023-01-09 21:09:40

by Liam R. Howlett

[permalink] [raw]
Subject: [PATCH] mm.h: Fix "mm: Add temporary vma iterator versions of vma_merge(), split_vma(), and __split_vma()

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 <[email protected]>
Signed-off-by: Liam R. Howlett <[email protected]>
---
include/linux/mm.h | 2 ++
1 file changed, 2 insertions(+)

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 *,
--
2.35.1


2023-01-09 23:37:43

by Andrew Morton

[permalink] [raw]
Subject: Re: [PATCH] mm.h: Fix "mm: Add temporary vma iterator versions of vma_merge(), split_vma(), and __split_vma()

On Mon, 9 Jan 2023 20:53:22 +0000 Liam Howlett <[email protected]> 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?

2023-01-10 14:58:30

by Liam R. Howlett

[permalink] [raw]
Subject: Re: [PATCH] mm.h: Fix "mm: Add temporary vma iterator versions of vma_merge(), split_vma(), and __split_vma()

* Andrew Morton <[email protected]> [230109 18:15]:
> On Mon, 9 Jan 2023 20:53:22 +0000 Liam Howlett <[email protected]> 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.

2023-01-10 15:34:37

by Sven Schnelle

[permalink] [raw]
Subject: Re: [PATCH] mm.h: Fix "mm: Add temporary vma iterator versions of vma_merge(), split_vma(), and __split_vma()

Liam Howlett <[email protected]> writes:

> * Andrew Morton <[email protected]> [230109 18:15]:
>> On Mon, 9 Jan 2023 20:53:22 +0000 Liam Howlett <[email protected]> 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?