Re: [PATCH] mm: fix extend calculation for move_page_tables()

From: Andrew Morton
Date: Tue Dec 29 2020 - 14:05:00 EST


On Tue, 29 Dec 2020 18:45:29 +0100 Helge Deller <deller@xxxxxx> wrote:

> On parisc the kernel fails to start the init process because in
> shift_arg_pages() in fs/exec.c, move_page_tables() is called to e.g.
> move pages from start addr 0xffeff000 to the new start addr 0xf9ccb000
> with a length of 0x1000 bytes, but move_page_tables() instead returns
> that it apparently moved 0x57000 bytes. Since the number of bytes is
> different than the number of bytes which should have been moved,
> shift_arg_pages() aborts with -ENOMEM.
>
> Debugging shows that commit c49dd34018026 ("mm: speedup mremap on
> 1GB or larger regions") is the culprit.
> In this commit, the extent calculation was tried to be optimized, but
> got it wrong for this case.
> The patch below reverts to the previous way to calculate the extent and
> thus fixes the boot problem.
>

Thanks. The same as
https://lkml.kernel.org/r/20201219170433.2418867-1-kaleshsingh@xxxxxxxxxx.
I'll get that sent to Linus today.