)]}'
{
  "commit": "c931ea944e5750c387859cd57df3dfcd0206f8f7",
  "tree": "31762de11da882664a8e6b08f41b34a704d36266",
  "parents": [
    "d8a64e55ceb26afe4240723b549a92644b2522df"
  ],
  "author": {
    "name": "Yosry Ahmed",
    "email": "yosry.ahmed@linux.dev",
    "time": "Sat Nov 08 00:45:20 2025 +0000"
  },
  "committer": {
    "name": "Greg Kroah-Hartman",
    "email": "gregkh@linuxfoundation.org",
    "time": "Sun Dec 07 06:25:02 2025 +0900"
  },
  "message": "KVM: nSVM: Always recalculate LBR MSR intercepts in svm_update_lbrv()\n\ncommit fbe5e5f030c22ae717ee422aaab0e00ea84fab5e upstream.\n\nsvm_update_lbrv() is called when MSR_IA32_DEBUGCTLMSR is updated, and on\nnested transitions where LBRV is used. It checks whether LBRV enablement\nneeds to be changed in the current VMCB, and if it does, it also\nrecalculate intercepts to LBR MSRs.\n\nHowever, there are cases where intercepts need to be updated even when\nLBRV enablement doesn\u0027t. Example scenario:\n- L1 has MSR_IA32_DEBUGCTLMSR cleared.\n- L1 runs L2 without LBR_CTL_ENABLE (no LBRV).\n- L2 sets DEBUGCTLMSR_LBR in MSR_IA32_DEBUGCTLMSR, svm_update_lbrv()\n  sets LBR_CTL_ENABLE in VMCB02 and disables intercepts to LBR MSRs.\n- L2 exits to L1, svm_update_lbrv() is not called on this transition.\n- L1 clears MSR_IA32_DEBUGCTLMSR, svm_update_lbrv() finds that\n  LBR_CTL_ENABLE is already cleared in VMCB01 and does nothing.\n- Intercepts remain disabled, L1 reads to LBR MSRs read the host MSRs.\n\nFix it by always recalculating intercepts in svm_update_lbrv().\n\nFixes: 1d5a1b5860ed (\"KVM: x86: nSVM: correctly virtualize LBR msrs when L2 is running\")\nCc: stable@vger.kernel.org\nSigned-off-by: Yosry Ahmed \u003cyosry.ahmed@linux.dev\u003e\nLink: https://patch.msgid.link/20251108004524.1600006-3-yosry.ahmed@linux.dev\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\nSigned-off-by: Yosry Ahmed \u003cyosry.ahmed@linux.dev\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "1e1210e5ef45dec3b2b456d1942cbb8576567192",
      "old_mode": 33188,
      "old_path": "arch/x86/kvm/svm/svm.c",
      "new_id": "e3e570d11b2637f8f8f320fe357a3ba0353045a0",
      "new_mode": 33188,
      "new_path": "arch/x86/kvm/svm/svm.c"
    }
  ]
}
