From: "Russell King (Oracle)" <linux@armlinux.org.uk>
To: Keith Packard <keithp@keithp.com>
Cc: linux-kernel@vger.kernel.org,
"Abbott Liu" <liuwenliang@huawei.com>,
"Alexander Sverdlin" <alexander.sverdlin@gmail.com>,
"Al Viro" <viro@zeniv.linux.org.uk>,
"Andrew Morton" <akpm@linux-foundation.org>,
"Anshuman Khandual" <anshuman.khandual@arm.com>,
"Ard Biesheuvel" <ardb@kernel.org>,
"Arnd Bergmann" <arnd@arndb.de>,
"Bjorn Andersson" <bjorn.andersson@linaro.org>,
"Florian Fainelli" <f.fainelli@gmail.com>,
"Geert Uytterhoeven" <geert+renesas@glider.be>,
"Hartley Sweeten" <hsweeten@visionengravers.com>,
"Jens Axboe" <axboe@kernel.dk>, "Jian Cai" <jiancai@google.com>,
"Joe Perches" <joe@perches.com>,
"Linus Walleij" <linus.walleij@linaro.org>,
linux-arm-kernel@lists.infradead.org,
"Maninder Singh" <maninder1.s@samsung.com>,
"Manivannan Sadhasivam" <mani@kernel.org>,
"Marc Zyngier" <maz@kernel.org>,
"Masahiro Yamada" <masahiroy@kernel.org>,
"Mike Rapoport" <rppt@kernel.org>,
"Nick Desaulniers" <ndesaulniers@google.com>,
"Nick Desaulniers" <ndesaulniers@gooogle.com>,
"Nicolas Pitre" <nico@fluxnic.net>,
"Peter Zijlstra" <peterz@infradead.org>,
"Thomas Gleixner" <tglx@linutronix.de>,
"Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>,
"Valentin Schneider" <valentin.schneider@arm.com>,
"Vaneet Narang" <v.narang@samsung.com>,
"Wolfram Sang (Renesas)" <wsa+renesas@sang-engineering.com>,
"YiFei Zhu" <yifeifz2@illinois.edu>,
"Keith Packard" <keithpac@amazon.com>
Subject: Re: [PATCH 0/2]: ARM: Enable THREAD_INFO_IN_TASK
Date: Thu, 2 Sep 2021 17:53:53 +0100 [thread overview]
Message-ID: <20210902165353.GI22278@shell.armlinux.org.uk> (raw)
In-Reply-To: <20210902155429.3987201-1-keithp@keithp.com>
On Thu, Sep 02, 2021 at 08:54:26AM -0700, Keith Packard wrote:
> Placing thread_info in the kernel stack leaves it vulnerable to stack
> overflow attacks. This short series addresses that by using the
> existing THREAD_INFO_IN_TASK infrastructure.
>
> As this is my first patch in this part of the kernel, I'm looking for
> feedback about the general approach as well as specific comments on
> places where I've missed something.
>
> I've only run this on armhf running under qemu, so while I've tried to
> make patches for other code paths, I haven't been able to test those.
>
> (yes, I know checkpatch.pl complains about whitespace in asm-offsets.c, I
> decided to leave the existing whitespace alone)
>
> Signed-off-by: Keith Packard <keithpac@amazon.com>
I think you're introducing a circular dependency with this for
certain kernel configurations:
E.g. Have you tried running this with CONFIG_CPU_V6 enabled?
+#define raw_smp_processor_id() this_cpu_read(cpu_number)
+#define __smp_processor_id() __this_cpu_read(cpu_number)
+
+DECLARE_PER_CPU_READ_MOSTLY(unsigned int, cpu_number);
this_cpu_read() is defined as:
#define this_cpu_read(pcp) __pcpu_size_call_return(this_cpu_read_, pcp)
(which will call this_cpu_read_4)
#define this_cpu_read_4(pcp) this_cpu_generic_read(pcp)
=> __this_cpu_generic_read_nopreempt()
=> ___ret = READ_ONCE(*raw_cpu_ptr(&(pcp)));
#define raw_cpu_ptr(ptr) \
({ \
__verify_pcpu_ptr(ptr); \
arch_raw_cpu_ptr(ptr); \
})
#ifndef arch_raw_cpu_ptr
#define arch_raw_cpu_ptr(ptr) SHIFT_PERCPU_PTR(ptr, __my_cpu_offset)
#endif
#ifndef __my_cpu_offset
#define __my_cpu_offset per_cpu_offset(raw_smp_processor_id())
#endif
... which then leads back to a use of raw_smp_processor_id(), thereby
creating a circular loop of preprocessor definitions that the compiler
can't resolve.
--
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last!
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
WARNING: multiple messages have this Message-ID (diff)
From: "Russell King (Oracle)" <linux@armlinux.org.uk>
To: Keith Packard <keithp@keithp.com>
Cc: linux-kernel@vger.kernel.org,
"Abbott Liu" <liuwenliang@huawei.com>,
"Alexander Sverdlin" <alexander.sverdlin@gmail.com>,
"Al Viro" <viro@zeniv.linux.org.uk>,
"Andrew Morton" <akpm@linux-foundation.org>,
"Anshuman Khandual" <anshuman.khandual@arm.com>,
"Ard Biesheuvel" <ardb@kernel.org>,
"Arnd Bergmann" <arnd@arndb.de>,
"Bjorn Andersson" <bjorn.andersson@linaro.org>,
"Florian Fainelli" <f.fainelli@gmail.com>,
"Geert Uytterhoeven" <geert+renesas@glider.be>,
"Hartley Sweeten" <hsweeten@visionengravers.com>,
"Jens Axboe" <axboe@kernel.dk>, "Jian Cai" <jiancai@google.com>,
"Joe Perches" <joe@perches.com>,
"Linus Walleij" <linus.walleij@linaro.org>,
linux-arm-kernel@lists.infradead.org,
"Maninder Singh" <maninder1.s@samsung.com>,
"Manivannan Sadhasivam" <mani@kernel.org>,
"Marc Zyngier" <maz@kernel.org>,
"Masahiro Yamada" <masahiroy@kernel.org>,
"Mike Rapoport" <rppt@kernel.org>,
"Nick Desaulniers" <ndesaulniers@google.com>,
"Nick Desaulniers" <ndesaulniers@gooogle.com>,
"Nicolas Pitre" <nico@fluxnic.net>,
"Peter Zijlstra" <peterz@infradead.org>,
"Thomas Gleixner" <tglx@linutronix.de>,
"Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>,
"Valentin Schneider" <valentin.schneider@arm.com>,
"Vaneet Narang" <v.narang@samsung.com>,
"Wolfram Sang (Renesas)" <wsa+renesas@sang-engineering.com>,
"YiFei Zhu" <yifeifz2@illinois.edu>,
"Keith Packard" <keithpac@amazon.com>
Subject: Re: [PATCH 0/2]: ARM: Enable THREAD_INFO_IN_TASK
Date: Thu, 2 Sep 2021 17:53:53 +0100 [thread overview]
Message-ID: <20210902165353.GI22278@shell.armlinux.org.uk> (raw)
In-Reply-To: <20210902155429.3987201-1-keithp@keithp.com>
On Thu, Sep 02, 2021 at 08:54:26AM -0700, Keith Packard wrote:
> Placing thread_info in the kernel stack leaves it vulnerable to stack
> overflow attacks. This short series addresses that by using the
> existing THREAD_INFO_IN_TASK infrastructure.
>
> As this is my first patch in this part of the kernel, I'm looking for
> feedback about the general approach as well as specific comments on
> places where I've missed something.
>
> I've only run this on armhf running under qemu, so while I've tried to
> make patches for other code paths, I haven't been able to test those.
>
> (yes, I know checkpatch.pl complains about whitespace in asm-offsets.c, I
> decided to leave the existing whitespace alone)
>
> Signed-off-by: Keith Packard <keithpac@amazon.com>
I think you're introducing a circular dependency with this for
certain kernel configurations:
E.g. Have you tried running this with CONFIG_CPU_V6 enabled?
+#define raw_smp_processor_id() this_cpu_read(cpu_number)
+#define __smp_processor_id() __this_cpu_read(cpu_number)
+
+DECLARE_PER_CPU_READ_MOSTLY(unsigned int, cpu_number);
this_cpu_read() is defined as:
#define this_cpu_read(pcp) __pcpu_size_call_return(this_cpu_read_, pcp)
(which will call this_cpu_read_4)
#define this_cpu_read_4(pcp) this_cpu_generic_read(pcp)
=> __this_cpu_generic_read_nopreempt()
=> ___ret = READ_ONCE(*raw_cpu_ptr(&(pcp)));
#define raw_cpu_ptr(ptr) \
({ \
__verify_pcpu_ptr(ptr); \
arch_raw_cpu_ptr(ptr); \
})
#ifndef arch_raw_cpu_ptr
#define arch_raw_cpu_ptr(ptr) SHIFT_PERCPU_PTR(ptr, __my_cpu_offset)
#endif
#ifndef __my_cpu_offset
#define __my_cpu_offset per_cpu_offset(raw_smp_processor_id())
#endif
... which then leads back to a use of raw_smp_processor_id(), thereby
creating a circular loop of preprocessor definitions that the compiler
can't resolve.
--
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last!
next prev parent reply other threads:[~2021-09-02 16:56 UTC|newest]
Thread overview: 72+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-09-02 15:54 [PATCH 0/2]: ARM: Enable THREAD_INFO_IN_TASK Keith Packard
2021-09-02 15:54 ` Keith Packard
2021-09-02 15:54 ` [PATCH 1/2] ARM: Add per-cpu variable holding cpu number Keith Packard
2021-09-02 15:54 ` Keith Packard
2021-09-02 15:54 ` [PATCH 2/2] ARM: Move thread_info into task_struct Keith Packard
2021-09-02 15:54 ` Keith Packard
2021-09-02 16:07 ` [PATCH 0/2]: ARM: Enable THREAD_INFO_IN_TASK Kees Cook
2021-09-02 16:07 ` Kees Cook
2021-09-02 16:18 ` Ard Biesheuvel
2021-09-02 16:18 ` Ard Biesheuvel
2021-09-02 17:37 ` Kees Cook
2021-09-02 17:37 ` Kees Cook
2021-09-02 16:54 ` Russell King (Oracle)
2021-09-02 16:54 ` Russell King (Oracle)
2021-09-02 16:53 ` Russell King (Oracle) [this message]
2021-09-02 16:53 ` Russell King (Oracle)
2021-09-02 17:35 ` Kees Cook
2021-09-02 17:35 ` Kees Cook
2021-09-02 17:58 ` Keith Packard
2021-09-02 17:58 ` Keith Packard
2021-09-04 6:09 ` [PATCH 0/2] ARM: support THREAD_INFO_IN_TASK (v7 only) (v2) Keith Packard
2021-09-04 6:09 ` Keith Packard
2021-09-04 6:09 ` [PATCH 1/3] ARM: Pass cpu number to secondary_start_kernel Keith Packard
2021-09-04 6:09 ` Keith Packard
2021-09-05 20:25 ` Ard Biesheuvel
2021-09-05 20:25 ` Ard Biesheuvel
2021-09-04 6:09 ` [PATCH 2/3] ARM: Move thread_info into task_struct (v7 only) Keith Packard
2021-09-04 6:09 ` Keith Packard
2021-09-05 20:56 ` Ard Biesheuvel
2021-09-05 20:56 ` Ard Biesheuvel
2021-09-06 6:14 ` Keith Packard
2021-09-06 6:14 ` Keith Packard
2021-09-06 7:49 ` Ard Biesheuvel
2021-09-06 7:49 ` Ard Biesheuvel
2021-09-07 15:24 ` Keith Packard
2021-09-07 15:24 ` Keith Packard
2021-09-07 16:05 ` Ard Biesheuvel
2021-09-07 16:05 ` Ard Biesheuvel
2021-09-07 22:17 ` Keith Packard
2021-09-07 22:17 ` Keith Packard
2021-09-06 6:20 ` Keith Packard
2021-09-06 6:20 ` Keith Packard
2021-09-04 6:09 ` [PATCH 3/3] ARM: Add per-cpu variable cpu_number " Keith Packard
2021-09-04 6:09 ` Keith Packard
2021-09-07 22:00 ` [PATCH 0/7] ARM: support THREAD_INFO_IN_TASK (v3) Keith Packard
2021-09-07 22:00 ` Keith Packard
2021-09-07 22:00 ` [PATCH 1/7] ARM: Pass cpu number to secondary_start_kernel Keith Packard
2021-09-07 22:00 ` Keith Packard
2021-09-07 22:00 ` [PATCH 2/7] ARM: Pass task " Keith Packard
2021-09-07 22:00 ` Keith Packard
2021-09-07 22:00 ` [PATCH 3/7] ARM: Use smp_processor_id() in vfp_pm_suspend instead of ti->cpu Keith Packard
2021-09-07 22:00 ` Keith Packard
2021-09-07 22:00 ` [PATCH 4/7] ARM: Use hack from powerpc to get current cpu number Keith Packard
2021-09-07 22:00 ` Keith Packard
2021-09-08 7:45 ` Ard Biesheuvel
2021-09-08 7:45 ` Ard Biesheuvel
2021-09-07 22:00 ` [PATCH 5/7] ARM: Stop using TPIDRPRW to hold per_cpu_offset Keith Packard
2021-09-07 22:00 ` Keith Packard
2021-09-09 13:54 ` Ard Biesheuvel
2021-09-09 13:54 ` Ard Biesheuvel
2021-09-07 22:00 ` [PATCH 6/7] ARM: Use TPIDRPRW for current Keith Packard
2021-09-07 22:00 ` Keith Packard
2021-09-09 13:56 ` Ard Biesheuvel
2021-09-09 13:56 ` Ard Biesheuvel
2021-09-07 22:00 ` [PATCH 7/7] ARM: Move thread_info into task_struct (v7 only) Keith Packard
2021-09-07 22:00 ` Keith Packard
2021-09-08 7:01 ` [PATCH 0/7] ARM: support THREAD_INFO_IN_TASK (v3) Krzysztof Kozlowski
2021-09-08 7:01 ` Krzysztof Kozlowski
2021-09-08 7:47 ` Ard Biesheuvel
2021-09-08 7:47 ` Ard Biesheuvel
2021-09-08 7:50 ` Geert Uytterhoeven
2021-09-08 7:50 ` 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=20210902165353.GI22278@shell.armlinux.org.uk \
--to=linux@armlinux.org.uk \
--cc=akpm@linux-foundation.org \
--cc=alexander.sverdlin@gmail.com \
--cc=anshuman.khandual@arm.com \
--cc=ardb@kernel.org \
--cc=arnd@arndb.de \
--cc=axboe@kernel.dk \
--cc=bjorn.andersson@linaro.org \
--cc=f.fainelli@gmail.com \
--cc=geert+renesas@glider.be \
--cc=hsweeten@visionengravers.com \
--cc=jiancai@google.com \
--cc=joe@perches.com \
--cc=keithp@keithp.com \
--cc=keithpac@amazon.com \
--cc=linus.walleij@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=liuwenliang@huawei.com \
--cc=mani@kernel.org \
--cc=maninder1.s@samsung.com \
--cc=masahiroy@kernel.org \
--cc=maz@kernel.org \
--cc=ndesaulniers@google.com \
--cc=ndesaulniers@gooogle.com \
--cc=nico@fluxnic.net \
--cc=peterz@infradead.org \
--cc=rppt@kernel.org \
--cc=tglx@linutronix.de \
--cc=u.kleine-koenig@pengutronix.de \
--cc=v.narang@samsung.com \
--cc=valentin.schneider@arm.com \
--cc=viro@zeniv.linux.org.uk \
--cc=wsa+renesas@sang-engineering.com \
--cc=yifeifz2@illinois.edu \
/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: link
Be 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.