From: Peter Zijlstra <peterz@infradead.org>
To: peterz@infradead.org
Cc: juri.lelli@redhat.com, rafael@kernel.org,
catalin.marinas@arm.com, linus.walleij@linaro.org,
bsegall@google.com, guoren@kernel.org, pavel@ucw.cz,
agordeev@linux.ibm.com, linux-arch@vger.kernel.org,
vincent.guittot@linaro.org, mpe@ellerman.id.au,
chenhuacai@kernel.org, christophe.leroy@csgroup.eu,
linux-acpi@vger.kernel.org, agross@kernel.org,
geert@linux-m68k.org, linux-imx@nxp.com, vgupta@kernel.org,
mattst88@gmail.com, mturquette@baylibre.com, sammy@sammy.net,
pmladek@suse.com, linux-pm@vger.kernel.org,
Sascha Hauer <s.hauer@pengutronix.de>,
linux-um@lists.infradead.org, npiggin@gmail.com,
tglx@linutronix.de, linux-omap@vger.kernel.org,
dietmar.eggemann@arm.com, andreyknvl@gmail.com,
gregkh@linuxfoundation.org, linux-kernel@vger.kernel.org,
linux-perf-users@vger.kernel.org, senozhatsky@chromium.org,
svens@linux.ibm.com, jolsa@kernel.org, tj@kernel.org,
Andrew Morton <a>
Subject: [PATCH v2 42/44] entry, kasan, x86: Disallow overriding mem*() functions
Date: Mon, 19 Sep 2022 12:00:21 +0200 [thread overview]
Message-ID: <20220919101523.177759249@infradead.org> (raw)
In-Reply-To: 20220919095939.761690562@infradead.org
KASAN cannot just hijack the mem*() functions, it needs to emit
__asan_mem*() variants if it wants instrumentation (other sanitizers
already do this).
vmlinux.o: warning: objtool: sync_regs+0x24: call to memcpy() leaves .noinstr.text section
vmlinux.o: warning: objtool: vc_switch_off_ist+0xbe: call to memcpy() leaves .noinstr.text section
vmlinux.o: warning: objtool: fixup_bad_iret+0x36: call to memset() leaves .noinstr.text section
vmlinux.o: warning: objtool: __sev_get_ghcb+0xa0: call to memcpy() leaves .noinstr.text section
vmlinux.o: warning: objtool: __sev_put_ghcb+0x35: call to memcpy() leaves .noinstr.text section
Remove the weak aliases to ensure nobody hijacks these functions and
add them to the noinstr section.
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
---
arch/x86/lib/memcpy_64.S | 5 ++---
arch/x86/lib/memmove_64.S | 4 +++-
arch/x86/lib/memset_64.S | 4 +++-
mm/kasan/kasan.h | 4 ++++
mm/kasan/shadow.c | 38 ++++++++++++++++++++++++++++++++++++++
tools/objtool/check.c | 3 +++
6 files changed, 53 insertions(+), 5 deletions(-)
--- a/arch/x86/lib/memcpy_64.S
+++ b/arch/x86/lib/memcpy_64.S
@@ -7,7 +7,7 @@
#include <asm/alternative.h>
#include <asm/export.h>
-.pushsection .noinstr.text, "ax"
+.section .noinstr.text, "ax"
/*
* We build a jump to memcpy_orig by default which gets NOPped out on
@@ -42,7 +42,7 @@ SYM_FUNC_START(__memcpy)
SYM_FUNC_END(__memcpy)
EXPORT_SYMBOL(__memcpy)
-SYM_FUNC_ALIAS_WEAK(memcpy, __memcpy)
+SYM_FUNC_ALIAS(memcpy, __memcpy)
EXPORT_SYMBOL(memcpy)
/*
@@ -183,4 +183,3 @@ SYM_FUNC_START_LOCAL(memcpy_orig)
RET
SYM_FUNC_END(memcpy_orig)
-.popsection
--- a/arch/x86/lib/memmove_64.S
+++ b/arch/x86/lib/memmove_64.S
@@ -13,6 +13,8 @@
#undef memmove
+.section .noinstr.text, "ax"
+
/*
* Implement memmove(). This can handle overlap between src and dst.
*
@@ -213,5 +215,5 @@ SYM_FUNC_START(__memmove)
SYM_FUNC_END(__memmove)
EXPORT_SYMBOL(__memmove)
-SYM_FUNC_ALIAS_WEAK(memmove, __memmove)
+SYM_FUNC_ALIAS(memmove, __memmove)
EXPORT_SYMBOL(memmove)
--- a/arch/x86/lib/memset_64.S
+++ b/arch/x86/lib/memset_64.S
@@ -6,6 +6,8 @@
#include <asm/alternative.h>
#include <asm/export.h>
+.section .noinstr.text, "ax"
+
/*
* ISO C memset - set a memory block to a byte value. This function uses fast
* string to get better performance than the original function. The code is
@@ -43,7 +45,7 @@ SYM_FUNC_START(__memset)
SYM_FUNC_END(__memset)
EXPORT_SYMBOL(__memset)
-SYM_FUNC_ALIAS_WEAK(memset, __memset)
+SYM_FUNC_ALIAS(memset, __memset)
EXPORT_SYMBOL(memset)
/*
--- a/mm/kasan/kasan.h
+++ b/mm/kasan/kasan.h
@@ -551,6 +551,10 @@ void __asan_set_shadow_f3(const void *ad
void __asan_set_shadow_f5(const void *addr, size_t size);
void __asan_set_shadow_f8(const void *addr, size_t size);
+void *__asan_memset(void *addr, int c, size_t len);
+void *__asan_memmove(void *dest, const void *src, size_t len);
+void *__asan_memcpy(void *dest, const void *src, size_t len);
+
void __hwasan_load1_noabort(unsigned long addr);
void __hwasan_store1_noabort(unsigned long addr);
void __hwasan_load2_noabort(unsigned long addr);
--- a/mm/kasan/shadow.c
+++ b/mm/kasan/shadow.c
@@ -38,6 +38,12 @@ bool __kasan_check_write(const volatile
}
EXPORT_SYMBOL(__kasan_check_write);
+#ifndef CONFIG_GENERIC_ENTRY
+/*
+ * CONFIG_GENERIC_ENTRY relies on compiler emitted mem*() calls to not be
+ * instrumented. KASAN enabled toolchains should emit __asan_mem*() functions
+ * for the sites they want to instrument.
+ */
#undef memset
void *memset(void *addr, int c, size_t len)
{
@@ -68,6 +74,38 @@ void *memcpy(void *dest, const void *src
return __memcpy(dest, src, len);
}
+#endif
+
+void *__asan_memset(void *addr, int c, size_t len)
+{
+ if (!kasan_check_range((unsigned long)addr, len, true, _RET_IP_))
+ return NULL;
+
+ return __memset(addr, c, len);
+}
+EXPORT_SYMBOL(__asan_memset);
+
+#ifdef __HAVE_ARCH_MEMMOVE
+void *__asan_memmove(void *dest, const void *src, size_t len)
+{
+ if (!kasan_check_range((unsigned long)src, len, false, _RET_IP_) ||
+ !kasan_check_range((unsigned long)dest, len, true, _RET_IP_))
+ return NULL;
+
+ return __memmove(dest, src, len);
+}
+EXPORT_SYMBOL(__asan_memmove);
+#endif
+
+void *__asan_memcpy(void *dest, const void *src, size_t len)
+{
+ if (!kasan_check_range((unsigned long)src, len, false, _RET_IP_) ||
+ !kasan_check_range((unsigned long)dest, len, true, _RET_IP_))
+ return NULL;
+
+ return __memcpy(dest, src, len);
+}
+EXPORT_SYMBOL(__asan_memcpy);
void kasan_poison(const void *addr, size_t size, u8 value, bool init)
{
--- a/tools/objtool/check.c
+++ b/tools/objtool/check.c
@@ -956,6 +956,9 @@ static const char *uaccess_safe_builtin[
"__asan_store16_noabort",
"__kasan_check_read",
"__kasan_check_write",
+ "__asan_memset",
+ "__asan_memmove",
+ "__asan_memcpy",
/* KASAN in-line */
"__asan_report_load_n_noabort",
"__asan_report_load1_noabort",
WARNING: multiple messages have this Message-ID (diff)
From: Peter Zijlstra <peterz@infradead.org>
To: peterz@infradead.org
Cc: richard.henderson@linaro.org, ink@jurassic.park.msu.ru,
mattst88@gmail.com, vgupta@kernel.org, linux@armlinux.org.uk,
ulli.kroll@googlemail.com, linus.walleij@linaro.org,
shawnguo@kernel.org, Sascha Hauer <s.hauer@pengutronix.de>,
kernel@pengutronix.de, festevam@gmail.com, linux-imx@nxp.com,
tony@atomide.com, khilman@kernel.org, catalin.marinas@arm.com,
will@kernel.org, guoren@kernel.org, bcain@quicinc.com,
chenhuacai@kernel.org, kernel@xen0n.name, geert@linux-m68k.org,
sammy@sammy.net, monstr@monstr.eu, tsbogend@alpha.franken.de,
dinguyen@kernel.org, jonas@southpole.se,
stefan.kristiansson@saunalahti.fi, shorne@gmail.com,
James.Bottomley@HansenPartnership.com, deller@gmx.de,
mpe@ellerman.id.au, npiggin@gmail.com,
christophe.leroy@csgroup.eu, paul.walmsley@sifive.com,
palmer@dabbelt.com, aou@eecs.berkeley.edu, hca@linux.ibm.com,
gor@linux.ibm.com, agordeev@linux.ibm.com,
borntraeger@linux.ibm.com, svens@linux.ibm.com,
ysato@users.sourceforge.jp, dalias@libc.org, davem@davemloft.net,
richard@nod.at, anton.ivanov@cambridgegreys.com,
johannes@sipsolutions.net, tglx@linutronix.de, mingo@redhat.com,
bp@alien8.de, dave.hansen@linux.intel.com, x86@kernel.org,
hpa@zytor.com, acme@kernel.org, mark.rutland@arm.com,
alexander.shishkin@linux.intel.com, jolsa@kernel.org,
namhyung@kernel.org, jgross@suse.com, srivatsa@csail.mit.edu,
amakhalov@vmware.com, pv-drivers@vmware.com,
boris.ostrovsky@oracle.com, chris@zankel.net, jcmvbkbc@gmail.com,
rafael@kernel.org, lenb@kernel.org, pavel@ucw.cz,
gregkh@linuxfoundation.org, mturquette@baylibre.com,
sboyd@kernel.org, daniel.lezcano@linaro.org,
lpieralisi@kernel.org, sudeep.holla@arm.com, agross@kernel.org,
bjorn.andersson@linaro.org, konrad.dybcio@somainline.org,
anup@brainfault.org, thierry.reding@gmail.com,
jonathanh@nvidia.com, jacob.jun.pan@linux.intel.com,
atishp@atishpatra.org, Arnd Bergmann <arnd@arndb.de>,
yury.norov@gmail.com, andriy.shevchenko@linux.intel.com,
linux@rasmusvillemoes.dk, dennis@kernel.org, tj@kernel.org,
cl@linux.com, rostedt@goodmis.org, pmladek@suse.com,
senozhatsky@chromium.org, john.ogness@linutronix.de,
juri.lelli@redhat.com, vincent.guittot@linaro.org,
dietmar.eggemann@arm.com, bsegall@google.com, mgorman@suse.de,
bristot@redhat.com, vschneid@redhat.com, fweisbec@gmail.com,
ryabinin.a.a@gmail.com, glider@google.com, andreyknvl@gmail.com,
dvyukov@google.com, vincenzo.frascino@arm.com,
Andrew Morton <akpm@linux-foundation.org>,
jpoimboe@kernel.org, linux-alpha@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-snps-arc@lists.infradead.org,
linux-omap@vger.kernel.org, linux-csky@vger.kernel.org,
linux-hexagon@vger.kernel.org, linux-ia64@vger.kernel.org,
loongarch@lists.linux.dev, linux-m68k@lists.linux-m68k.org,
linux-mips@vger.kernel.org, openrisc@lists.librecores.org,
linux-parisc@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,
linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org,
linux-sh@vger.kernel.org, sparclinux@vger.kernel.org,
linux-um@lists.infradead.org, linux-perf-users@vger.kernel.org,
virtualization@lists.linux-foundation.org,
linux-xtensa@linux-xtensa.org, linux-acpi@vger.kernel.org,
linux-pm@vger.kernel.org, linux-clk@vger.kernel.org,
linux-arm-msm@vger.kernel.org, linux-tegra@vger.kernel.org,
linux-arch@vger.kernel.org, kasan-dev@googlegroups.com
Subject: [PATCH v2 42/44] entry,kasan,x86: Disallow overriding mem*() functions
Date: Mon, 19 Sep 2022 12:00:21 +0200 [thread overview]
Message-ID: <20220919101523.177759249@infradead.org> (raw)
In-Reply-To: 20220919095939.761690562@infradead.org
KASAN cannot just hijack the mem*() functions, it needs to emit
__asan_mem*() variants if it wants instrumentation (other sanitizers
already do this).
vmlinux.o: warning: objtool: sync_regs+0x24: call to memcpy() leaves .noinstr.text section
vmlinux.o: warning: objtool: vc_switch_off_ist+0xbe: call to memcpy() leaves .noinstr.text section
vmlinux.o: warning: objtool: fixup_bad_iret+0x36: call to memset() leaves .noinstr.text section
vmlinux.o: warning: objtool: __sev_get_ghcb+0xa0: call to memcpy() leaves .noinstr.text section
vmlinux.o: warning: objtool: __sev_put_ghcb+0x35: call to memcpy() leaves .noinstr.text section
Remove the weak aliases to ensure nobody hijacks these functions and
add them to the noinstr section.
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
---
arch/x86/lib/memcpy_64.S | 5 ++---
arch/x86/lib/memmove_64.S | 4 +++-
arch/x86/lib/memset_64.S | 4 +++-
mm/kasan/kasan.h | 4 ++++
mm/kasan/shadow.c | 38 ++++++++++++++++++++++++++++++++++++++
tools/objtool/check.c | 3 +++
6 files changed, 53 insertions(+), 5 deletions(-)
--- a/arch/x86/lib/memcpy_64.S
+++ b/arch/x86/lib/memcpy_64.S
@@ -7,7 +7,7 @@
#include <asm/alternative.h>
#include <asm/export.h>
-.pushsection .noinstr.text, "ax"
+.section .noinstr.text, "ax"
/*
* We build a jump to memcpy_orig by default which gets NOPped out on
@@ -42,7 +42,7 @@ SYM_FUNC_START(__memcpy)
SYM_FUNC_END(__memcpy)
EXPORT_SYMBOL(__memcpy)
-SYM_FUNC_ALIAS_WEAK(memcpy, __memcpy)
+SYM_FUNC_ALIAS(memcpy, __memcpy)
EXPORT_SYMBOL(memcpy)
/*
@@ -183,4 +183,3 @@ SYM_FUNC_START_LOCAL(memcpy_orig)
RET
SYM_FUNC_END(memcpy_orig)
-.popsection
--- a/arch/x86/lib/memmove_64.S
+++ b/arch/x86/lib/memmove_64.S
@@ -13,6 +13,8 @@
#undef memmove
+.section .noinstr.text, "ax"
+
/*
* Implement memmove(). This can handle overlap between src and dst.
*
@@ -213,5 +215,5 @@ SYM_FUNC_START(__memmove)
SYM_FUNC_END(__memmove)
EXPORT_SYMBOL(__memmove)
-SYM_FUNC_ALIAS_WEAK(memmove, __memmove)
+SYM_FUNC_ALIAS(memmove, __memmove)
EXPORT_SYMBOL(memmove)
--- a/arch/x86/lib/memset_64.S
+++ b/arch/x86/lib/memset_64.S
@@ -6,6 +6,8 @@
#include <asm/alternative.h>
#include <asm/export.h>
+.section .noinstr.text, "ax"
+
/*
* ISO C memset - set a memory block to a byte value. This function uses fast
* string to get better performance than the original function. The code is
@@ -43,7 +45,7 @@ SYM_FUNC_START(__memset)
SYM_FUNC_END(__memset)
EXPORT_SYMBOL(__memset)
-SYM_FUNC_ALIAS_WEAK(memset, __memset)
+SYM_FUNC_ALIAS(memset, __memset)
EXPORT_SYMBOL(memset)
/*
--- a/mm/kasan/kasan.h
+++ b/mm/kasan/kasan.h
@@ -551,6 +551,10 @@ void __asan_set_shadow_f3(const void *ad
void __asan_set_shadow_f5(const void *addr, size_t size);
void __asan_set_shadow_f8(const void *addr, size_t size);
+void *__asan_memset(void *addr, int c, size_t len);
+void *__asan_memmove(void *dest, const void *src, size_t len);
+void *__asan_memcpy(void *dest, const void *src, size_t len);
+
void __hwasan_load1_noabort(unsigned long addr);
void __hwasan_store1_noabort(unsigned long addr);
void __hwasan_load2_noabort(unsigned long addr);
--- a/mm/kasan/shadow.c
+++ b/mm/kasan/shadow.c
@@ -38,6 +38,12 @@ bool __kasan_check_write(const volatile
}
EXPORT_SYMBOL(__kasan_check_write);
+#ifndef CONFIG_GENERIC_ENTRY
+/*
+ * CONFIG_GENERIC_ENTRY relies on compiler emitted mem*() calls to not be
+ * instrumented. KASAN enabled toolchains should emit __asan_mem*() functions
+ * for the sites they want to instrument.
+ */
#undef memset
void *memset(void *addr, int c, size_t len)
{
@@ -68,6 +74,38 @@ void *memcpy(void *dest, const void *src
return __memcpy(dest, src, len);
}
+#endif
+
+void *__asan_memset(void *addr, int c, size_t len)
+{
+ if (!kasan_check_range((unsigned long)addr, len, true, _RET_IP_))
+ return NULL;
+
+ return __memset(addr, c, len);
+}
+EXPORT_SYMBOL(__asan_memset);
+
+#ifdef __HAVE_ARCH_MEMMOVE
+void *__asan_memmove(void *dest, const void *src, size_t len)
+{
+ if (!kasan_check_range((unsigned long)src, len, false, _RET_IP_) ||
+ !kasan_check_range((unsigned long)dest, len, true, _RET_IP_))
+ return NULL;
+
+ return __memmove(dest, src, len);
+}
+EXPORT_SYMBOL(__asan_memmove);
+#endif
+
+void *__asan_memcpy(void *dest, const void *src, size_t len)
+{
+ if (!kasan_check_range((unsigned long)src, len, false, _RET_IP_) ||
+ !kasan_check_range((unsigned long)dest, len, true, _RET_IP_))
+ return NULL;
+
+ return __memcpy(dest, src, len);
+}
+EXPORT_SYMBOL(__asan_memcpy);
void kasan_poison(const void *addr, size_t size, u8 value, bool init)
{
--- a/tools/objtool/check.c
+++ b/tools/objtool/check.c
@@ -956,6 +956,9 @@ static const char *uaccess_safe_builtin[
"__asan_store16_noabort",
"__kasan_check_read",
"__kasan_check_write",
+ "__asan_memset",
+ "__asan_memmove",
+ "__asan_memcpy",
/* KASAN in-line */
"__asan_report_load_n_noabort",
"__asan_report_load1_noabort",
WARNING: multiple messages have this Message-ID (diff)
From: Peter Zijlstra <peterz@infradead.org>
To: peterz@infradead.org
Cc: juri.lelli@redhat.com, rafael@kernel.org,
catalin.marinas@arm.com, linus.walleij@linaro.org,
bsegall@google.com, guoren@kernel.org, pavel@ucw.cz,
agordeev@linux.ibm.com, linux-arch@vger.kernel.org,
vincent.guittot@linaro.org, mpe@ellerman.id.au,
chenhuacai@kernel.org, christophe.leroy@csgroup.eu,
linux-acpi@vger.kernel.org, agross@kernel.org,
geert@linux-m68k.org, linux-imx@nxp.com, vgupta@kernel.org,
mattst88@gmail.com, mturquette@baylibre.com, sammy@sammy.net,
pmladek@suse.com, linux-pm@vger.kernel.org,
Sascha Hauer <s.hauer@pengutronix.de>,
linux-um@lists.infradead.org, npiggin@gmail.com,
tglx@linutronix.de, linux-omap@vger.kernel.org,
dietmar.eggemann@arm.com, andreyknvl@gmail.com,
gregkh@linuxfoundation.org, linux-kernel@vger.kernel.org,
linux-perf-users@vger.kernel.org, senozhatsky@chromium.org,
svens@linux.ibm.com, jolsa@kernel.org, tj@kernel.org,
Andrew Morton <akpm@linux-foundation.org>,
mark.rutland@arm.com, linux-ia64@vger.kernel.org,
dave.hansen@linux.intel.com,
virtualization@lists.linux-foundation.org,
James.Bottomley@HansenPartnership.com, jcmvbkbc@gmail.com,
thierry.reding@gmail.com, kernel@xen0n.name, cl@linux.com,
linux-s390@vger.kernel.org, vschneid@redhat.com,
john.ogness@linutronix.de, ysato@users.sourceforge.jp,
linux-sh@vger.kernel.org, festevam@gmail.com, deller@gmx.de,
daniel.lezcano@linaro.org, jonathanh@nvidia.com,
dennis@kernel.org, lenb@kernel.org,
linux-xtensa@linux-xtensa.org, kernel@pengutronix.de,
gor@linux.ibm.com, linux-arm-msm@vger.kernel.org,
linux-alpha@vger.kernel.org, linux-m68k@lists.linux-m68k.org,
loongarch@lists.linux.dev, shorne@gmail.com, chris@zankel.net,
sboyd@kernel.org, dinguyen@kernel.org, bristot@redhat.com,
alexander.shishkin@linux.intel.com, fweisbec@gmail.com,
lpieralisi@kernel.org, atishp@atishpatra.org,
linux@rasmusvillemoes.dk, kasan-dev@googlegroups.com,
will@kernel.org, boris.ostrovsky@oracle.com, khilman@kernel.org,
linux-csky@vger.kernel.org, pv-drivers@vmware.com,
linux-snps-arc@lists.infradead.org, mgorman@suse.de,
jacob.jun.pan@linux.intel.com, Arnd Bergmann <arnd@arndb.de>,
ulli.kroll@googlemail.com, linux-clk@vger.kernel.org,
rostedt@goodmis.org, ink@jurassic.park.msu.ru, bcain@quicinc.com,
tsbogend@alpha.franken.de, linux-parisc@vger.kernel.org,
ryabinin.a.a@gmail.com, sudeep.holla@arm.com,
shawnguo@kernel.org, davem@davemloft.net, dalias@libc.org,
tony@atomide.com, amakhalov@vmware.com,
konrad.dybcio@somainline.org, bjorn.andersson@linaro.org,
glider@google.com, hpa@zytor.com, sparclinux@vger.kernel.org,
linux-hexagon@vger.kernel.org, linux-riscv@lists.infradead.org,
vincenzo.frascino@arm.com, anton.ivanov@cambridgegreys.com,
jonas@southpole.se, yury.norov@gmail.com, richard@nod.at,
x86@kernel.org, linux@armlinux.org.uk, mingo@redhat.com,
aou@eecs.berkeley.edu, hca@linux.ibm.com,
richard.henderson@linaro.org, stefan.kristiansson@saunalahti.fi,
openrisc@lists.librecores.org, acme@kernel.org,
paul.walmsley@sifive.com, linux-tegra@vger.kernel.org,
namhyung@kernel.org, andriy.shevchenko@linux.intel.com,
jpoimboe@kernel.org, dvyukov@google.com, jgross@suse.com,
monstr@monstr.eu, linux-mips@vger.kernel.org, palmer@dabbelt.com,
anup@brainfault.org, bp@alien8.de, johannes@sipsolutions.net,
linuxppc-dev@lists.ozlabs.org
Subject: [PATCH v2 42/44] entry,kasan,x86: Disallow overriding mem*() functions
Date: Mon, 19 Sep 2022 10:00:21 +0000 [thread overview]
Message-ID: <20220919101523.177759249@infradead.org> (raw)
In-Reply-To: 20220919095939.761690562@infradead.org
KASAN cannot just hijack the mem*() functions, it needs to emit
__asan_mem*() variants if it wants instrumentation (other sanitizers
already do this).
vmlinux.o: warning: objtool: sync_regs+0x24: call to memcpy() leaves .noinstr.text section
vmlinux.o: warning: objtool: vc_switch_off_ist+0xbe: call to memcpy() leaves .noinstr.text section
vmlinux.o: warning: objtool: fixup_bad_iret+0x36: call to memset() leaves .noinstr.text section
vmlinux.o: warning: objtool: __sev_get_ghcb+0xa0: call to memcpy() leaves .noinstr.text section
vmlinux.o: warning: objtool: __sev_put_ghcb+0x35: call to memcpy() leaves .noinstr.text section
Remove the weak aliases to ensure nobody hijacks these functions and
add them to the noinstr section.
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
---
arch/x86/lib/memcpy_64.S | 5 ++---
arch/x86/lib/memmove_64.S | 4 +++-
arch/x86/lib/memset_64.S | 4 +++-
mm/kasan/kasan.h | 4 ++++
mm/kasan/shadow.c | 38 ++++++++++++++++++++++++++++++++++++++
tools/objtool/check.c | 3 +++
6 files changed, 53 insertions(+), 5 deletions(-)
--- a/arch/x86/lib/memcpy_64.S
+++ b/arch/x86/lib/memcpy_64.S
@@ -7,7 +7,7 @@
#include <asm/alternative.h>
#include <asm/export.h>
-.pushsection .noinstr.text, "ax"
+.section .noinstr.text, "ax"
/*
* We build a jump to memcpy_orig by default which gets NOPped out on
@@ -42,7 +42,7 @@ SYM_FUNC_START(__memcpy)
SYM_FUNC_END(__memcpy)
EXPORT_SYMBOL(__memcpy)
-SYM_FUNC_ALIAS_WEAK(memcpy, __memcpy)
+SYM_FUNC_ALIAS(memcpy, __memcpy)
EXPORT_SYMBOL(memcpy)
/*
@@ -183,4 +183,3 @@ SYM_FUNC_START_LOCAL(memcpy_orig)
RET
SYM_FUNC_END(memcpy_orig)
-.popsection
--- a/arch/x86/lib/memmove_64.S
+++ b/arch/x86/lib/memmove_64.S
@@ -13,6 +13,8 @@
#undef memmove
+.section .noinstr.text, "ax"
+
/*
* Implement memmove(). This can handle overlap between src and dst.
*
@@ -213,5 +215,5 @@ SYM_FUNC_START(__memmove)
SYM_FUNC_END(__memmove)
EXPORT_SYMBOL(__memmove)
-SYM_FUNC_ALIAS_WEAK(memmove, __memmove)
+SYM_FUNC_ALIAS(memmove, __memmove)
EXPORT_SYMBOL(memmove)
--- a/arch/x86/lib/memset_64.S
+++ b/arch/x86/lib/memset_64.S
@@ -6,6 +6,8 @@
#include <asm/alternative.h>
#include <asm/export.h>
+.section .noinstr.text, "ax"
+
/*
* ISO C memset - set a memory block to a byte value. This function uses fast
* string to get better performance than the original function. The code is
@@ -43,7 +45,7 @@ SYM_FUNC_START(__memset)
SYM_FUNC_END(__memset)
EXPORT_SYMBOL(__memset)
-SYM_FUNC_ALIAS_WEAK(memset, __memset)
+SYM_FUNC_ALIAS(memset, __memset)
EXPORT_SYMBOL(memset)
/*
--- a/mm/kasan/kasan.h
+++ b/mm/kasan/kasan.h
@@ -551,6 +551,10 @@ void __asan_set_shadow_f3(const void *ad
void __asan_set_shadow_f5(const void *addr, size_t size);
void __asan_set_shadow_f8(const void *addr, size_t size);
+void *__asan_memset(void *addr, int c, size_t len);
+void *__asan_memmove(void *dest, const void *src, size_t len);
+void *__asan_memcpy(void *dest, const void *src, size_t len);
+
void __hwasan_load1_noabort(unsigned long addr);
void __hwasan_store1_noabort(unsigned long addr);
void __hwasan_load2_noabort(unsigned long addr);
--- a/mm/kasan/shadow.c
+++ b/mm/kasan/shadow.c
@@ -38,6 +38,12 @@ bool __kasan_check_write(const volatile
}
EXPORT_SYMBOL(__kasan_check_write);
+#ifndef CONFIG_GENERIC_ENTRY
+/*
+ * CONFIG_GENERIC_ENTRY relies on compiler emitted mem*() calls to not be
+ * instrumented. KASAN enabled toolchains should emit __asan_mem*() functions
+ * for the sites they want to instrument.
+ */
#undef memset
void *memset(void *addr, int c, size_t len)
{
@@ -68,6 +74,38 @@ void *memcpy(void *dest, const void *src
return __memcpy(dest, src, len);
}
+#endif
+
+void *__asan_memset(void *addr, int c, size_t len)
+{
+ if (!kasan_check_range((unsigned long)addr, len, true, _RET_IP_))
+ return NULL;
+
+ return __memset(addr, c, len);
+}
+EXPORT_SYMBOL(__asan_memset);
+
+#ifdef __HAVE_ARCH_MEMMOVE
+void *__asan_memmove(void *dest, const void *src, size_t len)
+{
+ if (!kasan_check_range((unsigned long)src, len, false, _RET_IP_) ||
+ !kasan_check_range((unsigned long)dest, len, true, _RET_IP_))
+ return NULL;
+
+ return __memmove(dest, src, len);
+}
+EXPORT_SYMBOL(__asan_memmove);
+#endif
+
+void *__asan_memcpy(void *dest, const void *src, size_t len)
+{
+ if (!kasan_check_range((unsigned long)src, len, false, _RET_IP_) ||
+ !kasan_check_range((unsigned long)dest, len, true, _RET_IP_))
+ return NULL;
+
+ return __memcpy(dest, src, len);
+}
+EXPORT_SYMBOL(__asan_memcpy);
void kasan_poison(const void *addr, size_t size, u8 value, bool init)
{
--- a/tools/objtool/check.c
+++ b/tools/objtool/check.c
@@ -956,6 +956,9 @@ static const char *uaccess_safe_builtin[
"__asan_store16_noabort",
"__kasan_check_read",
"__kasan_check_write",
+ "__asan_memset",
+ "__asan_memmove",
+ "__asan_memcpy",
/* KASAN in-line */
"__asan_report_load_n_noabort",
"__asan_report_load1_noabort",
WARNING: multiple messages have this Message-ID (diff)
From: Peter Zijlstra <peterz@infradead.org>
To: peterz@infradead.org
Cc: richard.henderson@linaro.org, ink@jurassic.park.msu.ru,
mattst88@gmail.com, vgupta@kernel.org, linux@armlinux.org.uk,
ulli.kroll@googlemail.com, linus.walleij@linaro.org,
shawnguo@kernel.org, Sascha Hauer <s.hauer@pengutronix.de>,
kernel@pengutronix.de, festevam@gmail.com, linux-imx@nxp.com,
tony@atomide.com, khilman@kernel.org, catalin.marinas@arm.com,
will@kernel.org, guoren@kernel.org, bcain@quicinc.com,
chenhuacai@kernel.org, kernel@xen0n.name, geert@linux-m68k.org,
sammy@sammy.net, monstr@monstr.eu, tsbogend@alpha.franken.de,
dinguyen@kernel.org, jonas@southpole.se,
stefan.kristiansson@saunalahti.fi, shorne@gmail.com,
James.Bottomley@HansenPartnership.com, deller@gmx.de,
mpe@ellerman.id.au, npiggin@gmail.com,
christophe.leroy@csgroup.eu, paul.walmsley@sifive.com,
palmer@dabbelt.com, aou@eecs.berkeley.edu, hca@linux.ibm.com,
gor@linux.ibm.com, agordeev@linux.ibm.com,
borntraeger@linux.ibm.com, svens@linux.ibm.com,
ysato@users.sourceforge.jp, dalias@libc.org, davem@davemloft.net,
richard@nod.at, anton.ivanov@cambridgegreys.com,
johannes@sipsolutions.net, tglx@linutronix.de, mingo@redhat.com,
bp@alien8.de, dave.hansen@linux.intel.com, x86@kernel.org,
hpa@zytor.com, acme@kernel.org, mark.rutland@arm.com,
alexander.shishkin@linux.intel.com, jolsa@kernel.org,
namhyung@kernel.org, jgross@suse.com, srivatsa@csail.mit.edu,
amakhalov@vmware.com, pv-drivers@vmware.com,
boris.ostrovsky@oracle.com, chris@zankel.net, jcmvbkbc@gmail.com,
rafael@kernel.org, lenb@kernel.org, pavel@ucw.cz,
gregkh@linuxfoundation.org, mturquette@baylibre.com,
sboyd@kernel.org, daniel.lezcano@linaro.org,
lpieralisi@kernel.org, sudeep.holla@arm.com, agross@kernel.org,
bjorn.andersson@linaro.org, konrad.dybcio@somainline.org,
anup@brainfault.org, thierry.reding@gmail.com,
jonathanh@nvidia.com, jacob.jun.pan@linux.intel.com,
atishp@atishpatra.org, Arnd Bergmann <arnd@arndb.de>,
yury.norov@gmail.com, andriy.shevchenko@linux.intel.com,
linux@rasmusvillemoes.dk, dennis@kernel.org, tj@kernel.org,
cl@linux.com, rostedt@goodmis.org, pmladek@suse.com,
senozhatsky@chromium.org, john.ogness@linutronix.de,
juri.lelli@redhat.com, vincent.guittot@linaro.org,
dietmar.eggemann@arm.com, bsegall@google.com, mgorman@suse.de,
bristot@redhat.com, vschneid@redhat.com, fweisbec@gmail.com,
ryabinin.a.a@gmail.com, glider@google.com, andreyknvl@gmail.com,
dvyukov@google.com, vincenzo.frascino@arm.com,
Andrew Morton <akpm@linux-foundation.org>,
jpoimboe@kernel.org, linux-alpha@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-snps-arc@lists.infradead.org,
linux-omap@vger.kernel.org, linux-csky@vger.kernel.org,
linux-hexagon@vger.kernel.org, linux-ia64@vger.kernel.org,
loongarch@lists.linux.dev, linux-m68k@lists.linux-m68k.org,
linux-mips@vger.kernel.org, openrisc@lists.librecores.org,
linux-parisc@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,
linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org,
linux-sh@vger.kernel.org, sparclinux@vger.kernel.org,
linux-um@lists.infradead.org, linux-perf-users@vger.kernel.org,
virtualization@lists.linux-foundation.org,
linux-xtensa@linux-xtensa.org, linux-acpi@vger.kernel.org,
linux-pm@vger.kernel.org, linux-clk@vger.kernel.org,
linux-arm-msm@vger.kernel.org, linux-tegra@vger.kernel.org,
linux-arch@vger.kernel.org, kasan-dev@googlegroups.com
Subject: [PATCH v2 42/44] entry,kasan,x86: Disallow overriding mem*() functions
Date: Mon, 19 Sep 2022 12:00:21 +0200 [thread overview]
Message-ID: <20220919101523.177759249@infradead.org> (raw)
In-Reply-To: 20220919095939.761690562@infradead.org
KASAN cannot just hijack the mem*() functions, it needs to emit
__asan_mem*() variants if it wants instrumentation (other sanitizers
already do this).
vmlinux.o: warning: objtool: sync_regs+0x24: call to memcpy() leaves .noinstr.text section
vmlinux.o: warning: objtool: vc_switch_off_ist+0xbe: call to memcpy() leaves .noinstr.text section
vmlinux.o: warning: objtool: fixup_bad_iret+0x36: call to memset() leaves .noinstr.text section
vmlinux.o: warning: objtool: __sev_get_ghcb+0xa0: call to memcpy() leaves .noinstr.text section
vmlinux.o: warning: objtool: __sev_put_ghcb+0x35: call to memcpy() leaves .noinstr.text section
Remove the weak aliases to ensure nobody hijacks these functions and
add them to the noinstr section.
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
---
arch/x86/lib/memcpy_64.S | 5 ++---
arch/x86/lib/memmove_64.S | 4 +++-
arch/x86/lib/memset_64.S | 4 +++-
mm/kasan/kasan.h | 4 ++++
mm/kasan/shadow.c | 38 ++++++++++++++++++++++++++++++++++++++
tools/objtool/check.c | 3 +++
6 files changed, 53 insertions(+), 5 deletions(-)
--- a/arch/x86/lib/memcpy_64.S
+++ b/arch/x86/lib/memcpy_64.S
@@ -7,7 +7,7 @@
#include <asm/alternative.h>
#include <asm/export.h>
-.pushsection .noinstr.text, "ax"
+.section .noinstr.text, "ax"
/*
* We build a jump to memcpy_orig by default which gets NOPped out on
@@ -42,7 +42,7 @@ SYM_FUNC_START(__memcpy)
SYM_FUNC_END(__memcpy)
EXPORT_SYMBOL(__memcpy)
-SYM_FUNC_ALIAS_WEAK(memcpy, __memcpy)
+SYM_FUNC_ALIAS(memcpy, __memcpy)
EXPORT_SYMBOL(memcpy)
/*
@@ -183,4 +183,3 @@ SYM_FUNC_START_LOCAL(memcpy_orig)
RET
SYM_FUNC_END(memcpy_orig)
-.popsection
--- a/arch/x86/lib/memmove_64.S
+++ b/arch/x86/lib/memmove_64.S
@@ -13,6 +13,8 @@
#undef memmove
+.section .noinstr.text, "ax"
+
/*
* Implement memmove(). This can handle overlap between src and dst.
*
@@ -213,5 +215,5 @@ SYM_FUNC_START(__memmove)
SYM_FUNC_END(__memmove)
EXPORT_SYMBOL(__memmove)
-SYM_FUNC_ALIAS_WEAK(memmove, __memmove)
+SYM_FUNC_ALIAS(memmove, __memmove)
EXPORT_SYMBOL(memmove)
--- a/arch/x86/lib/memset_64.S
+++ b/arch/x86/lib/memset_64.S
@@ -6,6 +6,8 @@
#include <asm/alternative.h>
#include <asm/export.h>
+.section .noinstr.text, "ax"
+
/*
* ISO C memset - set a memory block to a byte value. This function uses fast
* string to get better performance than the original function. The code is
@@ -43,7 +45,7 @@ SYM_FUNC_START(__memset)
SYM_FUNC_END(__memset)
EXPORT_SYMBOL(__memset)
-SYM_FUNC_ALIAS_WEAK(memset, __memset)
+SYM_FUNC_ALIAS(memset, __memset)
EXPORT_SYMBOL(memset)
/*
--- a/mm/kasan/kasan.h
+++ b/mm/kasan/kasan.h
@@ -551,6 +551,10 @@ void __asan_set_shadow_f3(const void *ad
void __asan_set_shadow_f5(const void *addr, size_t size);
void __asan_set_shadow_f8(const void *addr, size_t size);
+void *__asan_memset(void *addr, int c, size_t len);
+void *__asan_memmove(void *dest, const void *src, size_t len);
+void *__asan_memcpy(void *dest, const void *src, size_t len);
+
void __hwasan_load1_noabort(unsigned long addr);
void __hwasan_store1_noabort(unsigned long addr);
void __hwasan_load2_noabort(unsigned long addr);
--- a/mm/kasan/shadow.c
+++ b/mm/kasan/shadow.c
@@ -38,6 +38,12 @@ bool __kasan_check_write(const volatile
}
EXPORT_SYMBOL(__kasan_check_write);
+#ifndef CONFIG_GENERIC_ENTRY
+/*
+ * CONFIG_GENERIC_ENTRY relies on compiler emitted mem*() calls to not be
+ * instrumented. KASAN enabled toolchains should emit __asan_mem*() functions
+ * for the sites they want to instrument.
+ */
#undef memset
void *memset(void *addr, int c, size_t len)
{
@@ -68,6 +74,38 @@ void *memcpy(void *dest, const void *src
return __memcpy(dest, src, len);
}
+#endif
+
+void *__asan_memset(void *addr, int c, size_t len)
+{
+ if (!kasan_check_range((unsigned long)addr, len, true, _RET_IP_))
+ return NULL;
+
+ return __memset(addr, c, len);
+}
+EXPORT_SYMBOL(__asan_memset);
+
+#ifdef __HAVE_ARCH_MEMMOVE
+void *__asan_memmove(void *dest, const void *src, size_t len)
+{
+ if (!kasan_check_range((unsigned long)src, len, false, _RET_IP_) ||
+ !kasan_check_range((unsigned long)dest, len, true, _RET_IP_))
+ return NULL;
+
+ return __memmove(dest, src, len);
+}
+EXPORT_SYMBOL(__asan_memmove);
+#endif
+
+void *__asan_memcpy(void *dest, const void *src, size_t len)
+{
+ if (!kasan_check_range((unsigned long)src, len, false, _RET_IP_) ||
+ !kasan_check_range((unsigned long)dest, len, true, _RET_IP_))
+ return NULL;
+
+ return __memcpy(dest, src, len);
+}
+EXPORT_SYMBOL(__asan_memcpy);
void kasan_poison(const void *addr, size_t size, u8 value, bool init)
{
--- a/tools/objtool/check.c
+++ b/tools/objtool/check.c
@@ -956,6 +956,9 @@ static const char *uaccess_safe_builtin[
"__asan_store16_noabort",
"__kasan_check_read",
"__kasan_check_write",
+ "__asan_memset",
+ "__asan_memmove",
+ "__asan_memcpy",
/* KASAN in-line */
"__asan_report_load_n_noabort",
"__asan_report_load1_noabort",
_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
WARNING: multiple messages have this Message-ID (diff)
From: Peter Zijlstra <peterz@infradead.org>
To: peterz@infradead.org
Cc: richard.henderson@linaro.org, ink@jurassic.park.msu.ru,
mattst88@gmail.com, vgupta@kernel.org, linux@armlinux.org.uk,
ulli.kroll@googlemail.com, linus.walleij@linaro.org,
shawnguo@kernel.org, Sascha Hauer <s.hauer@pengutronix.de>,
kernel@pengutronix.de, festevam@gmail.com, linux-imx@nxp.com,
tony@atomide.com, khilman@kernel.org, catalin.marinas@arm.com,
will@kernel.org, guoren@kernel.org, bcain@quicinc.com,
chenhuacai@kernel.org, kernel@xen0n.name, geert@linux-m68k.org,
sammy@sammy.net, monstr@monstr.eu, tsbogend@alpha.franken.de,
dinguyen@kernel.org, jonas@southpole.se,
stefan.kristiansson@saunalahti.fi, shorne@gmail.com,
James.Bottomley@HansenPartnership.com, deller@gmx.de,
mpe@ellerman.id.au, npiggin@gmail.com,
christophe.leroy@csgroup.eu, paul.walmsley@sifive.com,
palmer@dabbelt.com, aou@eecs.berkeley.edu, hca@linux.ibm.com,
gor@linux.ibm.com, agordeev@linux.ibm.com,
borntraeger@linux.ibm.com, svens@linux.ibm.com,
ysato@users.sourceforge.jp, dalias@libc.org, davem@davemloft.net,
richard@nod.at, anton.ivanov@cambridgegreys.com,
johannes@sipsolutions.net, tglx@linutronix.de, mingo@redhat.com,
bp@alien8.de, dave.hansen@linux.intel.com, x86@kernel.org,
hpa@zytor.com, acme@kernel.org, mark.rutland@arm.com,
alexander.shishkin@linux.intel.com, jolsa@kernel.org,
namhyung@kernel.org, jgross@suse.com, srivatsa@csail.mit.edu,
amakhalov@vmware.com, pv-drivers@vmware.com,
boris.ostrovsky@oracle.com, chris@zankel.net, jcmvbkbc@gmail.com,
rafael@kernel.org, lenb@kernel.org, pavel@ucw.cz,
gregkh@linuxfoundation.org, mturquette@baylibre.com,
sboyd@kernel.org, daniel.lezcano@linaro.org,
lpieralisi@kernel.org, sudeep.holla@arm.com, agross@kernel.org,
bjorn.andersson@linaro.org, konrad.dybcio@somainline.org,
anup@brainfault.org, thierry.reding@gmail.com,
jonathanh@nvidia.com, jacob.jun.pan@linux.intel.com,
atishp@atishpatra.org, Arnd Bergmann <arnd@arndb.de>,
yury.norov@gmail.com, andriy.shevchenko@linux.intel.com,
linux@rasmusvillemoes.dk, dennis@kernel.org, tj@kernel.org,
cl@linux.com, rostedt@goodmis.org, pmladek@suse.com,
senozhatsky@chromium.org, john.ogness@linutronix.de,
juri.lelli@redhat.com, vincent.guittot@linaro.org,
dietmar.eggemann@arm.com, bsegall@google.com, mgorman@suse.de,
bristot@redhat.com, vschneid@redhat.com, fweisbec@gmail.com,
ryabinin.a.a@gmail.com, glider@google.com, andreyknvl@gmail.com,
dvyukov@google.com, vincenzo.frascino@arm.com,
Andrew Morton <akpm@linux-foundation.org>,
jpoimboe@kernel.org, linux-alpha@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-snps-arc@lists.infradead.org,
linux-omap@vger.kernel.org, linux-csky@vger.kernel.org,
linux-hexagon@vger.kernel.org, linux-ia64@vger.kernel.org,
loongarch@lists.linux.dev, linux-m68k@lists.linux-m68k.org,
linux-mips@vger.kernel.org, openrisc@lists.librecores.org,
linux-parisc@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,
linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org,
linux-sh@vger.kernel.org, sparclinux@vger.kernel.org,
linux-um@lists.infradead.org, linux-perf-users@vger.kernel.org,
virtualization@lists.linux-foundation.org,
linux-xtensa@linux-xtensa.org, linux-acpi@vger.kernel.org,
linux-pm@vger.kernel.org, linux-clk@vger.kernel.org,
linux-arm-msm@vger.kernel.org, linux-tegra@vger.kernel.org,
linux-arch@vger.kernel.org, kasan-dev@googlegroups.com
Subject: [PATCH v2 42/44] entry,kasan,x86: Disallow overriding mem*() functions
Date: Mon, 19 Sep 2022 12:00:21 +0200 [thread overview]
Message-ID: <20220919101523.177759249@infradead.org> (raw)
In-Reply-To: 20220919095939.761690562@infradead.org
KASAN cannot just hijack the mem*() functions, it needs to emit
__asan_mem*() variants if it wants instrumentation (other sanitizers
already do this).
vmlinux.o: warning: objtool: sync_regs+0x24: call to memcpy() leaves .noinstr.text section
vmlinux.o: warning: objtool: vc_switch_off_ist+0xbe: call to memcpy() leaves .noinstr.text section
vmlinux.o: warning: objtool: fixup_bad_iret+0x36: call to memset() leaves .noinstr.text section
vmlinux.o: warning: objtool: __sev_get_ghcb+0xa0: call to memcpy() leaves .noinstr.text section
vmlinux.o: warning: objtool: __sev_put_ghcb+0x35: call to memcpy() leaves .noinstr.text section
Remove the weak aliases to ensure nobody hijacks these functions and
add them to the noinstr section.
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
---
arch/x86/lib/memcpy_64.S | 5 ++---
arch/x86/lib/memmove_64.S | 4 +++-
arch/x86/lib/memset_64.S | 4 +++-
mm/kasan/kasan.h | 4 ++++
mm/kasan/shadow.c | 38 ++++++++++++++++++++++++++++++++++++++
tools/objtool/check.c | 3 +++
6 files changed, 53 insertions(+), 5 deletions(-)
--- a/arch/x86/lib/memcpy_64.S
+++ b/arch/x86/lib/memcpy_64.S
@@ -7,7 +7,7 @@
#include <asm/alternative.h>
#include <asm/export.h>
-.pushsection .noinstr.text, "ax"
+.section .noinstr.text, "ax"
/*
* We build a jump to memcpy_orig by default which gets NOPped out on
@@ -42,7 +42,7 @@ SYM_FUNC_START(__memcpy)
SYM_FUNC_END(__memcpy)
EXPORT_SYMBOL(__memcpy)
-SYM_FUNC_ALIAS_WEAK(memcpy, __memcpy)
+SYM_FUNC_ALIAS(memcpy, __memcpy)
EXPORT_SYMBOL(memcpy)
/*
@@ -183,4 +183,3 @@ SYM_FUNC_START_LOCAL(memcpy_orig)
RET
SYM_FUNC_END(memcpy_orig)
-.popsection
--- a/arch/x86/lib/memmove_64.S
+++ b/arch/x86/lib/memmove_64.S
@@ -13,6 +13,8 @@
#undef memmove
+.section .noinstr.text, "ax"
+
/*
* Implement memmove(). This can handle overlap between src and dst.
*
@@ -213,5 +215,5 @@ SYM_FUNC_START(__memmove)
SYM_FUNC_END(__memmove)
EXPORT_SYMBOL(__memmove)
-SYM_FUNC_ALIAS_WEAK(memmove, __memmove)
+SYM_FUNC_ALIAS(memmove, __memmove)
EXPORT_SYMBOL(memmove)
--- a/arch/x86/lib/memset_64.S
+++ b/arch/x86/lib/memset_64.S
@@ -6,6 +6,8 @@
#include <asm/alternative.h>
#include <asm/export.h>
+.section .noinstr.text, "ax"
+
/*
* ISO C memset - set a memory block to a byte value. This function uses fast
* string to get better performance than the original function. The code is
@@ -43,7 +45,7 @@ SYM_FUNC_START(__memset)
SYM_FUNC_END(__memset)
EXPORT_SYMBOL(__memset)
-SYM_FUNC_ALIAS_WEAK(memset, __memset)
+SYM_FUNC_ALIAS(memset, __memset)
EXPORT_SYMBOL(memset)
/*
--- a/mm/kasan/kasan.h
+++ b/mm/kasan/kasan.h
@@ -551,6 +551,10 @@ void __asan_set_shadow_f3(const void *ad
void __asan_set_shadow_f5(const void *addr, size_t size);
void __asan_set_shadow_f8(const void *addr, size_t size);
+void *__asan_memset(void *addr, int c, size_t len);
+void *__asan_memmove(void *dest, const void *src, size_t len);
+void *__asan_memcpy(void *dest, const void *src, size_t len);
+
void __hwasan_load1_noabort(unsigned long addr);
void __hwasan_store1_noabort(unsigned long addr);
void __hwasan_load2_noabort(unsigned long addr);
--- a/mm/kasan/shadow.c
+++ b/mm/kasan/shadow.c
@@ -38,6 +38,12 @@ bool __kasan_check_write(const volatile
}
EXPORT_SYMBOL(__kasan_check_write);
+#ifndef CONFIG_GENERIC_ENTRY
+/*
+ * CONFIG_GENERIC_ENTRY relies on compiler emitted mem*() calls to not be
+ * instrumented. KASAN enabled toolchains should emit __asan_mem*() functions
+ * for the sites they want to instrument.
+ */
#undef memset
void *memset(void *addr, int c, size_t len)
{
@@ -68,6 +74,38 @@ void *memcpy(void *dest, const void *src
return __memcpy(dest, src, len);
}
+#endif
+
+void *__asan_memset(void *addr, int c, size_t len)
+{
+ if (!kasan_check_range((unsigned long)addr, len, true, _RET_IP_))
+ return NULL;
+
+ return __memset(addr, c, len);
+}
+EXPORT_SYMBOL(__asan_memset);
+
+#ifdef __HAVE_ARCH_MEMMOVE
+void *__asan_memmove(void *dest, const void *src, size_t len)
+{
+ if (!kasan_check_range((unsigned long)src, len, false, _RET_IP_) ||
+ !kasan_check_range((unsigned long)dest, len, true, _RET_IP_))
+ return NULL;
+
+ return __memmove(dest, src, len);
+}
+EXPORT_SYMBOL(__asan_memmove);
+#endif
+
+void *__asan_memcpy(void *dest, const void *src, size_t len)
+{
+ if (!kasan_check_range((unsigned long)src, len, false, _RET_IP_) ||
+ !kasan_check_range((unsigned long)dest, len, true, _RET_IP_))
+ return NULL;
+
+ return __memcpy(dest, src, len);
+}
+EXPORT_SYMBOL(__asan_memcpy);
void kasan_poison(const void *addr, size_t size, u8 value, bool init)
{
--- a/tools/objtool/check.c
+++ b/tools/objtool/check.c
@@ -956,6 +956,9 @@ static const char *uaccess_safe_builtin[
"__asan_store16_noabort",
"__kasan_check_read",
"__kasan_check_write",
+ "__asan_memset",
+ "__asan_memmove",
+ "__asan_memcpy",
/* KASAN in-line */
"__asan_report_load_n_noabort",
"__asan_report_load1_noabort",
_______________________________________________
linux-snps-arc mailing list
linux-snps-arc@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-snps-arc
WARNING: multiple messages have this Message-ID (diff)
From: Peter Zijlstra <peterz@infradead.org>
To: peterz@infradead.org
Cc: juri.lelli@redhat.com, rafael@kernel.org,
catalin.marinas@arm.com, linus.walleij@linaro.org,
bsegall@google.com, guoren@kernel.org, pavel@ucw.cz,
agordeev@linux.ibm.com, srivatsa@csail.mit.edu,
linux-arch@vger.kernel.org, vincent.guittot@linaro.org,
mpe@ellerman.id.au, chenhuacai@kernel.org,
christophe.leroy@csgroup.eu, linux-acpi@vger.kernel.org,
agross@kernel.org, linux-imx@nxp.com, vgupta@kernel.org,
mattst88@gmail.com, borntraeger@linux.ibm.com,
mturquette@baylibre.com, sammy@sammy.net, pmladek@suse.com,
linux-pm@vger.kernel.org, Sascha Hauer <s.hauer@pengutronix.de>,
linux-um@lists.infradead.org, npiggin@gmail.com,
tglx@linutronix.de, linux-omap@vger.kernel.org,
dietmar.eggemann@arm.com, andreyknvl@gmail.com,
gregkh@linuxfoundation.org, linux-kernel@vger.kernel.org,
linux-perf-users@vger.kernel.org, senozhatsky@chromium.org,
svens@linux.ibm.com, jolsa@kernel.org, tj@kernel.org,
Andrew Morton <akpm@linux-foundation.org>,
mark.rutland@arm.com, linux-ia64@vger.kernel.org,
dave.hansen@linux.intel.com,
virtualization@lists.linux-foundation.org,
James.Bottomley@HansenPartnership.com, jcmvbkbc@gmail.com,
thierry.reding@gmail.com, kernel@xen0n.name, cl@linux.com,
linux-s390@vger.kernel.org, vschneid@redhat.com,
john.ogness@linutronix.de, ysato@users.sourceforge.jp,
linux-sh@vger.kernel.org, festevam@gmail.com, deller@gmx.de,
daniel.lezcano@linaro.org, jonathanh@nvidia.com,
dennis@kernel.org, lenb@kernel.org,
linux-xtensa@linux-xtensa.org, kernel@pengutronix.de,
gor@linux.ibm.com, linux-arm-msm@vger.kernel.org,
linux-alpha@vger.kernel.org, linux-m68k@lists.linux-m68k.org,
loongarch@lists.linux.dev, chris@zankel.net, sboyd@kernel.org,
dinguyen@kernel.org, bristot@redhat.com,
alexander.shishkin@linux.intel.com, fweisbec@gmail.com,
lpieralisi@kernel.org, atishp@atishpatra.org,
linux@rasmusvillemoes.dk, kasan-dev@googlegroups.com,
will@kernel.org, boris.ostrovsky@oracle.com, khilman@kernel.org,
linux-csky@vger.kernel.org, pv-drivers@vmware.com,
linux-snps-arc@lists.infradead.org, mgorman@suse.de,
jacob.jun.pan@linux.intel.com, Arnd Bergmann <arnd@arndb.de>,
ulli.kroll@googlemail.com, linux-clk@vger.kernel.org,
rostedt@goodmis.org, ink@jurassic.park.msu.ru, bcain@quicinc.com,
tsbogend@alpha.franken.de, linux-parisc@vger.kernel.org,
ryabinin.a.a@gmail.com, sudeep.holla@arm.com,
shawnguo@kernel.org, davem@davemloft.net, dalias@libc.org,
tony@atomide.com, amakhalov@vmware.com,
konrad.dybcio@somainline.org, bjorn.andersson@linaro.org,
glider@google.com, hpa@zytor.com, sparclinux@vger.kernel.org,
linux-hexagon@vger.kernel.org, linux-riscv@lists.infradead.org,
vincenzo.frascino@arm.com, anton.ivanov@cambridgegreys.com,
jonas@southpole.se, yury.norov@gmail.com, richard@nod.at,
x86@kernel.org, linux@armlinux.org.uk, mingo@redhat.com,
aou@eecs.berkeley.edu, hca@linux.ibm.com,
richard.henderson@linaro.org, openrisc@lists.librecores.org,
acme@kernel.org, paul.walmsley@sifive.com,
linux-tegra@vger.kernel.org, namhyung@kernel.org,
andriy.shevchenko@linux.intel.com, jpoimboe@kernel.org,
dvyukov@google.com, jgross@suse.com, monstr@monstr.eu,
linux-mips@vger.kernel.org, palmer@dabbelt.com,
anup@brainfault.org, bp@alien8.de, johannes@sipsolutions.net,
linuxppc-dev@lists.ozlabs.org
Subject: [PATCH v2 42/44] entry, kasan, x86: Disallow overriding mem*() functions
Date: Mon, 19 Sep 2022 12:00:21 +0200 [thread overview]
Message-ID: <20220919101523.177759249@infradead.org> (raw)
In-Reply-To: 20220919095939.761690562@infradead.org
KASAN cannot just hijack the mem*() functions, it needs to emit
__asan_mem*() variants if it wants instrumentation (other sanitizers
already do this).
vmlinux.o: warning: objtool: sync_regs+0x24: call to memcpy() leaves .noinstr.text section
vmlinux.o: warning: objtool: vc_switch_off_ist+0xbe: call to memcpy() leaves .noinstr.text section
vmlinux.o: warning: objtool: fixup_bad_iret+0x36: call to memset() leaves .noinstr.text section
vmlinux.o: warning: objtool: __sev_get_ghcb+0xa0: call to memcpy() leaves .noinstr.text section
vmlinux.o: warning: objtool: __sev_put_ghcb+0x35: call to memcpy() leaves .noinstr.text section
Remove the weak aliases to ensure nobody hijacks these functions and
add them to the noinstr section.
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
---
arch/x86/lib/memcpy_64.S | 5 ++---
arch/x86/lib/memmove_64.S | 4 +++-
arch/x86/lib/memset_64.S | 4 +++-
mm/kasan/kasan.h | 4 ++++
mm/kasan/shadow.c | 38 ++++++++++++++++++++++++++++++++++++++
tools/objtool/check.c | 3 +++
6 files changed, 53 insertions(+), 5 deletions(-)
--- a/arch/x86/lib/memcpy_64.S
+++ b/arch/x86/lib/memcpy_64.S
@@ -7,7 +7,7 @@
#include <asm/alternative.h>
#include <asm/export.h>
-.pushsection .noinstr.text, "ax"
+.section .noinstr.text, "ax"
/*
* We build a jump to memcpy_orig by default which gets NOPped out on
@@ -42,7 +42,7 @@ SYM_FUNC_START(__memcpy)
SYM_FUNC_END(__memcpy)
EXPORT_SYMBOL(__memcpy)
-SYM_FUNC_ALIAS_WEAK(memcpy, __memcpy)
+SYM_FUNC_ALIAS(memcpy, __memcpy)
EXPORT_SYMBOL(memcpy)
/*
@@ -183,4 +183,3 @@ SYM_FUNC_START_LOCAL(memcpy_orig)
RET
SYM_FUNC_END(memcpy_orig)
-.popsection
--- a/arch/x86/lib/memmove_64.S
+++ b/arch/x86/lib/memmove_64.S
@@ -13,6 +13,8 @@
#undef memmove
+.section .noinstr.text, "ax"
+
/*
* Implement memmove(). This can handle overlap between src and dst.
*
@@ -213,5 +215,5 @@ SYM_FUNC_START(__memmove)
SYM_FUNC_END(__memmove)
EXPORT_SYMBOL(__memmove)
-SYM_FUNC_ALIAS_WEAK(memmove, __memmove)
+SYM_FUNC_ALIAS(memmove, __memmove)
EXPORT_SYMBOL(memmove)
--- a/arch/x86/lib/memset_64.S
+++ b/arch/x86/lib/memset_64.S
@@ -6,6 +6,8 @@
#include <asm/alternative.h>
#include <asm/export.h>
+.section .noinstr.text, "ax"
+
/*
* ISO C memset - set a memory block to a byte value. This function uses fast
* string to get better performance than the original function. The code is
@@ -43,7 +45,7 @@ SYM_FUNC_START(__memset)
SYM_FUNC_END(__memset)
EXPORT_SYMBOL(__memset)
-SYM_FUNC_ALIAS_WEAK(memset, __memset)
+SYM_FUNC_ALIAS(memset, __memset)
EXPORT_SYMBOL(memset)
/*
--- a/mm/kasan/kasan.h
+++ b/mm/kasan/kasan.h
@@ -551,6 +551,10 @@ void __asan_set_shadow_f3(const void *ad
void __asan_set_shadow_f5(const void *addr, size_t size);
void __asan_set_shadow_f8(const void *addr, size_t size);
+void *__asan_memset(void *addr, int c, size_t len);
+void *__asan_memmove(void *dest, const void *src, size_t len);
+void *__asan_memcpy(void *dest, const void *src, size_t len);
+
void __hwasan_load1_noabort(unsigned long addr);
void __hwasan_store1_noabort(unsigned long addr);
void __hwasan_load2_noabort(unsigned long addr);
--- a/mm/kasan/shadow.c
+++ b/mm/kasan/shadow.c
@@ -38,6 +38,12 @@ bool __kasan_check_write(const volatile
}
EXPORT_SYMBOL(__kasan_check_write);
+#ifndef CONFIG_GENERIC_ENTRY
+/*
+ * CONFIG_GENERIC_ENTRY relies on compiler emitted mem*() calls to not be
+ * instrumented. KASAN enabled toolchains should emit __asan_mem*() functions
+ * for the sites they want to instrument.
+ */
#undef memset
void *memset(void *addr, int c, size_t len)
{
@@ -68,6 +74,38 @@ void *memcpy(void *dest, const void *src
return __memcpy(dest, src, len);
}
+#endif
+
+void *__asan_memset(void *addr, int c, size_t len)
+{
+ if (!kasan_check_range((unsigned long)addr, len, true, _RET_IP_))
+ return NULL;
+
+ return __memset(addr, c, len);
+}
+EXPORT_SYMBOL(__asan_memset);
+
+#ifdef __HAVE_ARCH_MEMMOVE
+void *__asan_memmove(void *dest, const void *src, size_t len)
+{
+ if (!kasan_check_range((unsigned long)src, len, false, _RET_IP_) ||
+ !kasan_check_range((unsigned long)dest, len, true, _RET_IP_))
+ return NULL;
+
+ return __memmove(dest, src, len);
+}
+EXPORT_SYMBOL(__asan_memmove);
+#endif
+
+void *__asan_memcpy(void *dest, const void *src, size_t len)
+{
+ if (!kasan_check_range((unsigned long)src, len, false, _RET_IP_) ||
+ !kasan_check_range((unsigned long)dest, len, true, _RET_IP_))
+ return NULL;
+
+ return __memcpy(dest, src, len);
+}
+EXPORT_SYMBOL(__asan_memcpy);
void kasan_poison(const void *addr, size_t size, u8 value, bool init)
{
--- a/tools/objtool/check.c
+++ b/tools/objtool/check.c
@@ -956,6 +956,9 @@ static const char *uaccess_safe_builtin[
"__asan_store16_noabort",
"__kasan_check_read",
"__kasan_check_write",
+ "__asan_memset",
+ "__asan_memmove",
+ "__asan_memcpy",
/* KASAN in-line */
"__asan_report_load_n_noabort",
"__asan_report_load1_noabort",
WARNING: multiple messages have this Message-ID (diff)
From: Peter Zijlstra <peterz@infradead.org>
To: peterz@infradead.org
Cc: juri.lelli@redhat.com, rafael@kernel.org,
catalin.marinas@arm.com, linus.walleij@linaro.org,
bsegall@google.com, guoren@kernel.org, pavel@ucw.cz,
agordeev@linux.ibm.com, srivatsa@csail.mit.edu,
linux-arch@vger.kernel.org, vincent.guittot@linaro.org,
chenhuacai@kernel.org, linux-acpi@vger.kernel.org,
agross@kernel.org, geert@linux-m68k.org, linux-imx@nxp.com,
vgupta@kernel.org, mattst88@gmail.com, borntraeger@linux.ibm.com,
mturquette@baylibre.com, sammy@sammy.net, pmladek@suse.com,
linux-pm@vger.kernel.org, Sascha Hauer <s.hauer@pengutronix.de>,
linux-um@lists.infradead.org, npiggin@gmail.com,
tglx@linutronix.de, linux-omap@vger.kernel.org,
dietmar.eggemann@arm.com, andreyknvl@gmail.com,
gregkh@linuxfoundation.org, linux-kernel@vger.kernel.org,
linux-perf-users@vger.kernel.org, senozhatsky@chromium.org,
svens@linux.ibm.com, jolsa@kernel.org, tj@kernel.org,
Andrew Morton <akpm@linux-foundation.org>,
mark.rutland@arm.com, linux-ia64@vger.kernel.org,
dave.hansen@linux.intel.com,
vir tualization@lists.linux-foundation.org,
James.Bottomley@HansenPartnership.com, jcmvbkbc@gmail.com,
thierry.reding@gmail.com, kernel@xen0n.name, cl@linux.com,
linux-s390@vger.kernel.org, vschneid@redhat.com,
john.ogness@linutronix.de, ysato@users.sourceforge.jp,
linux-sh@vger.kernel.org, festevam@gmail.com, deller@gmx.de,
daniel.lezcano@linaro.org, jonathanh@nvidia.com,
dennis@kernel.org, lenb@kernel.org,
linux-xtensa@linux-xtensa.org, kernel@pengutronix.de,
gor@linux.ibm.com, linux-arm-msm@vger.kernel.org,
linux-alpha@vger.kernel.org, linux-m68k@lists.linux-m68k.org,
loongarch@lists.linux.dev, shorne@gmail.com, chris@zankel.net,
sboyd@kernel.org, dinguyen@kernel.org, bristot@redhat.com,
alexander.shishkin@linux.intel.com, fweisbec@gmail.com,
lpieralisi@kernel.org, atishp@atishpatra.org,
linux@rasmusvillemoes.dk, kasan-dev@googlegroups.com,
will@kernel.org, boris.ostrovsky@oracle.com, khilman@kernel.org,
linux-csky@vger.kernel.org, pv-drivers@vmware.com,
linux-snps-arc@lists.infradea d.org, mgorman@suse.de,
jacob.jun.pan@linux.intel.com, Arnd Bergmann <arnd@arndb.de>,
ulli.kroll@googlemail.com, linux-clk@vger.kernel.org,
rostedt@goodmis.org, ink@jurassic.park.msu.ru, bcain@quicinc.com,
tsbogend@alpha.franken.de, linux-parisc@vger.kernel.org,
ryabinin.a.a@gmail.com, sudeep.holla@arm.com,
shawnguo@kernel.org, davem@davemloft.net, dalias@libc.org,
tony@atomide.com, amakhalov@vmware.com,
konrad.dybcio@somainline.org, bjorn.andersson@linaro.org,
glider@google.com, hpa@zytor.com, sparclinux@vger.kernel.org,
linux-hexagon@vger.kernel.org, linux-riscv@lists.infradead.org,
vincenzo.frascino@arm.com, anton.ivanov@cambridgegreys.com,
jonas@southpole.se, yury.norov@gmail.com, richard@nod.at,
x86@kernel.org, linux@armlinux.org.uk, mingo@redhat.com,
aou@eecs.berkeley.edu, hca@linux.ibm.com,
richard.henderson@linaro.org, stefan.kristiansson@saunalahti.fi,
openrisc@lists.librecores.org, acme@kernel.org,
paul.walmsley@sifive.com, linux-tegra@vger.kernel.org,
namhyung@kernel.org, andriy.shevchenko@linux.intel.com,
jpoimboe@kernel.org, dvyukov@google.com, jgross@suse.com,
monstr@monstr.eu, linux-mips@vger.kernel.org, palmer@dabbelt.com,
anup@brainfault.org, bp@alien8.de, johannes@sipsolutions.net,
linuxppc-dev@lists.ozlabs.org
Subject: [PATCH v2 42/44] entry,kasan,x86: Disallow overriding mem*() functions
Date: Mon, 19 Sep 2022 12:00:21 +0200 [thread overview]
Message-ID: <20220919101523.177759249@infradead.org> (raw)
In-Reply-To: 20220919095939.761690562@infradead.org
KASAN cannot just hijack the mem*() functions, it needs to emit
__asan_mem*() variants if it wants instrumentation (other sanitizers
already do this).
vmlinux.o: warning: objtool: sync_regs+0x24: call to memcpy() leaves .noinstr.text section
vmlinux.o: warning: objtool: vc_switch_off_ist+0xbe: call to memcpy() leaves .noinstr.text section
vmlinux.o: warning: objtool: fixup_bad_iret+0x36: call to memset() leaves .noinstr.text section
vmlinux.o: warning: objtool: __sev_get_ghcb+0xa0: call to memcpy() leaves .noinstr.text section
vmlinux.o: warning: objtool: __sev_put_ghcb+0x35: call to memcpy() leaves .noinstr.text section
Remove the weak aliases to ensure nobody hijacks these functions and
add them to the noinstr section.
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
---
arch/x86/lib/memcpy_64.S | 5 ++---
arch/x86/lib/memmove_64.S | 4 +++-
arch/x86/lib/memset_64.S | 4 +++-
mm/kasan/kasan.h | 4 ++++
mm/kasan/shadow.c | 38 ++++++++++++++++++++++++++++++++++++++
tools/objtool/check.c | 3 +++
6 files changed, 53 insertions(+), 5 deletions(-)
--- a/arch/x86/lib/memcpy_64.S
+++ b/arch/x86/lib/memcpy_64.S
@@ -7,7 +7,7 @@
#include <asm/alternative.h>
#include <asm/export.h>
-.pushsection .noinstr.text, "ax"
+.section .noinstr.text, "ax"
/*
* We build a jump to memcpy_orig by default which gets NOPped out on
@@ -42,7 +42,7 @@ SYM_FUNC_START(__memcpy)
SYM_FUNC_END(__memcpy)
EXPORT_SYMBOL(__memcpy)
-SYM_FUNC_ALIAS_WEAK(memcpy, __memcpy)
+SYM_FUNC_ALIAS(memcpy, __memcpy)
EXPORT_SYMBOL(memcpy)
/*
@@ -183,4 +183,3 @@ SYM_FUNC_START_LOCAL(memcpy_orig)
RET
SYM_FUNC_END(memcpy_orig)
-.popsection
--- a/arch/x86/lib/memmove_64.S
+++ b/arch/x86/lib/memmove_64.S
@@ -13,6 +13,8 @@
#undef memmove
+.section .noinstr.text, "ax"
+
/*
* Implement memmove(). This can handle overlap between src and dst.
*
@@ -213,5 +215,5 @@ SYM_FUNC_START(__memmove)
SYM_FUNC_END(__memmove)
EXPORT_SYMBOL(__memmove)
-SYM_FUNC_ALIAS_WEAK(memmove, __memmove)
+SYM_FUNC_ALIAS(memmove, __memmove)
EXPORT_SYMBOL(memmove)
--- a/arch/x86/lib/memset_64.S
+++ b/arch/x86/lib/memset_64.S
@@ -6,6 +6,8 @@
#include <asm/alternative.h>
#include <asm/export.h>
+.section .noinstr.text, "ax"
+
/*
* ISO C memset - set a memory block to a byte value. This function uses fast
* string to get better performance than the original function. The code is
@@ -43,7 +45,7 @@ SYM_FUNC_START(__memset)
SYM_FUNC_END(__memset)
EXPORT_SYMBOL(__memset)
-SYM_FUNC_ALIAS_WEAK(memset, __memset)
+SYM_FUNC_ALIAS(memset, __memset)
EXPORT_SYMBOL(memset)
/*
--- a/mm/kasan/kasan.h
+++ b/mm/kasan/kasan.h
@@ -551,6 +551,10 @@ void __asan_set_shadow_f3(const void *ad
void __asan_set_shadow_f5(const void *addr, size_t size);
void __asan_set_shadow_f8(const void *addr, size_t size);
+void *__asan_memset(void *addr, int c, size_t len);
+void *__asan_memmove(void *dest, const void *src, size_t len);
+void *__asan_memcpy(void *dest, const void *src, size_t len);
+
void __hwasan_load1_noabort(unsigned long addr);
void __hwasan_store1_noabort(unsigned long addr);
void __hwasan_load2_noabort(unsigned long addr);
--- a/mm/kasan/shadow.c
+++ b/mm/kasan/shadow.c
@@ -38,6 +38,12 @@ bool __kasan_check_write(const volatile
}
EXPORT_SYMBOL(__kasan_check_write);
+#ifndef CONFIG_GENERIC_ENTRY
+/*
+ * CONFIG_GENERIC_ENTRY relies on compiler emitted mem*() calls to not be
+ * instrumented. KASAN enabled toolchains should emit __asan_mem*() functions
+ * for the sites they want to instrument.
+ */
#undef memset
void *memset(void *addr, int c, size_t len)
{
@@ -68,6 +74,38 @@ void *memcpy(void *dest, const void *src
return __memcpy(dest, src, len);
}
+#endif
+
+void *__asan_memset(void *addr, int c, size_t len)
+{
+ if (!kasan_check_range((unsigned long)addr, len, true, _RET_IP_))
+ return NULL;
+
+ return __memset(addr, c, len);
+}
+EXPORT_SYMBOL(__asan_memset);
+
+#ifdef __HAVE_ARCH_MEMMOVE
+void *__asan_memmove(void *dest, const void *src, size_t len)
+{
+ if (!kasan_check_range((unsigned long)src, len, false, _RET_IP_) ||
+ !kasan_check_range((unsigned long)dest, len, true, _RET_IP_))
+ return NULL;
+
+ return __memmove(dest, src, len);
+}
+EXPORT_SYMBOL(__asan_memmove);
+#endif
+
+void *__asan_memcpy(void *dest, const void *src, size_t len)
+{
+ if (!kasan_check_range((unsigned long)src, len, false, _RET_IP_) ||
+ !kasan_check_range((unsigned long)dest, len, true, _RET_IP_))
+ return NULL;
+
+ return __memcpy(dest, src, len);
+}
+EXPORT_SYMBOL(__asan_memcpy);
void kasan_poison(const void *addr, size_t size, u8 value, bool init)
{
--- a/tools/objtool/check.c
+++ b/tools/objtool/check.c
@@ -956,6 +956,9 @@ static const char *uaccess_safe_builtin[
"__asan_store16_noabort",
"__kasan_check_read",
"__kasan_check_write",
+ "__asan_memset",
+ "__asan_memmove",
+ "__asan_memcpy",
/* KASAN in-line */
"__asan_report_load_n_noabort",
"__asan_report_load1_noabort",
WARNING: multiple messages have this Message-ID (diff)
From: Peter Zijlstra <peterz@infradead.org>
To: peterz@infradead.org
Cc: juri.lelli@redhat.com, rafael@kernel.org,
catalin.marinas@arm.com, linus.walleij@linaro.org,
bsegall@google.com, guoren@kernel.org, pavel@ucw.cz,
agordeev@linux.ibm.com, linux-arch@vger.kernel.org,
vincent.guittot@linaro.org, mpe@ellerman.id.au,
chenhuacai@kernel.org, christophe.leroy@csgroup.eu,
linux-acpi@vger.kernel.org, agross@kernel.org,
geert@linux-m68k.org, linux-imx@nxp.com, vgupta@kernel.org,
mattst88@gmail.com, mturquette@baylibre.com, sammy@sammy.net,
pmladek@suse.com, linux-pm@vger.kernel.org,
Sascha Hauer <s.hauer@pengutronix.de>,
linux-um@lists.infradead.org, npiggin@gmail.com,
tglx@linutronix.de, linux-omap@vger.kernel.org,
dietmar.eggemann@arm.com, andreyknvl@gmail.com,
gregkh@linuxfoundation.org, linux-kernel@vger.kernel.org,
linux-perf-users@vger.kernel.org, senozhatsky@chromium.org,
svens@linux.ibm.com, jolsa@kernel.org, tj@kernel.org,
Andrew Morton <akpm@linux-foundation.org>,
mark.rutland@arm.com, linux-ia64@vger.kernel.org,
dave.hansen@linux.intel.com,
virtualization@lists.linux-foundation.org,
James.Bottomley@HansenPartnership.com, jcmvbkbc@gmail.com,
thierry.reding@gmail.com, kernel@xen0n.name, cl@linux.com,
linux-s390@vger.kernel.org, vschneid@redhat.com,
john.ogness@linutronix.de, ysato@users.sourceforge.jp,
linux-sh@vger.kernel.org, festevam@gmail.com, deller@gmx.de,
daniel.lezcano@linaro.org, jonathanh@nvidia.com,
dennis@kernel.org, lenb@kernel.org,
linux-xtensa@linux-xtensa.org, kernel@pengutronix.de,
gor@linux.ibm.com, linux-arm-msm@vger.kernel.org,
linux-alpha@vger.kernel.org, linux-m68k@lists.linux-m68k.org,
loongarch@lists.linux.dev, shorne@gmail.com, chris@zankel.net,
sboyd@kernel.org, dinguyen@kernel.org, bristot@redhat.com,
alexander.shishkin@linux.intel.com, fweisbec@gmail.com,
lpieralisi@kernel.org, atishp@atishpatra.org,
linux@rasmusvillemoes.dk, kasan-dev@googlegroups.com,
will@kernel.org, boris.ostrovsky@oracle.com, khilman@kernel.org,
linux-csky@vger.kernel.org, pv-drivers@vmware.com,
linux-snps-arc@lists.infradead.org, mgorman@suse.de,
jacob.jun.pan@linux.intel.com, Arnd Bergmann <arnd@arndb.de>,
ulli.kroll@googlemail.com, linux-clk@vger.kernel.org,
rostedt@goodmis.org, ink@jurassic.park.msu.ru, bcain@quicinc.com,
tsbogend@alpha.franken.de, linux-parisc@vger.kernel.org,
ryabinin.a.a@gmail.com, sudeep.holla@arm.com,
shawnguo@kernel.org, davem@davemloft.net, dalias@libc.org,
tony@atomide.com, amakhalov@vmware.com,
konrad.dybcio@somainline.org, bjorn.andersson@linaro.org,
glider@google.com, hpa@zytor.com, sparclinux@vger.kernel.org,
linux-hexagon@vger.kernel.org, linux-riscv@lists.infradead.org,
vincenzo.frascino@arm.com, anton.ivanov@cambridgegreys.com,
jonas@southpole.se, yury.norov@gmail.com, richard@nod.at,
x86@kernel.org, linux@armlinux.org.uk, mingo@redhat.com,
aou@eecs.berkeley.edu, hca@linux.ibm.com,
richard.henderson@linaro.org, stefan.kristiansson@saunalahti.fi,
openrisc@lists.librecores.org, acme@kernel.org,
paul.walmsley@sifive.com, linux-tegra@vger.kernel.org,
namhyung@kernel.org, andriy.shevchenko@linux.intel.com,
jpoimboe@kernel.org, dvyukov@google.com, jgross@suse.com,
monstr@monstr.eu, linux-mips@vger.kernel.org, palmer@dabbelt.com,
anup@brainfault.org, bp@alien8.de, johannes@sipsolutions.net,
linuxppc-dev@lists.ozlabs.org
Subject: [PATCH v2 42/44] entry, kasan, x86: Disallow overriding mem*() functions
Date: Mon, 19 Sep 2022 12:00:21 +0200 [thread overview]
Message-ID: <20220919101523.177759249@infradead.org> (raw)
In-Reply-To: 20220919095939.761690562@infradead.org
KASAN cannot just hijack the mem*() functions, it needs to emit
__asan_mem*() variants if it wants instrumentation (other sanitizers
already do this).
vmlinux.o: warning: objtool: sync_regs+0x24: call to memcpy() leaves .noinstr.text section
vmlinux.o: warning: objtool: vc_switch_off_ist+0xbe: call to memcpy() leaves .noinstr.text section
vmlinux.o: warning: objtool: fixup_bad_iret+0x36: call to memset() leaves .noinstr.text section
vmlinux.o: warning: objtool: __sev_get_ghcb+0xa0: call to memcpy() leaves .noinstr.text section
vmlinux.o: warning: objtool: __sev_put_ghcb+0x35: call to memcpy() leaves .noinstr.text section
Remove the weak aliases to ensure nobody hijacks these functions and
add them to the noinstr section.
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
---
arch/x86/lib/memcpy_64.S | 5 ++---
arch/x86/lib/memmove_64.S | 4 +++-
arch/x86/lib/memset_64.S | 4 +++-
mm/kasan/kasan.h | 4 ++++
mm/kasan/shadow.c | 38 ++++++++++++++++++++++++++++++++++++++
tools/objtool/check.c | 3 +++
6 files changed, 53 insertions(+), 5 deletions(-)
--- a/arch/x86/lib/memcpy_64.S
+++ b/arch/x86/lib/memcpy_64.S
@@ -7,7 +7,7 @@
#include <asm/alternative.h>
#include <asm/export.h>
-.pushsection .noinstr.text, "ax"
+.section .noinstr.text, "ax"
/*
* We build a jump to memcpy_orig by default which gets NOPped out on
@@ -42,7 +42,7 @@ SYM_FUNC_START(__memcpy)
SYM_FUNC_END(__memcpy)
EXPORT_SYMBOL(__memcpy)
-SYM_FUNC_ALIAS_WEAK(memcpy, __memcpy)
+SYM_FUNC_ALIAS(memcpy, __memcpy)
EXPORT_SYMBOL(memcpy)
/*
@@ -183,4 +183,3 @@ SYM_FUNC_START_LOCAL(memcpy_orig)
RET
SYM_FUNC_END(memcpy_orig)
-.popsection
--- a/arch/x86/lib/memmove_64.S
+++ b/arch/x86/lib/memmove_64.S
@@ -13,6 +13,8 @@
#undef memmove
+.section .noinstr.text, "ax"
+
/*
* Implement memmove(). This can handle overlap between src and dst.
*
@@ -213,5 +215,5 @@ SYM_FUNC_START(__memmove)
SYM_FUNC_END(__memmove)
EXPORT_SYMBOL(__memmove)
-SYM_FUNC_ALIAS_WEAK(memmove, __memmove)
+SYM_FUNC_ALIAS(memmove, __memmove)
EXPORT_SYMBOL(memmove)
--- a/arch/x86/lib/memset_64.S
+++ b/arch/x86/lib/memset_64.S
@@ -6,6 +6,8 @@
#include <asm/alternative.h>
#include <asm/export.h>
+.section .noinstr.text, "ax"
+
/*
* ISO C memset - set a memory block to a byte value. This function uses fast
* string to get better performance than the original function. The code is
@@ -43,7 +45,7 @@ SYM_FUNC_START(__memset)
SYM_FUNC_END(__memset)
EXPORT_SYMBOL(__memset)
-SYM_FUNC_ALIAS_WEAK(memset, __memset)
+SYM_FUNC_ALIAS(memset, __memset)
EXPORT_SYMBOL(memset)
/*
--- a/mm/kasan/kasan.h
+++ b/mm/kasan/kasan.h
@@ -551,6 +551,10 @@ void __asan_set_shadow_f3(const void *ad
void __asan_set_shadow_f5(const void *addr, size_t size);
void __asan_set_shadow_f8(const void *addr, size_t size);
+void *__asan_memset(void *addr, int c, size_t len);
+void *__asan_memmove(void *dest, const void *src, size_t len);
+void *__asan_memcpy(void *dest, const void *src, size_t len);
+
void __hwasan_load1_noabort(unsigned long addr);
void __hwasan_store1_noabort(unsigned long addr);
void __hwasan_load2_noabort(unsigned long addr);
--- a/mm/kasan/shadow.c
+++ b/mm/kasan/shadow.c
@@ -38,6 +38,12 @@ bool __kasan_check_write(const volatile
}
EXPORT_SYMBOL(__kasan_check_write);
+#ifndef CONFIG_GENERIC_ENTRY
+/*
+ * CONFIG_GENERIC_ENTRY relies on compiler emitted mem*() calls to not be
+ * instrumented. KASAN enabled toolchains should emit __asan_mem*() functions
+ * for the sites they want to instrument.
+ */
#undef memset
void *memset(void *addr, int c, size_t len)
{
@@ -68,6 +74,38 @@ void *memcpy(void *dest, const void *src
return __memcpy(dest, src, len);
}
+#endif
+
+void *__asan_memset(void *addr, int c, size_t len)
+{
+ if (!kasan_check_range((unsigned long)addr, len, true, _RET_IP_))
+ return NULL;
+
+ return __memset(addr, c, len);
+}
+EXPORT_SYMBOL(__asan_memset);
+
+#ifdef __HAVE_ARCH_MEMMOVE
+void *__asan_memmove(void *dest, const void *src, size_t len)
+{
+ if (!kasan_check_range((unsigned long)src, len, false, _RET_IP_) ||
+ !kasan_check_range((unsigned long)dest, len, true, _RET_IP_))
+ return NULL;
+
+ return __memmove(dest, src, len);
+}
+EXPORT_SYMBOL(__asan_memmove);
+#endif
+
+void *__asan_memcpy(void *dest, const void *src, size_t len)
+{
+ if (!kasan_check_range((unsigned long)src, len, false, _RET_IP_) ||
+ !kasan_check_range((unsigned long)dest, len, true, _RET_IP_))
+ return NULL;
+
+ return __memcpy(dest, src, len);
+}
+EXPORT_SYMBOL(__asan_memcpy);
void kasan_poison(const void *addr, size_t size, u8 value, bool init)
{
--- a/tools/objtool/check.c
+++ b/tools/objtool/check.c
@@ -956,6 +956,9 @@ static const char *uaccess_safe_builtin[
"__asan_store16_noabort",
"__kasan_check_read",
"__kasan_check_write",
+ "__asan_memset",
+ "__asan_memmove",
+ "__asan_memcpy",
/* KASAN in-line */
"__asan_report_load_n_noabort",
"__asan_report_load1_noabort",
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization
next prev parent reply other threads:[~2022-09-19 10:00 UTC|newest]
Thread overview: 675+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-19 9:59 [PATCH v2 00/44] cpuidle,rcu: Clean up the mess Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` [PATCH v2 01/44] x86/perf/amd: Remove tracing from perf_lopwr_cb() Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` [PATCH v2 02/44] x86/idle: Replace x86_idle with a static_call Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` [PATCH v2 03/44] cpuidle/poll: Ensure IRQ state is invariant Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 13:19 ` Frederic Weisbecker
2022-09-19 13:19 ` Frederic Weisbecker
2022-09-19 13:19 ` Frederic Weisbecker
2022-09-19 13:19 ` Frederic Weisbecker
2022-09-19 13:19 ` Frederic Weisbecker
2022-09-19 13:19 ` Frederic Weisbecker
2022-09-20 8:57 ` Peter Zijlstra
2022-09-20 8:57 ` Peter Zijlstra
2022-09-20 8:57 ` Peter Zijlstra
2022-09-20 8:57 ` Peter Zijlstra
2022-09-20 8:57 ` Peter Zijlstra
2022-09-20 8:57 ` Peter Zijlstra
2022-09-20 8:57 ` Peter Zijlstra
2022-09-20 8:57 ` Peter Zijlstra
2022-09-20 10:43 ` Frederic Weisbecker
2022-09-20 10:43 ` Frederic Weisbecker
2022-09-20 10:43 ` Frederic Weisbecker
2022-09-20 10:43 ` Frederic Weisbecker
2022-09-20 10:43 ` Frederic Weisbecker
2022-09-20 10:43 ` Frederic Weisbecker
2022-09-20 10:43 ` Frederic Weisbecker
2022-09-19 9:59 ` [PATCH v2 04/44] cpuidle: Move IRQ state validation Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` [PATCH v2 05/44] cpuidle,riscv: Push RCU-idle into driver Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 11:51 ` Anup Patel
2022-09-19 11:54 ` Anup Patel
2022-09-19 11:54 ` Anup Patel
2022-09-19 11:54 ` Anup Patel
2022-09-19 11:54 ` Anup Patel
2022-09-19 11:54 ` Anup Patel
2022-09-19 11:54 ` Anup Patel
2022-09-19 11:54 ` Anup Patel
2022-09-19 13:46 ` Frederic Weisbecker
2022-09-19 13:46 ` Frederic Weisbecker
2022-09-19 13:46 ` Frederic Weisbecker
2022-09-19 13:46 ` Frederic Weisbecker
2022-09-19 13:46 ` Frederic Weisbecker
2022-09-19 13:46 ` Frederic Weisbecker
2022-09-19 9:59 ` [PATCH v2 06/44] cpuidle,tegra: " Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 14:05 ` Frederic Weisbecker
2022-09-19 14:05 ` Frederic Weisbecker
2022-09-19 14:05 ` Frederic Weisbecker
2022-09-19 14:05 ` Frederic Weisbecker
2022-09-19 14:05 ` Frederic Weisbecker
2022-09-19 14:05 ` Frederic Weisbecker
2022-09-19 9:59 ` [PATCH v2 07/44] cpuidle,psci: " Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
[not found] ` <20220919101520.802976773-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2022-09-19 14:11 ` Frederic Weisbecker
2022-09-19 14:11 ` Frederic Weisbecker
2022-09-19 14:11 ` Frederic Weisbecker
2022-09-19 14:11 ` Frederic Weisbecker
2022-09-19 14:11 ` Frederic Weisbecker
2022-09-19 14:11 ` Frederic Weisbecker
2022-09-21 21:51 ` Kajetan Puchalski
2022-09-21 21:51 ` Kajetan Puchalski
2022-09-21 21:51 ` Kajetan Puchalski
2022-09-21 21:51 ` Kajetan Puchalski
2022-09-21 21:51 ` Kajetan Puchalski
2022-09-21 21:51 ` Kajetan Puchalski
2022-09-21 21:51 ` Kajetan Puchalski
2022-09-22 0:45 ` Guo Ren
2022-09-22 0:45 ` Guo Ren
2022-09-22 0:45 ` Guo Ren
2022-09-22 0:45 ` Guo Ren
2022-09-22 0:45 ` Guo Ren
2022-09-22 0:45 ` Guo Ren
2022-09-22 0:45 ` Guo Ren
2022-09-19 9:59 ` [PATCH v2 08/44] cpuidle,imx6: " Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 14:21 ` Frederic Weisbecker
2022-09-19 14:21 ` Frederic Weisbecker
2022-09-19 14:21 ` Frederic Weisbecker
2022-09-19 14:21 ` Frederic Weisbecker
2022-09-19 14:21 ` Frederic Weisbecker
2022-09-19 14:21 ` Frederic Weisbecker
2022-09-19 14:56 ` Peter Zijlstra
2022-09-19 15:00 ` Peter Zijlstra
2022-09-19 15:00 ` Peter Zijlstra
2022-09-19 15:00 ` Peter Zijlstra
2022-09-19 15:00 ` Peter Zijlstra
2022-09-19 15:00 ` Peter Zijlstra
2022-09-19 15:00 ` Peter Zijlstra
2022-09-19 15:00 ` Peter Zijlstra
2022-09-20 8:58 ` Peter Zijlstra
2022-09-20 8:58 ` Peter Zijlstra
2022-09-20 8:58 ` Peter Zijlstra
2022-09-20 8:58 ` Peter Zijlstra
2022-09-20 8:58 ` Peter Zijlstra
2022-09-20 8:58 ` Peter Zijlstra
2022-09-20 8:58 ` Peter Zijlstra
2022-09-20 8:58 ` Peter Zijlstra
2022-09-20 8:56 ` Frederic Weisbecker
2022-09-20 9:01 ` Frederic Weisbecker
2022-09-20 9:01 ` Frederic Weisbecker
2022-09-20 9:01 ` Frederic Weisbecker
2022-09-20 9:01 ` Frederic Weisbecker
2022-09-20 9:01 ` Frederic Weisbecker
2022-09-20 9:01 ` Frederic Weisbecker
2022-09-19 14:49 ` Frederic Weisbecker
2022-09-19 14:49 ` Frederic Weisbecker
2022-09-19 14:49 ` Frederic Weisbecker
2022-09-19 14:49 ` Frederic Weisbecker
2022-09-19 14:49 ` Frederic Weisbecker
2022-09-19 14:49 ` Frederic Weisbecker
2022-09-19 14:49 ` Frederic Weisbecker
2022-09-19 14:56 ` Peter Zijlstra
2022-09-19 15:01 ` Peter Zijlstra
2022-09-19 15:01 ` Peter Zijlstra
2022-09-19 15:01 ` Peter Zijlstra
2022-09-19 15:01 ` Peter Zijlstra
2022-09-19 15:01 ` Peter Zijlstra
2022-09-19 15:01 ` Peter Zijlstra
2022-09-19 15:01 ` Peter Zijlstra
2022-09-19 14:59 ` Peter Zijlstra
2022-09-19 15:03 ` Peter Zijlstra
2022-09-19 15:03 ` Peter Zijlstra
2022-09-19 15:03 ` Peter Zijlstra
2022-09-19 15:03 ` Peter Zijlstra
2022-09-19 15:03 ` Peter Zijlstra
2022-09-19 15:03 ` Peter Zijlstra
2022-09-19 15:03 ` Peter Zijlstra
2022-09-19 15:17 ` Frederic Weisbecker
2022-09-19 15:17 ` Frederic Weisbecker
2022-09-19 15:17 ` Frederic Weisbecker
2022-09-19 15:17 ` Frederic Weisbecker
2022-09-19 15:17 ` Frederic Weisbecker
2022-09-19 15:17 ` Frederic Weisbecker
2022-09-19 15:17 ` Frederic Weisbecker
2022-09-19 9:59 ` [PATCH v2 09/44] cpuidle,omap3: " Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 14:31 ` Frederic Weisbecker
2022-09-19 14:31 ` Frederic Weisbecker
2022-09-19 14:31 ` Frederic Weisbecker
2022-09-19 14:31 ` Frederic Weisbecker
2022-09-19 14:31 ` Frederic Weisbecker
2022-09-19 14:31 ` Frederic Weisbecker
2022-09-19 14:31 ` Frederic Weisbecker
2022-09-19 15:19 ` Peter Zijlstra
2022-09-19 15:19 ` Peter Zijlstra
2022-09-19 15:19 ` Peter Zijlstra
2022-09-19 15:19 ` Peter Zijlstra
2022-09-19 15:19 ` Peter Zijlstra
2022-09-19 15:19 ` Peter Zijlstra
2022-09-19 15:19 ` Peter Zijlstra
2022-09-19 15:19 ` Peter Zijlstra
2022-09-20 8:39 ` Frederic Weisbecker
2022-09-20 8:39 ` Frederic Weisbecker
2022-09-20 8:39 ` Frederic Weisbecker
2022-09-20 8:39 ` Frederic Weisbecker
2022-09-20 8:39 ` Frederic Weisbecker
2022-09-20 8:39 ` Frederic Weisbecker
2022-09-20 8:39 ` Frederic Weisbecker
2022-09-19 14:43 ` Frederic Weisbecker
2022-09-19 14:43 ` Frederic Weisbecker
2022-09-19 14:43 ` Frederic Weisbecker
2022-09-19 14:43 ` Frederic Weisbecker
2022-09-19 14:43 ` Frederic Weisbecker
2022-09-19 14:43 ` Frederic Weisbecker
2022-09-19 14:43 ` Frederic Weisbecker
2022-09-19 9:59 ` [PATCH v2 10/44] cpuidle,armada: " Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 14:39 ` Frederic Weisbecker
2022-09-19 14:39 ` Frederic Weisbecker
2022-09-19 14:39 ` Frederic Weisbecker
2022-09-19 14:39 ` Frederic Weisbecker
2022-09-19 14:39 ` Frederic Weisbecker
2022-09-19 14:39 ` Frederic Weisbecker
2022-09-19 14:39 ` Frederic Weisbecker
2022-09-19 9:59 ` [PATCH v2 11/44] cpuidle,omap4: " Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-20 10:53 ` Frederic Weisbecker
2022-09-20 10:53 ` Frederic Weisbecker
2022-09-20 10:53 ` Frederic Weisbecker
2022-09-20 10:53 ` Frederic Weisbecker
2022-09-20 10:53 ` Frederic Weisbecker
2022-09-20 10:53 ` Frederic Weisbecker
2022-09-20 10:53 ` Frederic Weisbecker
2022-09-19 9:59 ` [PATCH v2 12/44] cpuidle,dt: " Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-10-04 10:59 ` Ulf Hansson
2022-10-04 11:03 ` Ulf Hansson
2022-10-04 11:03 ` Ulf Hansson
2022-10-04 11:03 ` Ulf Hansson
2022-10-04 11:03 ` Ulf Hansson
2022-10-04 11:03 ` Ulf Hansson
2022-10-04 11:03 ` Ulf Hansson
2022-10-04 11:03 ` Ulf Hansson
2022-10-04 11:43 ` Ulf Hansson
2022-10-04 11:43 ` Ulf Hansson
2022-10-04 11:43 ` Ulf Hansson
2022-10-04 11:43 ` Ulf Hansson
2022-10-04 11:43 ` Ulf Hansson
2022-10-04 11:43 ` Ulf Hansson
2022-10-04 11:43 ` Ulf Hansson
2022-10-04 11:43 ` Ulf Hansson
2022-11-16 15:29 ` Peter Zijlstra
2022-11-16 15:29 ` Peter Zijlstra
2022-11-16 15:29 ` Peter Zijlstra
2022-11-16 15:29 ` Peter Zijlstra
2022-11-16 15:29 ` Peter Zijlstra
2022-11-16 15:29 ` Peter Zijlstra
2022-11-16 15:29 ` Peter Zijlstra
2022-11-16 15:29 ` Peter Zijlstra
2022-11-16 15:29 ` Peter Zijlstra
2022-11-22 15:58 ` Ulf Hansson
2022-11-22 16:04 ` Ulf Hansson
2022-11-22 16:04 ` Ulf Hansson
2022-11-22 16:04 ` Ulf Hansson
2022-11-22 16:04 ` Ulf Hansson
2022-11-22 16:04 ` Ulf Hansson
2022-11-22 16:04 ` Ulf Hansson
2022-11-22 16:04 ` Ulf Hansson
2022-11-22 16:04 ` Ulf Hansson
2022-09-19 9:59 ` [PATCH v2 13/44] cpuidle: Fix ct_idle_*() usage Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` [PATCH v2 14/44] cpuidle,cpu_pm: Remove RCU fiddling from cpu_pm_{enter,exit}() Peter Zijlstra
2022-09-19 9:59 ` [PATCH v2 14/44] cpuidle, cpu_pm: Remove RCU fiddling from cpu_pm_{enter, exit}() Peter Zijlstra
2022-09-19 9:59 ` [PATCH v2 14/44] cpuidle,cpu_pm: Remove RCU fiddling from cpu_pm_{enter,exit}() Peter Zijlstra
2022-09-19 9:59 ` [PATCH v2 14/44] cpuidle, cpu_pm: Remove RCU fiddling from cpu_pm_{enter, exit}() Peter Zijlstra
2022-09-19 9:59 ` [PATCH v2 14/44] cpuidle,cpu_pm: Remove RCU fiddling from cpu_pm_{enter,exit}() Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-10-04 11:04 ` [PATCH v2 14/44] cpuidle, cpu_pm: Remove RCU fiddling from cpu_pm_{enter, exit}() Ulf Hansson
2022-10-04 11:04 ` Ulf Hansson
2022-10-04 11:04 ` [PATCH v2 14/44] cpuidle,cpu_pm: Remove RCU fiddling from cpu_pm_{enter,exit}() Ulf Hansson
2022-10-04 11:04 ` [PATCH v2 14/44] cpuidle, cpu_pm: Remove RCU fiddling from cpu_pm_{enter, exit}() Ulf Hansson
2022-10-04 11:04 ` [PATCH v2 14/44] cpuidle,cpu_pm: Remove RCU fiddling from cpu_pm_{enter,exit}() Ulf Hansson
2022-10-04 11:04 ` Ulf Hansson
2022-10-04 11:04 ` Ulf Hansson
2022-10-04 11:04 ` Ulf Hansson
2022-09-19 9:59 ` [PATCH v2 15/44] acpi_idle: Remove tracing Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` [PATCH v2 16/44] cpuidle: Annotate poll_idle() Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` [PATCH v2 17/44] objtool/idle: Validate __cpuidle code as noinstr Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` [PATCH v2 18/44] cpuidle, intel_idle: Fix CPUIDLE_FLAG_IRQ_ENABLE *again* Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` [PATCH v2 18/44] cpuidle,intel_idle: " Peter Zijlstra
2022-09-19 9:59 ` [PATCH v2 18/44] cpuidle, intel_idle: " Peter Zijlstra
2022-09-19 9:59 ` [PATCH v2 18/44] cpuidle,intel_idle: " Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` [PATCH v2 19/44] cpuidle,intel_idle: Fix CPUIDLE_FLAG_INIT_XSTATE Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` [PATCH v2 20/44] cpuidle,intel_idle: Fix CPUIDLE_FLAG_IBRS Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 9:59 ` Peter Zijlstra
2022-09-19 10:00 ` [PATCH v2 21/44] arch/idle: Change arch_cpu_idle() IRQ behaviour Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-20 5:08 ` Guo Ren
2022-09-20 5:08 ` Guo Ren
2022-09-20 5:08 ` Guo Ren
2022-09-20 5:08 ` Guo Ren
2022-09-20 5:08 ` Guo Ren
2022-09-20 5:08 ` Guo Ren
2022-09-20 5:08 ` Guo Ren
2022-09-19 10:00 ` [PATCH v2 22/44] x86/tdx: Remove TDX_HCALL_ISSUE_STI Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` [PATCH v2 23/44] arm,smp: Remove trace_.*_rcuidle() usage Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-10-04 11:08 ` Ulf Hansson
2022-10-04 11:08 ` Ulf Hansson
2022-10-04 11:08 ` Ulf Hansson
2022-10-04 11:08 ` Ulf Hansson
2022-10-04 11:08 ` Ulf Hansson
2022-10-04 11:08 ` Ulf Hansson
2022-10-04 11:08 ` Ulf Hansson
2022-10-04 11:08 ` Ulf Hansson
2022-09-19 10:00 ` [PATCH v2 24/44] arm64,smp: " Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` [PATCH v2 25/44] printk: " Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-20 2:49 ` Sergey Senozhatsky
2022-09-20 2:49 ` Sergey Senozhatsky
2022-09-20 2:49 ` Sergey Senozhatsky
2022-09-20 2:49 ` Sergey Senozhatsky
2022-09-20 2:49 ` Sergey Senozhatsky
2022-09-20 2:49 ` Sergey Senozhatsky
2022-09-20 2:49 ` Sergey Senozhatsky
2022-09-19 10:00 ` [PATCH v2 26/44] time/tick-broadcast: Remove RCU_NONIDLE usage Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` [PATCH v2 27/44] cpuidle, sched: Remove annotations from TIF_{POLLING_NRFLAG, NEED_RESCHED} Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` [PATCH v2 27/44] cpuidle,sched: Remove annotations from TIF_{POLLING_NRFLAG,NEED_RESCHED} Peter Zijlstra
2022-09-19 10:00 ` [PATCH v2 27/44] cpuidle, sched: Remove annotations from TIF_{POLLING_NRFLAG, NEED_RESCHED} Peter Zijlstra
2022-09-19 10:00 ` [PATCH v2 27/44] cpuidle,sched: Remove annotations from TIF_{POLLING_NRFLAG,NEED_RESCHED} Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` [PATCH v2 28/44] cpuidle,mwait: Make noinstr clean Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` [PATCH v2 29/44] cpuidle,tdx: Make tdx " Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` [PATCH v2 30/44] cpuidle,xenpv: Make more PARAVIRT_XXL " Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:45 ` Juergen Gross via Virtualization
2022-09-19 10:45 ` Juergen Gross via Virtualization
2022-09-19 10:45 ` Juergen Gross
2022-09-19 10:45 ` Juergen Gross
2022-09-19 10:45 ` Juergen Gross
2022-09-19 10:45 ` Juergen Gross
2022-09-19 10:45 ` Juergen Gross
2022-09-19 10:00 ` [PATCH v2 31/44] cpuidle,nospec: Make " Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` [PATCH v2 32/44] cpuidle,acpi: " Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` [PATCH v2 33/44] ftrace: WARN on rcuidle Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-26 18:41 ` Steven Rostedt
2022-09-26 18:41 ` Steven Rostedt
2022-09-26 18:41 ` Steven Rostedt
2022-09-26 18:41 ` Steven Rostedt
2022-09-26 18:41 ` Steven Rostedt
2022-09-26 18:41 ` Steven Rostedt
2022-09-26 18:41 ` Steven Rostedt
2022-09-26 18:41 ` Steven Rostedt
2022-10-04 17:19 ` Mark Rutland
2022-10-04 17:19 ` Mark Rutland
2022-10-04 17:19 ` Mark Rutland
2022-10-04 17:19 ` Mark Rutland
2022-10-04 17:19 ` Mark Rutland
2022-10-04 17:19 ` Mark Rutland
2022-10-04 17:19 ` Mark Rutland
2022-10-04 17:19 ` Mark Rutland
2022-09-19 10:00 ` [PATCH v2 34/44] cpuidle,omap3: Use WFI for omap3_pm_idle() Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` [PATCH v2 35/44] cpuidle,omap3: Push RCU-idle into omap_sram_idle() Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` [PATCH v2 36/44] cpuidle, omap4: Push RCU-idle into omap4_enter_lowpower() Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` [PATCH v2 36/44] cpuidle,omap4: " Peter Zijlstra
2022-09-19 10:00 ` [PATCH v2 36/44] cpuidle, omap4: " Peter Zijlstra
2022-09-19 10:00 ` [PATCH v2 36/44] cpuidle,omap4: " Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` [PATCH v2 37/44] arm,omap2: Use WFI for omap2_pm_idle() Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-27 6:21 ` Tony Lindgren
2022-09-27 6:21 ` Tony Lindgren
2022-09-27 6:21 ` Tony Lindgren
2022-09-27 6:21 ` Tony Lindgren
2022-09-27 6:21 ` Tony Lindgren
2022-09-27 6:21 ` Tony Lindgren
2022-09-27 6:21 ` Tony Lindgren
2022-09-19 10:00 ` [PATCH v2 38/44] cpuidle,powerdomain: Remove trace_.*_rcuidle() Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-10-04 11:12 ` Ulf Hansson
2022-10-04 11:12 ` Ulf Hansson
2022-10-04 11:12 ` Ulf Hansson
2022-10-04 11:12 ` Ulf Hansson
2022-10-04 11:12 ` Ulf Hansson
2022-10-04 11:12 ` Ulf Hansson
2022-10-04 11:12 ` Ulf Hansson
2022-10-04 11:12 ` Ulf Hansson
2022-09-19 10:00 ` [PATCH v2 39/44] cpuidle,clk: " Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-28 18:01 ` Stephen Boyd
2022-09-28 18:01 ` Stephen Boyd
2022-09-28 18:01 ` Stephen Boyd
2022-09-28 18:01 ` Stephen Boyd
2022-09-28 18:01 ` Stephen Boyd
2022-10-04 11:09 ` Ulf Hansson
2022-10-04 11:09 ` Ulf Hansson
2022-10-04 11:09 ` Ulf Hansson
2022-10-04 11:09 ` Ulf Hansson
2022-10-04 11:09 ` Ulf Hansson
2022-10-04 11:09 ` Ulf Hansson
2022-10-04 11:09 ` Ulf Hansson
2022-10-04 11:09 ` Ulf Hansson
2022-09-19 10:00 ` [PATCH v2 40/44] ubsan: Fix objtool UACCESS warns Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` [PATCH v2 41/44] intel_idle: Add force_irq_on module param Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra [this message]
2022-09-19 10:00 ` [PATCH v2 42/44] entry, kasan, x86: Disallow overriding mem*() functions Peter Zijlstra
2022-09-19 10:00 ` [PATCH v2 42/44] entry,kasan,x86: " Peter Zijlstra
2022-09-19 10:00 ` [PATCH v2 42/44] entry, kasan, x86: " Peter Zijlstra
2022-09-19 10:00 ` [PATCH v2 42/44] entry,kasan,x86: " Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` [PATCH v2 43/44] sched: Always inline __this_cpu_preempt_check() Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` [PATCH v2 44/44] arm64,riscv,perf: Remove RCU_NONIDLE() usage Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 10:00 ` Peter Zijlstra
2022-09-19 15:21 ` [PATCH v2 00/44] cpuidle,rcu: Clean up the mess Rafael J. Wysocki
2022-09-19 15:21 ` Rafael J. Wysocki
2022-09-19 15:21 ` Rafael J. Wysocki
2022-09-19 15:21 ` Rafael J. Wysocki
2022-09-19 15:21 ` Rafael J. Wysocki
2022-09-19 15:21 ` Rafael J. Wysocki
2022-09-19 15:21 ` Rafael J. Wysocki
2022-09-19 15:21 ` Rafael J. Wysocki
2022-09-20 12:31 ` Frederic Weisbecker
2022-09-20 12:31 ` Frederic Weisbecker
2022-09-20 12:31 ` Frederic Weisbecker
2022-09-20 12:31 ` Frederic Weisbecker
2022-09-20 12:31 ` Frederic Weisbecker
2022-09-20 12:31 ` Frederic Weisbecker
2022-09-20 12:31 ` Frederic Weisbecker
2022-09-20 14:04 ` Peter Zijlstra
2022-09-20 14:04 ` Peter Zijlstra
2022-09-20 14:04 ` Peter Zijlstra
2022-09-20 14:04 ` Peter Zijlstra
2022-09-20 14:04 ` Peter Zijlstra
2022-09-20 14:04 ` Peter Zijlstra
2022-09-20 14:04 ` Peter Zijlstra
2022-09-27 6:31 ` Tony Lindgren
2022-09-27 6:31 ` Tony Lindgren
2022-09-27 6:31 ` Tony Lindgren
2022-09-27 6:31 ` Tony Lindgren
2022-09-27 6:31 ` Tony Lindgren
2022-09-27 6:31 ` Tony Lindgren
2022-09-27 6:31 ` Tony Lindgren
[not found] ` <20220919095939.761690562-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2022-10-04 15:15 ` Ulf Hansson
2022-10-04 15:15 ` Ulf Hansson
2022-10-04 15:15 ` Ulf Hansson
2022-10-04 15:15 ` Ulf Hansson
2022-10-04 15:15 ` Ulf Hansson
2022-10-04 15:15 ` Ulf Hansson
2022-10-04 15:15 ` Ulf Hansson
2022-10-04 15:15 ` Ulf Hansson
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=20220919101523.177759249@infradead.org \
--to=peterz@infradead.org \
--cc=agordeev@linux.ibm.com \
--cc=agross@kernel.org \
--cc=andreyknvl@gmail.com \
--cc=bsegall@google.com \
--cc=catalin.marinas@arm.com \
--cc=chenhuacai@kernel.org \
--cc=christophe.leroy@csgroup.eu \
--cc=dietmar.eggemann@arm.com \
--cc=geert@linux-m68k.org \
--cc=gregkh@linuxfoundation.org \
--cc=guoren@kernel.org \
--cc=jolsa@kernel.org \
--cc=juri.lelli@redhat.com \
--cc=linus.walleij@linaro.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-arch@vger.kernel.org \
--cc=linux-imx@nxp.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-omap@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=linux-um@lists.infradead.org \
--cc=mattst88@gmail.com \
--cc=mpe@ellerman.id.au \
--cc=mturquette@baylibre.com \
--cc=npiggin@gmail.com \
--cc=pavel@ucw.cz \
--cc=pmladek@suse.com \
--cc=rafael@kernel.org \
--cc=s.hauer@pengutronix.de \
--cc=sammy@sammy.net \
--cc=senozhatsky@chromium.org \
--cc=svens@linux.ibm.com \
--cc=tglx@linutronix.de \
--cc=tj@kernel.org \
--cc=vgupta@kernel.org \
--cc=vincent.guittot@linaro.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: 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.