From: Linus Walleij <linus.walleij@linaro.org> To: Geert Uytterhoeven <geert@linux-m68k.org>, Vineet Gupta <vgupta@kernel.org>, Catalin Marinas <catalin.marinas@arm.com>, Will Deacon <will@kernel.org>, Arnd Bergmann <arnd@arndb.de>, Russell King <linux@armlinux.org.uk>, Greg Ungerer <gerg@linux-m68k.org> Cc: linux-kernel@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-snps-arc@lists.infradead.org, linux-fsdevel@vger.kernel.org, linux-cifs@vger.kernel.org, samba-technical@lists.samba.org, linux-arm-kernel@lists.infradead.org, linux-arch@vger.kernel.org, Linus Walleij <linus.walleij@linaro.org> Subject: [PATCH 00/12] arch: Make virt_to_pfn into a static inline Date: Thu, 11 May 2023 13:59:17 +0200 [thread overview] Message-ID: <20230503-virt-to-pfn-v6-4-rc1-v1-0-6c4698dcf9c8@linaro.org> (raw) This is an attempt to harden the typing on virt_to_pfn() and pfn_to_virt(). Making virt_to_pfn() a static inline taking a strongly typed (const void *) makes the contract of a passing a pointer of that type to the function explicit and exposes any misuse of the macro virt_to_pfn() acting polymorphic and accepting many types such as (void *), (unitptr_t) or (unsigned long) as arguments without warnings. For symmetry, we do the same with pfn_to_virt(). The problem with this inconsistent typing was pointed out by Russell King: https://lore.kernel.org/linux-arm-kernel/YoJDKJXc0MJ2QZTb@shell.armlinux.org.uk/ And confirmed by Andrew Morton: https://lore.kernel.org/linux-mm/20220701160004.2ffff4e5ab59a55499f4c736@linux-foundation.org/ So the recognition of the problem is widespread. These platforms have been chosen as initial conversion targets: - ARC - ARM - ARM64/Aarch64 - asm-generic (including for example x86) - m68k The idea is that if this goes in, it will block further misuse of the function signatures due to the large compile coverage, and then I can go in and fix the remaining platforms on a one-by-one basis. Some of the patches have been circulated before but were not picked up by subsystem maintainers, so now the arch tree is target for this series. It has passed zeroday builds after a lot of iterations in my personal tree, but there could be some randconfig outliers. The To/Cc list would be too long if I include all the minor patches maintainers, so I have trimmed it down to the mailing lists since these people certainly have received the patches before. Signed-off-by: Linus Walleij <linus.walleij@linaro.org> --- Linus Walleij (12): fs/proc/kcore.c: Pass a pointer to virt_addr_valid() m68k: Pass a pointer to virt_to_pfn() virt_to_page() ARC: init: Pass a pointer to virt_to_pfn() in init riscv: mm: init: Pass a pointer to virt_to_page() cifs: Pass a pointer to virt_to_page() cifs: Pass a pointer to virt_to_page() in cifsglob netfs: Pass a pointer to virt_to_page() arm64: vdso: Pass (void *) to virt_to_page() asm-generic/page.h: Make pfn accessors static inlines ARM: mm: Make virt_to_pfn() a static inline arm64: memory: Make virt_to_pfn() a static inline m68k/mm: Make pfn accessors static inlines arch/arc/mm/init.c | 2 +- arch/arm/common/sharpsl_param.c | 2 +- arch/arm/include/asm/delay.h | 2 +- arch/arm/include/asm/io.h | 2 +- arch/arm/include/asm/memory.h | 17 ++++++++++++----- arch/arm/include/asm/page.h | 4 ++-- arch/arm/include/asm/pgtable.h | 2 +- arch/arm/include/asm/proc-fns.h | 2 -- arch/arm/include/asm/sparsemem.h | 2 +- arch/arm/include/asm/uaccess-asm.h | 2 +- arch/arm/include/asm/uaccess.h | 2 +- arch/arm/kernel/asm-offsets.c | 2 +- arch/arm/kernel/entry-armv.S | 2 +- arch/arm/kernel/entry-common.S | 2 +- arch/arm/kernel/entry-v7m.S | 2 +- arch/arm/kernel/head-nommu.S | 3 +-- arch/arm/kernel/head.S | 2 +- arch/arm/kernel/hibernate.c | 2 +- arch/arm/kernel/suspend.c | 2 +- arch/arm/kernel/tcm.c | 2 +- arch/arm/kernel/vmlinux-xip.lds.S | 3 +-- arch/arm/kernel/vmlinux.lds.S | 3 +-- arch/arm/mach-berlin/platsmp.c | 2 +- arch/arm/mach-keystone/keystone.c | 2 +- arch/arm/mach-omap2/sleep33xx.S | 2 +- arch/arm/mach-omap2/sleep43xx.S | 2 +- arch/arm/mach-omap2/sleep44xx.S | 2 +- arch/arm/mach-pxa/gumstix.c | 2 +- arch/arm/mach-rockchip/sleep.S | 2 +- arch/arm/mach-sa1100/pm.c | 2 +- arch/arm/mach-shmobile/headsmp-scu.S | 2 +- arch/arm/mach-shmobile/headsmp.S | 2 +- arch/arm/mach-socfpga/headsmp.S | 2 +- arch/arm/mach-spear/spear.h | 2 +- arch/arm/mm/cache-fa.S | 1 - arch/arm/mm/cache-v4wb.S | 1 - arch/arm/mm/dma-mapping.c | 2 +- arch/arm/mm/dump.c | 2 +- arch/arm/mm/init.c | 2 +- arch/arm/mm/kasan_init.c | 1 - arch/arm/mm/mmu.c | 2 +- arch/arm/mm/physaddr.c | 2 +- arch/arm/mm/pmsa-v8.c | 2 +- arch/arm/mm/proc-v7.S | 2 +- arch/arm/mm/proc-v7m.S | 2 +- arch/arm/mm/pv-fixup-asm.S | 2 +- arch/arm64/include/asm/memory.h | 9 ++++++++- arch/arm64/kernel/vdso.c | 2 +- arch/m68k/include/asm/page_mm.h | 11 +++++++++-- arch/m68k/include/asm/page_no.h | 11 +++++++++-- arch/m68k/mm/motorola.c | 4 ++-- arch/m68k/mm/sun3mmu.c | 2 +- arch/m68k/sun3/dvma.c | 2 +- arch/m68k/sun3x/dvma.c | 2 +- arch/riscv/mm/init.c | 4 ++-- drivers/memory/ti-emif-sram-pm.S | 2 +- fs/cifs/cifsglob.h | 2 +- fs/cifs/smbdirect.c | 2 +- fs/netfs/iterator.c | 2 +- fs/proc/kcore.c | 2 +- include/asm-generic/page.h | 12 ++++++++++-- 61 files changed, 103 insertions(+), 75 deletions(-) --- base-commit: ac9a78681b921877518763ba0e89202254349d1b change-id: 20230503-virt-to-pfn-v6-4-rc1-4f5739e8d60d Best regards, -- Linus Walleij <linus.walleij@linaro.org>
WARNING: multiple messages have this Message-ID (diff)
From: Linus Walleij <linus.walleij@linaro.org> To: Geert Uytterhoeven <geert@linux-m68k.org>, Vineet Gupta <vgupta@kernel.org>, Catalin Marinas <catalin.marinas@arm.com>, Will Deacon <will@kernel.org>, Arnd Bergmann <arnd@arndb.de>, Russell King <linux@armlinux.org.uk>, Greg Ungerer <gerg@linux-m68k.org> Cc: linux-kernel@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-snps-arc@lists.infradead.org, linux-fsdevel@vger.kernel.org, linux-cifs@vger.kernel.org, samba-technical@lists.samba.org, linux-arm-kernel@lists.infradead.org, linux-arch@vger.kernel.org, Linus Walleij <linus.walleij@linaro.org> Subject: [PATCH 00/12] arch: Make virt_to_pfn into a static inline Date: Thu, 11 May 2023 13:59:17 +0200 [thread overview] Message-ID: <20230503-virt-to-pfn-v6-4-rc1-v1-0-6c4698dcf9c8@linaro.org> (raw) This is an attempt to harden the typing on virt_to_pfn() and pfn_to_virt(). Making virt_to_pfn() a static inline taking a strongly typed (const void *) makes the contract of a passing a pointer of that type to the function explicit and exposes any misuse of the macro virt_to_pfn() acting polymorphic and accepting many types such as (void *), (unitptr_t) or (unsigned long) as arguments without warnings. For symmetry, we do the same with pfn_to_virt(). The problem with this inconsistent typing was pointed out by Russell King: https://lore.kernel.org/linux-arm-kernel/YoJDKJXc0MJ2QZTb@shell.armlinux.org.uk/ And confirmed by Andrew Morton: https://lore.kernel.org/linux-mm/20220701160004.2ffff4e5ab59a55499f4c736@linux-foundation.org/ So the recognition of the problem is widespread. These platforms have been chosen as initial conversion targets: - ARC - ARM - ARM64/Aarch64 - asm-generic (including for example x86) - m68k The idea is that if this goes in, it will block further misuse of the function signatures due to the large compile coverage, and then I can go in and fix the remaining platforms on a one-by-one basis. Some of the patches have been circulated before but were not picked up by subsystem maintainers, so now the arch tree is target for this series. It has passed zeroday builds after a lot of iterations in my personal tree, but there could be some randconfig outliers. The To/Cc list would be too long if I include all the minor patches maintainers, so I have trimmed it down to the mailing lists since these people certainly have received the patches before. Signed-off-by: Linus Walleij <linus.walleij@linaro.org> --- Linus Walleij (12): fs/proc/kcore.c: Pass a pointer to virt_addr_valid() m68k: Pass a pointer to virt_to_pfn() virt_to_page() ARC: init: Pass a pointer to virt_to_pfn() in init riscv: mm: init: Pass a pointer to virt_to_page() cifs: Pass a pointer to virt_to_page() cifs: Pass a pointer to virt_to_page() in cifsglob netfs: Pass a pointer to virt_to_page() arm64: vdso: Pass (void *) to virt_to_page() asm-generic/page.h: Make pfn accessors static inlines ARM: mm: Make virt_to_pfn() a static inline arm64: memory: Make virt_to_pfn() a static inline m68k/mm: Make pfn accessors static inlines arch/arc/mm/init.c | 2 +- arch/arm/common/sharpsl_param.c | 2 +- arch/arm/include/asm/delay.h | 2 +- arch/arm/include/asm/io.h | 2 +- arch/arm/include/asm/memory.h | 17 ++++++++++++----- arch/arm/include/asm/page.h | 4 ++-- arch/arm/include/asm/pgtable.h | 2 +- arch/arm/include/asm/proc-fns.h | 2 -- arch/arm/include/asm/sparsemem.h | 2 +- arch/arm/include/asm/uaccess-asm.h | 2 +- arch/arm/include/asm/uaccess.h | 2 +- arch/arm/kernel/asm-offsets.c | 2 +- arch/arm/kernel/entry-armv.S | 2 +- arch/arm/kernel/entry-common.S | 2 +- arch/arm/kernel/entry-v7m.S | 2 +- arch/arm/kernel/head-nommu.S | 3 +-- arch/arm/kernel/head.S | 2 +- arch/arm/kernel/hibernate.c | 2 +- arch/arm/kernel/suspend.c | 2 +- arch/arm/kernel/tcm.c | 2 +- arch/arm/kernel/vmlinux-xip.lds.S | 3 +-- arch/arm/kernel/vmlinux.lds.S | 3 +-- arch/arm/mach-berlin/platsmp.c | 2 +- arch/arm/mach-keystone/keystone.c | 2 +- arch/arm/mach-omap2/sleep33xx.S | 2 +- arch/arm/mach-omap2/sleep43xx.S | 2 +- arch/arm/mach-omap2/sleep44xx.S | 2 +- arch/arm/mach-pxa/gumstix.c | 2 +- arch/arm/mach-rockchip/sleep.S | 2 +- arch/arm/mach-sa1100/pm.c | 2 +- arch/arm/mach-shmobile/headsmp-scu.S | 2 +- arch/arm/mach-shmobile/headsmp.S | 2 +- arch/arm/mach-socfpga/headsmp.S | 2 +- arch/arm/mach-spear/spear.h | 2 +- arch/arm/mm/cache-fa.S | 1 - arch/arm/mm/cache-v4wb.S | 1 - arch/arm/mm/dma-mapping.c | 2 +- arch/arm/mm/dump.c | 2 +- arch/arm/mm/init.c | 2 +- arch/arm/mm/kasan_init.c | 1 - arch/arm/mm/mmu.c | 2 +- arch/arm/mm/physaddr.c | 2 +- arch/arm/mm/pmsa-v8.c | 2 +- arch/arm/mm/proc-v7.S | 2 +- arch/arm/mm/proc-v7m.S | 2 +- arch/arm/mm/pv-fixup-asm.S | 2 +- arch/arm64/include/asm/memory.h | 9 ++++++++- arch/arm64/kernel/vdso.c | 2 +- arch/m68k/include/asm/page_mm.h | 11 +++++++++-- arch/m68k/include/asm/page_no.h | 11 +++++++++-- arch/m68k/mm/motorola.c | 4 ++-- arch/m68k/mm/sun3mmu.c | 2 +- arch/m68k/sun3/dvma.c | 2 +- arch/m68k/sun3x/dvma.c | 2 +- arch/riscv/mm/init.c | 4 ++-- drivers/memory/ti-emif-sram-pm.S | 2 +- fs/cifs/cifsglob.h | 2 +- fs/cifs/smbdirect.c | 2 +- fs/netfs/iterator.c | 2 +- fs/proc/kcore.c | 2 +- include/asm-generic/page.h | 12 ++++++++++-- 61 files changed, 103 insertions(+), 75 deletions(-) --- base-commit: ac9a78681b921877518763ba0e89202254349d1b change-id: 20230503-virt-to-pfn-v6-4-rc1-4f5739e8d60d Best regards, -- Linus Walleij <linus.walleij@linaro.org> _______________________________________________ linux-snps-arc mailing list linux-snps-arc@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-snps-arc
next reply other threads:[~2023-05-11 11:59 UTC|newest] Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top 2023-05-11 11:59 Linus Walleij [this message] 2023-05-11 11:59 ` [PATCH 00/12] arch: Make virt_to_pfn into a static inline Linus Walleij 2023-05-11 11:59 ` [PATCH 01/12] fs/proc/kcore.c: Pass a pointer to virt_addr_valid() Linus Walleij 2023-05-11 11:59 ` Linus Walleij 2023-05-11 11:59 ` [PATCH 02/12] m68k: Pass a pointer to virt_to_pfn() virt_to_page() Linus Walleij 2023-05-11 11:59 ` Linus Walleij 2023-05-12 9:55 ` Geert Uytterhoeven 2023-05-12 9:55 ` Geert Uytterhoeven 2023-05-12 10:26 ` Geert Uytterhoeven 2023-05-12 10:26 ` Geert Uytterhoeven 2023-05-16 9:18 ` Linus Walleij 2023-05-16 9:18 ` Linus Walleij 2023-05-16 9:18 ` Linus Walleij 2023-05-11 11:59 ` [PATCH 03/12] ARC: init: Pass a pointer to virt_to_pfn() in init Linus Walleij 2023-05-11 11:59 ` Linus Walleij 2023-05-11 11:59 ` [PATCH 04/12] riscv: mm: init: Pass a pointer to virt_to_page() Linus Walleij 2023-05-11 11:59 ` Linus Walleij 2023-05-12 8:56 ` Alexandre Ghiti 2023-05-12 8:56 ` Alexandre Ghiti 2023-05-12 8:56 ` Alexandre Ghiti 2023-05-11 11:59 ` [PATCH 05/12] cifs: " Linus Walleij 2023-05-11 11:59 ` Linus Walleij 2023-05-17 14:00 ` Tom Talpey 2023-05-17 14:00 ` Tom Talpey 2023-05-17 14:00 ` Tom Talpey 2023-05-11 11:59 ` [PATCH 06/12] cifs: Pass a pointer to virt_to_page() in cifsglob Linus Walleij 2023-05-11 11:59 ` Linus Walleij 2023-05-17 14:01 ` Tom Talpey 2023-05-17 14:01 ` Tom Talpey 2023-05-17 14:01 ` Tom Talpey 2023-05-11 11:59 ` [PATCH 07/12] netfs: Pass a pointer to virt_to_page() Linus Walleij 2023-05-11 11:59 ` Linus Walleij 2023-05-11 11:59 ` [PATCH 08/12] arm64: vdso: Pass (void *) " Linus Walleij 2023-05-11 11:59 ` Linus Walleij 2023-05-12 10:43 ` Catalin Marinas 2023-05-12 10:43 ` Catalin Marinas 2023-05-11 11:59 ` [PATCH 09/12] asm-generic/page.h: Make pfn accessors static inlines Linus Walleij 2023-05-11 11:59 ` Linus Walleij 2023-05-11 11:59 ` [PATCH 10/12] ARM: mm: Make virt_to_pfn() a static inline Linus Walleij 2023-05-11 11:59 ` Linus Walleij 2023-05-11 11:59 ` [PATCH 11/12] arm64: memory: " Linus Walleij 2023-05-11 11:59 ` Linus Walleij 2023-05-12 10:44 ` Catalin Marinas 2023-05-12 10:44 ` Catalin Marinas 2023-05-11 11:59 ` [PATCH 12/12] m68k/mm: Make pfn accessors static inlines Linus Walleij 2023-05-11 11:59 ` Linus Walleij 2023-05-15 23:06 ` kernel test robot 2023-05-12 9:57 ` [PATCH 00/12] arch: Make virt_to_pfn into a static inline Geert Uytterhoeven 2023-05-12 9:57 ` Geert Uytterhoeven
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20230503-virt-to-pfn-v6-4-rc1-v1-0-6c4698dcf9c8@linaro.org \ --to=linus.walleij@linaro.org \ --cc=arnd@arndb.de \ --cc=catalin.marinas@arm.com \ --cc=geert@linux-m68k.org \ --cc=gerg@linux-m68k.org \ --cc=linux-arch@vger.kernel.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-cifs@vger.kernel.org \ --cc=linux-fsdevel@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-m68k@lists.linux-m68k.org \ --cc=linux-snps-arc@lists.infradead.org \ --cc=linux@armlinux.org.uk \ --cc=samba-technical@lists.samba.org \ --cc=vgupta@kernel.org \ --cc=will@kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.