)]}'
{
  "commit": "1b808dd4afc876a60f23ccd0dbf4557009acb47c",
  "tree": "f3e374d87102251665151d2edb0c8314fa6d95b9",
  "parents": [
    "1f623529d23aa00c418d9b90ae27f8c596f48f90"
  ],
  "author": {
    "name": "Peter Zijlstra",
    "email": "peterz@infradead.org",
    "time": "Fri Dec 01 18:53:37 2023 +0100"
  },
  "committer": {
    "name": "Peter Zijlstra",
    "email": "peterz@infradead.org",
    "time": "Fri Nov 08 19:57:47 2024 +0100"
  },
  "message": "x86/kvm/emulate: Avoid RET for fastops\n\nSince there is only a single fastop() function, convert the FASTOP\nstuff from CALL_NOSPEC+RET to JMP_NOSPEC+JMP, avoiding the return\nthunks and all that jazz.\n\nSpecifically FASTOPs rely on the return thunk to preserve EFLAGS,\nwhich not all of them can trivially do (call depth tracing suffers\nhere).\n\nObjtool strenuously complains about this:\n\n - indirect call without a .rodata, fails to determine JUMP_TABLE,\n   annotate\n - fastop functions fall through, exception\n - unreachable instruction after fastop_return, save/restore\n\nSigned-off-by: Peter Zijlstra (Intel) \u003cpeterz@infradead.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "3ca05c58f0008c7e84e0757b9f75b1a9cd85ff66",
      "old_mode": 33188,
      "old_path": "arch/x86/kvm/emulate.c",
      "new_id": "0c3ce680f84089e5e86bf2009da208f27a1cce8a",
      "new_mode": 33188,
      "new_path": "arch/x86/kvm/emulate.c"
    },
    {
      "type": "modify",
      "old_id": "1d730a2062fd4618a77d3bdb6736cbc2d2452e8b",
      "old_mode": 33188,
      "old_path": "include/linux/objtool_types.h",
      "new_id": "a5d9767b9aabc18805da3f3a787bea89b377c25e",
      "new_mode": 33188,
      "new_path": "include/linux/objtool_types.h"
    },
    {
      "type": "modify",
      "old_id": "1d730a2062fd4618a77d3bdb6736cbc2d2452e8b",
      "old_mode": 33188,
      "old_path": "tools/include/linux/objtool_types.h",
      "new_id": "a5d9767b9aabc18805da3f3a787bea89b377c25e",
      "new_mode": 33188,
      "new_path": "tools/include/linux/objtool_types.h"
    },
    {
      "type": "modify",
      "old_id": "5e6aa0b01aa3ecf450bb82e6feecf83b27a93831",
      "old_mode": 33188,
      "old_path": "tools/objtool/check.c",
      "new_id": "ea0b15b034fc33f50599fa32a95cb0336fde640e",
      "new_mode": 33188,
      "new_path": "tools/objtool/check.c"
    }
  ]
}
