All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/3] noinstr fixes
@ 2023-04-12 17:24 Josh Poimboeuf
  2023-04-12 17:24 ` [PATCH 1/3] context_tracking: Fix KCSAN noinstr violation Josh Poimboeuf
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Josh Poimboeuf @ 2023-04-12 17:24 UTC (permalink / raw)
  To: x86; +Cc: linux-kernel, Peter Zijlstra, frederic, paulmck, keescook

Fix a few noinstr violations reported by objtool.

Josh Poimboeuf (3):
  context_tracking: Fix KCSAN noinstr violation
  sched: Fix KCSAN noinstr violation
  lkdtm/stackleak: Fix noinstr violation

 drivers/misc/lkdtm/stackleak.c   | 6 ++++++
 include/linux/context_tracking.h | 2 +-
 include/linux/sched/task_stack.h | 2 +-
 3 files changed, 8 insertions(+), 2 deletions(-)

-- 
2.39.2


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH 1/3] context_tracking: Fix KCSAN noinstr violation
  2023-04-12 17:24 [PATCH 0/3] noinstr fixes Josh Poimboeuf
@ 2023-04-12 17:24 ` Josh Poimboeuf
  2023-04-13 13:58   ` Frederic Weisbecker
  2023-04-14 14:47   ` [tip: objtool/core] " tip-bot2 for Josh Poimboeuf
  2023-04-12 17:24 ` [PATCH 2/3] sched: " Josh Poimboeuf
  2023-04-12 17:24 ` [PATCH 3/3] lkdtm/stackleak: Fix " Josh Poimboeuf
  2 siblings, 2 replies; 8+ messages in thread
From: Josh Poimboeuf @ 2023-04-12 17:24 UTC (permalink / raw)
  To: x86; +Cc: linux-kernel, Peter Zijlstra, frederic, paulmck, keescook

With KCSAN enabled, even empty inline stubs can be out-of-lined.

Force the context_tracking_guest_exit() stub inline.

Fixes the following warnings:

  vmlinux.o: warning: objtool: vmx_vcpu_enter_exit+0x1be: call to context_tracking_guest_exit() leaves .noinstr.text section
  vmlinux.o: warning: objtool: svm_vcpu_enter_exit+0x85: call to context_tracking_guest_exit() leaves .noinstr.text section

Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org>
---
 include/linux/context_tracking.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/linux/context_tracking.h b/include/linux/context_tracking.h
index d4afa8508a80..5ae3abd767b4 100644
--- a/include/linux/context_tracking.h
+++ b/include/linux/context_tracking.h
@@ -97,7 +97,7 @@ static inline int exception_enter(void) { return 0; }
 static inline void exception_exit(enum ctx_state prev_ctx) { }
 static inline int ct_state(void) { return -1; }
 static __always_inline bool context_tracking_guest_enter(void) { return false; }
-static inline void context_tracking_guest_exit(void) { }
+static __always_inline void context_tracking_guest_exit(void) { }
 #define CT_WARN_ON(cond) do { } while (0)
 #endif /* !CONFIG_CONTEXT_TRACKING_USER */
 
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 2/3] sched: Fix KCSAN noinstr violation
  2023-04-12 17:24 [PATCH 0/3] noinstr fixes Josh Poimboeuf
  2023-04-12 17:24 ` [PATCH 1/3] context_tracking: Fix KCSAN noinstr violation Josh Poimboeuf
@ 2023-04-12 17:24 ` Josh Poimboeuf
  2023-04-14 14:47   ` [tip: objtool/core] " tip-bot2 for Josh Poimboeuf
  2023-04-12 17:24 ` [PATCH 3/3] lkdtm/stackleak: Fix " Josh Poimboeuf
  2 siblings, 1 reply; 8+ messages in thread
From: Josh Poimboeuf @ 2023-04-12 17:24 UTC (permalink / raw)
  To: x86; +Cc: linux-kernel, Peter Zijlstra, frederic, paulmck, keescook

With KCSAN enabled, end_of_stack() can get out-of-lined.  Force it
inline.

Fixes the following warnings:

  vmlinux.o: warning: objtool: check_stackleak_irqoff+0x2b: call to end_of_stack() leaves .noinstr.text section

Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org>
---
 include/linux/sched/task_stack.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/linux/sched/task_stack.h b/include/linux/sched/task_stack.h
index 5e799a47431e..f158b025c175 100644
--- a/include/linux/sched/task_stack.h
+++ b/include/linux/sched/task_stack.h
@@ -23,7 +23,7 @@ static __always_inline void *task_stack_page(const struct task_struct *task)
 
 #define setup_thread_stack(new,old)	do { } while(0)
 
