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
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?
* 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.
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?