Commit 4cc5373f2e74 for kernel

commit 4cc5373f2e749a6c96e8b9fa971931a4dd852860
Author: Eric Dumazet <edumazet@google.com>
Date:   Fri Dec 19 11:20:06 2025 +0000

    clang: work around asm output constraint problems

    Work around clang problems with "=rm" asm constraint.

    clang seems to always chose the memory output, while it is almost
    always the worst choice.

    Add ASM_OUTPUT_RM so that we can replace "=rm" constraint
    where it matters for clang, while not penalizing gcc.

    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Suggested-by: Uros Bizjak <ubizjak@gmail.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

diff --git a/include/linux/compiler-clang.h b/include/linux/compiler-clang.h
index 107ce05bd16e..7edf1a07b535 100644
--- a/include/linux/compiler-clang.h
+++ b/include/linux/compiler-clang.h
@@ -145,6 +145,7 @@
  */
 #define ASM_INPUT_G "ir"
 #define ASM_INPUT_RM "r"
+#define ASM_OUTPUT_RM "=r"

 /*
  * Declare compiler support for __typeof_unqual__() operator.
diff --git a/include/linux/compiler_types.h b/include/linux/compiler_types.h
index 1280693766b9..d3318a3c2577 100644
--- a/include/linux/compiler_types.h
+++ b/include/linux/compiler_types.h
@@ -548,11 +548,12 @@ struct ftrace_likely_data {

 /*
  * Clang has trouble with constraints with multiple
- * alternative behaviors (mainly "g" and "rm").
+ * alternative behaviors ("g" , "rm" and "=rm").
  */
 #ifndef ASM_INPUT_G
   #define ASM_INPUT_G "g"
   #define ASM_INPUT_RM "rm"
+  #define ASM_OUTPUT_RM "=rm"
 #endif

 #ifdef CONFIG_CC_HAS_ASM_INLINE