-static inline unsigned long *end_of_stack(const struct task_struct *task)
+static __always_inline unsigned long *end_of_stack(const struct task_struct *task)
 {
 #ifdef CONFIG_STACK_GROWSUP
 	return (unsigned long *)((unsigned long)task->stack + THREAD_SIZE) - 1;
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 3/3] lkdtm/stackleak: Fix noinstr violation
  2023-04-12 17:24 [PATCH 0/3] noinstr fixes Josh Poimboeuf
  2023-04-12 17:24 ` [PATCH 1/3] context_tracking: Fix KCSAN noinstr violation Josh Poimboeuf
  2023-04-12 17:24 ` [PATCH 2/3] sched: " Josh Poimboeuf
@ 2023-04-12 17:24 ` Josh Poimboeuf
  2023-04-14 14:47   ` [tip: objtool/core] " tip-bot2 for Josh Poimboeuf
  2 siblings, 1 reply; 8+ messages in thread
From: Josh Poimboeuf @ 2023-04-12 17:24 UTC (permalink / raw)
  To: x86; +Cc: linux-kernel, Peter Zijlstra, frederic, paulmck, keescook

Fixes the following warning:

  vmlinux.o: warning: objtool: check_stackleak_irqoff+0x2b6: call to _printk() leaves .noinstr.text section

Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org>
---
 drivers/misc/lkdtm/stackleak.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/drivers/misc/lkdtm/stackleak.c b/drivers/misc/lkdtm/stackleak.c
index 025b133297a6..f1d022160913 100644
--- a/drivers/misc/lkdtm/stackleak.c
+++ b/drivers/misc/lkdtm/stackleak.c
@@ -43,12 +43,14 @@ static void noinstr check_stackleak_irqoff(void)
 	 * STACK_END_MAGIC, and in either casee something is seriously wrong.
 	 */
 	if (current_sp < task_stack_low || current_sp >= task_stack_high) {
+		instrumentation_begin();
 		pr_err("FAIL: current_stack_pointer (0x%lx) outside of task stack bounds [0x%lx..0x%lx]\n",
 		       current_sp, task_stack_low, task_stack_high - 1);
 		test_failed = true;
 		goto out;
 	}
 	if (lowest_sp < task_stack_low || lowest_sp >= task_stack_high) {
+		instrumentation_begin();
 		pr_err("FAIL: current->lowest_stack (0x%lx) outside of task stack bounds [0x%lx..0x%lx]\n",
 		       lowest_sp, task_stack_low, task_stack_high - 1);
 		test_failed = true;
@@ -86,11 +88,14 @@ static void noinstr check_stackleak_irqoff(void)
 		if (*(unsigned long *)poison_low == STACKLEAK_POISON)
 			continue;
 
+		instrumentation_begin();
 		pr_err("FAIL: non-poison value %lu bytes below poison boundary: 0x%lx\n",
 		       poison_high - poison_low, *(unsigned long *)poison_low);
 		test_failed = true;
+		goto out;
 	}
 
+	instrumentation_begin();
 	pr_info("stackleak stack usage:\n"
 		"  high offset: %lu bytes\n"
 		"  current:     %lu bytes\n"
@@ -113,6 +118,7 @@ static void noinstr check_stackleak_irqoff(void)
 	} else {
 		pr_info("OK: the rest of the thread stack is properly erased\n");
 	}
+	instrumentation_end();
 }
 
 static void lkdtm_STACKLEAK_ERASING(void)
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/3] context_tracking: Fix KCSAN noinstr violation
  2023-04-12 17:24 ` [PATCH 1/3] context_tracking: Fix KCSAN noinstr violation Josh Poimboeuf
@ 2023-04-13 13:58   ` Frederic Weisbecker
  2023-04-14 14:47   ` [tip: objtool/core] " tip-bot2 for Josh Poimboeuf
  1 sibling, 0 replies; 8+ messages in thread
From: Frederic Weisbecker @ 2023-04-13 13:58 UTC (permalink / raw)
  To: Josh Poimboeuf; +Cc: x86, linux-kernel, Peter Zijlstra, paulmck, keescook

Le Wed, Apr 12, 2023 at 10:24:06AM -0700, Josh Poimboeuf a écrit :
> With KCSAN enabled, even empty inline stubs can be out-of-lined.
> 
> Force the context_tracking_guest_exit() stub inline.
> 
> Fixes the following warnings:
> 
>   vmlinux.o: warning: objtool: vmx_vcpu_enter_exit+0x1be: call to context_tracking_guest_exit() leaves .noinstr.text section
>   vmlinux.o: warning: objtool: svm_vcpu_enter_exit+0x85: call to context_tracking_guest_exit() leaves .noinstr.text section
> 
> Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org>

Acked-by: Frederic Weisbecker <frederic@kernel.org>

Thanks!

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [tip: objtool/core] context_tracking: Fix KCSAN noinstr violation
  2023-04-12 17:24 ` [PATCH 1/3] context_tracking: Fix KCSAN noinstr violation Josh Poimboeuf
  2023-04-13 13:58   ` Frederic Weisbecker
@ 2023-04-14 14:47   ` tip-bot2 for Josh Poimboeuf
  1 sibling, 0 replies; 8+ messages in thread
From: tip-bot2 for Josh Poimboeuf @ 2023-04-14 14:47 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: Josh Poimboeuf, Peter Zijlstra (Intel), x86, linux-kernel

The following commit has been merged into the objtool/core branch of tip:

Commit-ID:     e8deb00c0c4808654d1bf96a8f79cf1deb59b631
Gitweb:        https://git.kernel.org/tip/e8deb00c0c4808654d1bf96a8f79cf1deb59b631
Author:        Josh Poimboeuf <jpoimboe@kernel.org>
AuthorDate:    Wed, 12 Apr 2023 10:24:06 -07:00
Committer:     Peter Zijlstra <peterz@infradead.org>
CommitterDate: Fri, 14 Apr 2023 16:08:27 +02:00

context_tracking: Fix KCSAN noinstr violation

With KCSAN enabled, even empty inline stubs can be out-of-lined.

Force the context_tracking_guest_exit() stub inline.

Fixes the following warnings:

  vmlinux.o: warning: objtool: vmx_vcpu_enter_exit+0x1be: call to context_tracking_guest_exit() leaves .noinstr.text section
  vmlinux.o: warning: objtool: svm_vcpu_enter_exit+0x85: call to context_tracking_guest_exit() leaves .noinstr.text section

Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lore.kernel.org/r/dc93f45abdec90c171108b4b590b7fff5790963c.1681320026.git.jpoimboe@kernel.org
---
 include/linux/context_tracking.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/linux/context_tracking.h b/include/linux/context_tracking.h
index d4afa85..5ae3abd 100644
--- a/include/linux/context_tracking.h
+++ b/include/linux/context_tracking.h
@@ -97,7 +97,7 @@ static inline int exception_enter(void) { return 0; }
 static inline void exception_exit(enum ctx_state prev_ctx) { }
 static inline int ct_state(void) { return -1; }
 static __always_inline bool context_tracking_guest_enter(void) { return false; }
-static inline void context_tracking_guest_exit(void) { }
+static __always_inline void context_tracking_guest_exit(void) { }
 #define CT_WARN_ON(cond) do { } while (0)
 #endif /* !CONFIG_CONTEXT_TRACKING_USER */
 

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [tip: objtool/core] lkdtm/stackleak: Fix noinstr violation
  2023-04-12 17:24 ` [PATCH 3/3] lkdtm/stackleak: Fix " Josh Poimboeuf
@ 2023-04-14 14:47   ` tip-bot2 for Josh Poimboeuf
  0 siblings, 0 replies; 8+ messages in thread
From: tip-bot2 for Josh Poimboeuf @ 2023-04-14 14:47 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: Josh Poimboeuf, Peter Zijlstra (Intel), x86, linux-kernel

The following commit has been merged into the objtool/core branch of tip:

Commit-ID:     f571da059f86fd9d432aea32c9c7e5aaa53245d8
Gitweb:        https://git.kernel.org/tip/f571da059f86fd9d432aea32c9c7e5aaa53245d8
Author:        Josh Poimboeuf <jpoimboe@kernel.org>
AuthorDate:    Wed, 12 Apr 2023 10:24:08 -07:00
Committer:     Peter Zijlstra <peterz@infradead.org>
CommitterDate: Fri, 14 Apr 2023 16:08:26 +02:00

lkdtm/stackleak: Fix noinstr violation

Fixes the following warning:

  vmlinux.o: warning: objtool: check_stackleak_irqoff+0x2b6: call to _printk() leaves .noinstr.text section

Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lore.kernel.org/r/ee5209f53aa0a62aea58be18f2b78b17606779a6.1681320026.git.jpoimboe@kernel.org
---
 drivers/misc/lkdtm/stackleak.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/drivers/misc/lkdtm/stackleak.c b/drivers/misc/lkdtm/stackleak.c
