)]}'
{
  "commit": "7c6535c37dbc03c1c35926b7420d66fb122b513a",
  "tree": "6996f0dede825a131e1284d08155d136fd828ffd",
  "parents": [
    "3daad7f60aa92d0307fa2b2edd38c886a09902f2"
  ],
  "author": {
    "name": "Marco Elver",
    "email": "elver@google.com",
    "time": "Thu May 21 14:27:23 2026 +0200"
  },
  "committer": {
    "name": "Alexander Gordeev",
    "email": "agordeev@linux.ibm.com",
    "time": "Sat May 30 11:33:32 2026 +0200"
  },
  "message": "s390: Implement _THIS_IP_ using inline asm\n\nBoth GCC [1] and Clang [2] consider the generic version of _THIS_IP_ to\nbe broken:\n\n        #define _THIS_IP_  ({ __label__ __here; __here: (unsigned long)\u0026\u0026__here; })\n\nIn particular, the address of a label is only expected to be used with a\ncomputed goto.\n\nWhile the generic version more or less works today, it is known to be\nbrittle and may break with current and future optimizations. For\nexample, Clang -O2 always returns 1 when this function is inlined:\n\n        static inline unsigned long get_ip(void)\n        { return ({ __label__ __here; __here: (unsigned long)\u0026\u0026__here; }); }\n\nFix it by overriding _THIS_IP_ in \u003casm/linkage.h\u003e (which is included by\n\u003clinux/instruction_pointer.h\u003e) using an architecture-specific inline asm\nversion. Additionally, avoiding taking the address of a label prevents\ncompilers from emitting spurious indirect branch targets (e.g. ENDBR or\nBTI) under control-flow integrity schemes.\n\nLink: https://gcc.gnu.org/bugzilla/show_bug.cgi?id\u003d120071 [1]\nLink: https://github.com/llvm/llvm-project/issues/138272 [2]\nSigned-off-by: Marco Elver \u003celver@google.com\u003e\nReviewed-by: Heiko Carstens \u003chca@linux.ibm.com\u003e\nSigned-off-by: Alexander Gordeev \u003cagordeev@linux.ibm.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "df3fb7d8227b2590d17c9ce01a8289b60a260297",
      "old_mode": 33188,
      "old_path": "arch/s390/include/asm/linkage.h",
      "new_id": "1b3ac553a64211506a83f59a3e12af322ab6463f",
      "new_mode": 33188,
      "new_path": "arch/s390/include/asm/linkage.h"
    }
  ]
}
