linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Contextual conflict between kspp and rcu trees
@ 2022-06-15 19:55 Nathan Chancellor
  2022-06-15 20:25 ` Kees Cook
                   ` (3 more replies)
  0 siblings, 4 replies; 11+ messages in thread
From: Nathan Chancellor @ 2022-06-15 19:55 UTC (permalink / raw)
  To: Stephen Rothwell, Paul E. McKenney, Frederic Weisbecker,
	Sami Tolvanen, Kees Cook
  Cc: llvm, linux-kernel, linux-next

Hi Stephen et al.,

There is a contextual conflict between commit e1d337335207 ("cfi: Fix
__cfi_slowpath_diag RCU usage with cpuidle") in the kspp tree and commit
dcc0c11aa87b ("rcu/context-tracking: Remove rcu_irq_enter/exit()") in
the rcu tree, which is visible when building ARCH=arm64 defconfig +
CONFIG_LTO_CLANG_THIN=y + CONFIG_CFI_CLANG=y with clang:

  kernel/cfi.c:298:3: error: call to undeclared function 'rcu_irq_enter'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
                  rcu_irq_enter();
                  ^
  kernel/cfi.c:298:3: note: did you mean 'ct_irq_enter'?
  ./include/linux/context_tracking_irq.h:6:6: note: 'ct_irq_enter' declared here
  void ct_irq_enter(void);
       ^
  kernel/cfi.c:307:3: error: call to undeclared function 'rcu_irq_exit'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
                  rcu_irq_exit();
                  ^
  kernel/cfi.c:307:3: note: did you mean 'ct_irq_exit'?
  ./include/linux/context_tracking_irq.h:7:6: note: 'ct_irq_exit' declared here
  void ct_irq_exit(void);
       ^
  2 errors generated.


Per the above RCU commit and commit 6c5218715286 ("context_tracking:
Take IRQ eqs entrypoints over RCU"), it appears that the following diff
is the proper fix up. Would you mind applying it to the merge of
whichever tree comes second if possible? I did build and boot test it
but it would not be a bad idea for Sami and Frederic to verify that it
is correct so that Kees/Paul can mention it to Linus :)

Cheers,
Nathan

diff --git a/kernel/cfi.c b/kernel/cfi.c
index 08102d19ec15..2046276ee234 100644
--- a/kernel/cfi.c
+++ b/kernel/cfi.c
@@ -295,7 +295,7 @@ static inline cfi_check_fn find_check_fn(unsigned long ptr)
 	rcu_idle = !rcu_is_watching();
 	if (rcu_idle) {
 		local_irq_save(flags);
-		rcu_irq_enter();
+		ct_irq_enter();
 	}
 
 	if (IS_ENABLED(CONFIG_CFI_CLANG_SHADOW))
@@ -304,7 +304,7 @@ static inline cfi_check_fn find_check_fn(unsigned long ptr)
 		fn = find_module_check_fn(ptr);
 
 	if (rcu_idle) {
-		rcu_irq_exit();
+		ct_irq_exit();
 		local_irq_restore(flags);
 	}
 

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

end of thread, other threads:[~2022-06-16  1:41 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-06-15 19:55 Contextual conflict between kspp and rcu trees Nathan Chancellor
2022-06-15 20:25 ` Kees Cook
2022-06-15 20:28 ` Kees Cook
2022-06-15 20:34   ` Paul E. McKenney
2022-06-15 20:35   ` Nathan Chancellor
2022-06-15 21:12     ` Paul E. McKenney
2022-06-15 23:09       ` Stephen Rothwell
2022-06-15 20:30 ` Paul E. McKenney
2022-06-15 23:16 ` Stephen Rothwell
2022-06-16  1:26   ` Paul E. McKenney
2022-06-16  1:40     ` Stephen Rothwell

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).