index 025b133..f1d0221 100644
--- a/drivers/misc/lkdtm/stackleak.c
+++ b/drivers/misc/lkdtm/stackleak.c
@@ -43,12 +43,14 @@ static void noinstr check_stackleak_irqoff(void)
 	 * STACK_END_MAGIC, and in either casee something is seriously wrong.
 	 */
 	if (current_sp < task_stack_low || current_sp >= task_stack_high) {
+		instrumentation_begin();
 		pr_err("FAIL: current_stack_pointer (0x%lx) outside of task stack bounds [0x%lx..0x%lx]\n",
 		       current_sp, task_stack_low, task_stack_high - 1);
 		test_failed = true;
 		goto out;
 	}
 	if (lowest_sp < task_stack_low || lowest_sp >= task_stack_high) {
+		instrumentation_begin();
 		pr_err("FAIL: current->lowest_stack (0x%lx) outside of task stack bounds [0x%lx..0x%lx]\n",
 		       lowest_sp, task_stack_low, task_stack_high - 1);
 		test_failed = true;
@@ -86,11 +88,14 @@ static void noinstr check_stackleak_irqoff(void)
 		if (*(unsigned long *)poison_low == STACKLEAK_POISON)
 			continue;
 
+		instrumentation_begin();
 		pr_err("FAIL: non-poison value %lu bytes below poison boundary: 0x%lx\n",
 		       poison_high - poison_low, *(unsigned long *)poison_low);
 		test_failed = true;
+		goto out;
 	}
 
+	instrumentation_begin();
 	pr_info("stackleak stack usage:\n"
 		"  high offset: %lu bytes\n"
 		"  current:     %lu bytes\n"
@@ -113,6 +118,7 @@ out:
 	} else {
 		pr_info("OK: the rest of the thread stack is properly erased\n");
 	}
+	instrumentation_end();
 }
 
 static void lkdtm_STACKLEAK_ERASING(void)

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [tip: objtool/core] sched: Fix KCSAN noinstr violation
  2023-04-12 17:24 ` [PATCH 2/3] sched: " Josh Poimboeuf
@ 2023-04-14 14:47   ` tip-bot2 for Josh Poimboeuf
  0 siblings, 0 replies; 8+ messages in thread
From: tip-bot2 for Josh Poimboeuf @ 2023-04-14 14:47 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: Josh Poimboeuf, Peter Zijlstra (Intel), x86, linux-kernel

The following commit has been merged into the objtool/core branch of tip:

Commit-ID:     e0b081d17a9f4e5c0cbb0e5fbeb1abe3de0f7e4e
Gitweb:        https://git.kernel.org/tip/e0b081d17a9f4e5c0cbb0e5fbeb1abe3de0f7e4e
Author:        Josh Poimboeuf <jpoimboe@kernel.org>
AuthorDate:    Wed, 12 Apr 2023 10:24:07 -07:00
Committer:     Peter Zijlstra <peterz@infradead.org>
CommitterDate: Fri, 14 Apr 2023 16:08:26 +02:00

sched: Fix KCSAN noinstr violation

With KCSAN enabled, end_of_stack() can get out-of-lined.  Force it
inline.

Fixes the following warnings:

  vmlinux.o: warning: objtool: check_stackleak_irqoff+0x2b: call to end_of_stack() leaves .noinstr.text section

Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lore.kernel.org/r/cc1b4d73d3a428a00d206242a68fdf99a934ca7b.1681320026.git.jpoimboe@kernel.org
---
 include/linux/sched/task_stack.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/linux/sched/task_stack.h b/include/linux/sched/task_stack.h
index 5e799a4..f158b02 100644
--- a/include/linux/sched/task_stack.h
+++ b/include/linux/sched/task_stack.h
@@ -23,7 +23,7 @@ static __always_inline void *task_stack_page(const struct task_struct *task)
 
 #define setup_thread_stack(new,old)	do { } while(0)
 
-static inline unsigned long *end_of_stack(const struct task_struct *task)
+static __always_inline unsigned long *end_of_stack(const struct task_struct *task)
 {
 #ifdef CONFIG_STACK_GROWSUP
 	return (unsigned long *)((unsigned long)task->stack + THREAD_SIZE) - 1;

^ permalink raw reply related	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2023-04-14 14:48 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-04-12 17:24 [PATCH 0/3] noinstr fixes Josh Poimboeuf
2023-04-12 17:24 ` [PATCH 1/3] context_tracking: Fix KCSAN noinstr violation Josh Poimboeuf
2023-04-13 13:58   ` Frederic Weisbecker
2023-04-14 14:47   ` [tip: objtool/core] " tip-bot2 for Josh Poimboeuf
2023-04-12 17:24 ` [PATCH 2/3] sched: " Josh Poimboeuf
2023-04-14 14:47   ` [tip: objtool/core] " tip-bot2 for Josh Poimboeuf
2023-04-12 17:24 ` [PATCH 3/3] lkdtm/stackleak: Fix " Josh Poimboeuf
2023-04-14 14:47   ` [tip: objtool/core] " tip-bot2 for Josh Poimboeuf

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.