lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <c96ff5f1-bc4b-462d-96ab-3aaa73ea334a@kernel.org>
Date: Tue, 18 Nov 2025 08:32:46 +0100
From: "David Hildenbrand (Red Hat)" <david@...nel.org>
To: Ankur Arora <ankur.a.arora@...cle.com>, linux-kernel@...r.kernel.org,
 linux-mm@...ck.org, x86@...nel.org
Cc: akpm@...ux-foundation.org, bp@...en8.de, dave.hansen@...ux.intel.com,
 hpa@...or.com, mingo@...hat.com, mjguzik@...il.com, luto@...nel.org,
 peterz@...radead.org, acme@...nel.org, namhyung@...nel.org,
 tglx@...utronix.de, willy@...radead.org, raghavendra.kt@....com,
 boris.ostrovsky@...cle.com, konrad.wilk@...cle.com
Subject: Re: [PATCH v8 1/7] treewide: provide a generic clear_user_page()
 variant

On 27.10.25 21:21, Ankur Arora wrote:
> From: David Hildenbrand <david@...hat.com>
> 
> Let's drop all variants that effectively map to clear_page() and
> provide it in a generic variant instead.
> 
> We'll use __HAVE_ARCH_CLEAR_USER_PAGE, similar to
> __HAVE_ARCH_COPY_USER_HIGHPAGE, to indicate whether an architecture
> provides it's own variant.
> 
> We have to be a bit careful if an architecture provides a custom
> clear_user_highpage(), because then it's very likely that some special
> flushing magic is happening behind the scenes.
> 
> Maybe at some point these should be CONFIG_ options.
> 
> Note that for parisc, clear_page() and clear_user_page() map to
> clear_page_asm(), so we can just get rid of the custom clear_user_page()
> implementation. There is a clear_user_page_asm() function on parisc,
> that seems to be unused. Not sure what's up with that.
> 
> Signed-off-by: David Hildenbrand <david@...hat.com>
> ---
>   arch/alpha/include/asm/page.h      |  1 -
>   arch/arc/include/asm/page.h        |  2 ++
>   arch/arm/include/asm/page-nommu.h  |  1 -
>   arch/arm64/include/asm/page.h      |  1 -
>   arch/csky/abiv1/inc/abi/page.h     |  1 +
>   arch/csky/abiv2/inc/abi/page.h     |  7 -------
>   arch/hexagon/include/asm/page.h    |  1 -
>   arch/loongarch/include/asm/page.h  |  1 -
>   arch/m68k/include/asm/page_mm.h    |  1 +
>   arch/m68k/include/asm/page_no.h    |  1 -
>   arch/microblaze/include/asm/page.h |  1 -
>   arch/mips/include/asm/page.h       |  1 +
>   arch/nios2/include/asm/page.h      |  1 +
>   arch/openrisc/include/asm/page.h   |  1 -
>   arch/parisc/include/asm/page.h     |  1 -
>   arch/powerpc/include/asm/page.h    |  1 +
>   arch/riscv/include/asm/page.h      |  1 -
>   arch/s390/include/asm/page.h       |  1 -
>   arch/sparc/include/asm/page_32.h   |  2 ++
>   arch/sparc/include/asm/page_64.h   |  1 +
>   arch/um/include/asm/page.h         |  1 -
>   arch/x86/include/asm/page.h        |  6 ------
>   arch/xtensa/include/asm/page.h     |  1 -
>   include/linux/mm.h                 | 22 ++++++++++++++++++++++
>   24 files changed, 32 insertions(+), 26 deletions(-)
> 
> diff --git a/arch/alpha/include/asm/page.h b/arch/alpha/include/asm/page.h
> index 5ec4c77e432e..d71ef845deca 100644
> --- a/arch/alpha/include/asm/page.h
> +++ b/arch/alpha/include/asm/page.h
> @@ -11,7 +11,6 @@
>   #define STRICT_MM_TYPECHECKS
>   
>   extern void clear_page(void *page);
> -#define clear_user_page(page, vaddr, pg)	clear_page(page)
>   
>   #define vma_alloc_zeroed_movable_folio(vma, vaddr) \
>   	vma_alloc_folio(GFP_HIGHUSER_MOVABLE | __GFP_ZERO, 0, vma, vaddr)
> diff --git a/arch/arc/include/asm/page.h b/arch/arc/include/asm/page.h
> index 9720fe6b2c24..cb4d69b473e6 100644
> --- a/arch/arc/include/asm/page.h
> +++ b/arch/arc/include/asm/page.h
> @@ -32,6 +32,8 @@ struct page;
>   
>   void copy_user_highpage(struct page *to, struct page *from,
>   			unsigned long u_vaddr, struct vm_area_struct *vma);
> +
> +#define __HAVE_ARCH_CLEAR_USER_PAGE

After talking to Linus, the preferred way here is using

#define clear_user_page clear_user_page

Can you adjust the patch (+description) to avoid 
__HAVE_ARCH_CLEAR_USER_PAGE? If you want me to do it, just let me know.

-- 
Cheers

David

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