Re: [merged mm-hotfixes-stable] init-fix-allocated-page-overlapping-with-ptr_err.patch removed from -mm tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Apr 24, 2024 at 07:35:25PM -0700, Andrew Morton wrote:
> The quilt patch titled
>      Subject: init: fix allocated page overlapping with PTR_ERR
> has been removed from the -mm tree.  Its filename was
>      init-fix-allocated-page-overlapping-with-ptr_err.patch
> 
> This patch was dropped because it was merged into the mm-hotfixes-stable branch
> of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm

Please drop this patch. It causes a regression:
https://lore.kernel.org/r/202404221524.4954a009-oliver.sang@xxxxxxxxx/

Best regards,
Nam

> 
> ------------------------------------------------------
> From: Nam Cao <namcao@xxxxxxxxxxxxx>
> Subject: init: fix allocated page overlapping with PTR_ERR
> Date: Thu, 18 Apr 2024 12:29:43 +0200
> 
> There is nothing preventing kernel memory allocators from allocating a
> page that overlaps with PTR_ERR(), except for architecture-specific code
> that setup memblock.
> 
> It was discovered that RISCV architecture doesn't setup memblock corectly,
> leading to a page overlapping with PTR_ERR() being allocated, and
> subsequently crashing the kernel (link in Close: )
> 
> The reported crash has nothing to do with PTR_ERR(): the last page (at
> address 0xfffff000) being allocated leads to an unexpected arithmetic
> overflow in ext4; but still, this page shouldn't be allocated in the first
> place.
> 
> Because PTR_ERR() is an architecture-independent thing, we shouldn't ask
> every single architecture to set this up.  There may be other
> architectures beside RISCV that have the same problem.
> 
> Fix this once and for all by reserving the physical memory page that may
> be mapped to the last virtual memory page as part of low memory.
> 
> Unfortunately, this means if there is actual memory at this reserved
> location, that memory will become inaccessible.  However, if this page is
> not reserved, it can only be accessed as high memory, so this doesn't
> matter if high memory is not supported.  Even if high memory is supported,
> it is still only one page.
> 
> Closes: https://lore.kernel.org/linux-riscv/878r1ibpdn.fsf@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
> Link: https://lkml.kernel.org/r/20240418102943.180510-1-namcao@xxxxxxxxxxxxx
> Signed-off-by: Nam Cao <namcao@xxxxxxxxxxxxx>
> Reported-by: Björn Töpel <bjorn@xxxxxxxxxx>
> Tested-by: Björn Töpel <bjorn@xxxxxxxxxx>
> Reviewed-by: Mike Rapoport (IBM) <rppt@xxxxxxxxxx>
> Cc: Andreas Dilger <adilger@xxxxxxxxx>
> Cc: Arnd Bergmann <arnd@xxxxxxxx>
> Cc: Changbin Du <changbin.du@xxxxxxxxxx>
> Cc: Christophe Leroy <christophe.leroy@xxxxxxxxxx>
> Cc: Geert Uytterhoeven <geert+renesas@xxxxxxxxx>
> Cc: Ingo Molnar <mingo@xxxxxxxxxx>
> Cc: Krister Johansen <kjlx@xxxxxxxxxxxxxxxxxx>
> Cc: Luis Chamberlain <mcgrof@xxxxxxxxxx>
> Cc: Nick Desaulniers <ndesaulniers@xxxxxxxxxx>
> Cc: Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx>
> Cc: Tejun Heo <tj@xxxxxxxxxx>
> Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
> Cc: <stable@xxxxxxxxxxxxxxx>
> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
> ---
> 
>  init/main.c |    1 +
>  1 file changed, 1 insertion(+)
> 
> --- a/init/main.c~init-fix-allocated-page-overlapping-with-ptr_err
> +++ a/init/main.c
> @@ -900,6 +900,7 @@ void start_kernel(void)
>  	page_address_init();
>  	pr_notice("%s", linux_banner);
>  	early_security_init();
> +	memblock_reserve(__pa(-PAGE_SIZE), PAGE_SIZE); /* reserve last page for ERR_PTR */
>  	setup_arch(&command_line);
>  	setup_boot_config();
>  	setup_command_line(command_line);
> _
> 
> Patches currently in -mm which might be from namcao@xxxxxxxxxxxxx are
> 
> 




[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux