From: Ahmad Fatoum <a.fatoum@pengutronix.de>
To: barebox@lists.infradead.org
Subject: [PATCH master 1/4] KASan: fix possible breakage with CONFIG_INIT_STACK_ALL
Date: Tue, 22 Apr 2025 09:55:16 +0200 [thread overview]
Message-ID: <20250422075519.219029-1-a.fatoum@pengutronix.de> (raw)
From: Ahmad Fatoum <a.fatoum@barebox.org>
With CONFIG_INIT_STACK_ALL_PATTERN or CONFIG_INIT_STACK_ALL_ZERO,
the compiler emits calls to memset to initialize variables on the stack.
With kasan enabled, this would end up calling KASAN memset, which can
lead to access of global variables prior to relocation.
Brace ourselves for this situation by sidestepping KASAN prior to
relocation.
Signed-off-by: Ahmad Fatoum <a.fatoum@barebox.org>
---
lib/kasan/generic.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/lib/kasan/generic.c b/lib/kasan/generic.c
index 66eebac15600..dda80f790151 100644
--- a/lib/kasan/generic.c
+++ b/lib/kasan/generic.c
@@ -17,6 +17,7 @@
#define pr_fmt(fmt) "kasan: generic: " fmt
#include <common.h>
+#include <asm/reloc.h>
#include "kasan.h"
@@ -160,6 +161,16 @@ static __always_inline bool check_memory_region_inline(unsigned long addr,
size_t size, bool write,
unsigned long ret_ip)
{
+ /*
+ * Hardening options like -ftrivial-auto-var-init=zero can end up
+ * emitting memset calls to initialize stack variables.
+ * This can lead to this function reached before relocation.
+ *
+ * Play it safe by ensuring we are relocated before proceeding.
+ */
+ if (global_variable_offset() != 0)
+ return true;
+
if (!kasan_initialized)
return true;
--
2.39.5
next reply other threads:[~2025-04-22 8:38 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-22 7:55 Ahmad Fatoum [this message]
2025-04-22 7:55 ` [PATCH master 2/4] ARM: Layerscape: fix compilation of LS1028 without LS1046 Ahmad Fatoum
2025-04-22 14:14 ` Sascha Hauer
2025-04-22 14:18 ` Ahmad Fatoum
2025-04-22 7:55 ` [PATCH master 3/4] ARM: k3: define debug_ll_write_reg only on CONFIG_DEBUG_AM62X_UART=y Ahmad Fatoum
2025-04-22 14:23 ` Sascha Hauer
2025-04-22 14:29 ` Ahmad Fatoum
2025-04-22 14:34 ` Sascha Hauer
2025-04-22 7:55 ` [PATCH master 4/4] memory: correct return value in request_barebox_region stub Ahmad Fatoum
2025-04-22 9:29 ` [PATCH master 1/4] KASan: fix possible breakage with CONFIG_INIT_STACK_ALL Sascha Hauer
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=20250422075519.219029-1-a.fatoum@pengutronix.de \
--to=a.fatoum@pengutronix.de \
--cc=barebox@lists.infradead.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox