Patch "compiler.h: Fix annotation macro misplacement with Clang" has been added to the 5.15-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    compiler.h: Fix annotation macro misplacement with Clang

to the 5.15-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     compiler.h-fix-annotation-macro-misplacement-with-cl.patch
and it can be found in the queue-5.15 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit b65c40a8e2c9347a8edd095a4d58b5fdfa76ca75
Author: Josh Poimboeuf <jpoimboe@xxxxxxxxxx>
Date:   Mon Nov 8 14:35:59 2021 -0800

    compiler.h: Fix annotation macro misplacement with Clang
    
    [ Upstream commit dcce50e6cc4d86a63dc0a9a6ee7d4f948ccd53a1 ]
    
    When building with Clang and CONFIG_TRACE_BRANCH_PROFILING, there are a
    lot of unreachable warnings, like:
    
      arch/x86/kernel/traps.o: warning: objtool: handle_xfd_event()+0x134: unreachable instruction
    
    Without an input to the inline asm, 'volatile' is ignored for some
    reason and Clang feels free to move the reachable() annotation away from
    its intended location.
    
    Fix that by re-adding the counter value to the inputs.
    
    Fixes: f1069a8756b9 ("compiler.h: Avoid using inline asm operand modifiers")
    Fixes: c199f64ff93c ("instrumentation.h: Avoid using inline asm operand modifiers")
    Reported-by: kernel test robot <lkp@xxxxxxxxx>
    Signed-off-by: Josh Poimboeuf <jpoimboe@xxxxxxxxxx>
    Link: https://lore.kernel.org/r/0417e96909b97a406323409210de7bf13df0b170.1636410380.git.jpoimboe@xxxxxxxxxx
    Cc: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
    Cc: x86@xxxxxxxxxx
    Cc: Vasily Gorbik <gor@xxxxxxxxxxxxx>
    Cc: Miroslav Benes <mbenes@xxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/include/linux/compiler.h b/include/linux/compiler.h
index 3d5af56337bdb..429dcebe2b992 100644
--- a/include/linux/compiler.h
+++ b/include/linux/compiler.h
@@ -121,7 +121,7 @@ void ftrace_likely_update(struct ftrace_likely_data *f, int val,
 	asm volatile(__stringify_label(c) ":\n\t"			\
 		     ".pushsection .discard.reachable\n\t"		\
 		     ".long " __stringify_label(c) "b - .\n\t"		\
-		     ".popsection\n\t");				\
+		     ".popsection\n\t" : : "i" (c));			\
 })
 #define annotate_reachable() __annotate_reachable(__COUNTER__)
 
@@ -129,7 +129,7 @@ void ftrace_likely_update(struct ftrace_likely_data *f, int val,
 	asm volatile(__stringify_label(c) ":\n\t"			\
 		     ".pushsection .discard.unreachable\n\t"		\
 		     ".long " __stringify_label(c) "b - .\n\t"		\
-		     ".popsection\n\t");				\
+		     ".popsection\n\t" : : "i" (c));			\
 })
 #define annotate_unreachable() __annotate_unreachable(__COUNTER__)
 
diff --git a/include/linux/instrumentation.h b/include/linux/instrumentation.h
index fa2cd8c63dcc9..24359b4a96053 100644
--- a/include/linux/instrumentation.h
+++ b/include/linux/instrumentation.h
@@ -11,7 +11,7 @@
 	asm volatile(__stringify(c) ": nop\n\t"				\
 		     ".pushsection .discard.instr_begin\n\t"		\
 		     ".long " __stringify(c) "b - .\n\t"		\
-		     ".popsection\n\t");				\
+		     ".popsection\n\t" : : "i" (c));			\
 })
 #define instrumentation_begin() __instrumentation_begin(__COUNTER__)
 
@@ -50,7 +50,7 @@
 	asm volatile(__stringify(c) ": nop\n\t"				\
 		     ".pushsection .discard.instr_end\n\t"		\
 		     ".long " __stringify(c) "b - .\n\t"		\
-		     ".popsection\n\t");				\
+		     ".popsection\n\t" : : "i" (c));			\
 })
 #define instrumentation_end() __instrumentation_end(__COUNTER__)
 #else



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux