Commit 3f2757d
committed
KVM: x86: Harden against unexpected adjustments to kvm_cpu_caps
Add a flag to track when KVM is actively configuring its CPU caps, and
WARN if a cap is set or cleared if KVM isn't in its configuration stage.
Modifying CPU caps after {svm,vmx}_set_cpu_caps() can be fatal to KVM, as
vendor setup code expects the CPU caps to be frozen at that point, e.g.
will do additional configuration based on the caps.
Rename kvm_set_cpu_caps() to kvm_initialize_cpu_caps() to pair with the
new "finalize", and to make it more obvious that KVM's CPU caps aren't
fully configured within the function.
Reviewed-by: Xiaoyao Li <xiaoyao.li@intel.com>
Reviewed-by: Binbin Wu <binbin.wu@linux.intel.com>
Link: https://patch.msgid.link/20260128014310.3255561-3-seanjc@google.com
Signed-off-by: Sean Christopherson <seanjc@google.com>1 parent 95d848d commit 3f2757d
4 files changed
Lines changed: 25 additions & 5 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
36 | 36 | | |
37 | 37 | | |
38 | 38 | | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
39 | 42 | | |
40 | 43 | | |
41 | 44 | | |
| |||
826 | 829 | | |
827 | 830 | | |
828 | 831 | | |
829 | | - | |
| 832 | + | |
830 | 833 | | |
831 | 834 | | |
832 | 835 | | |
| 836 | + | |
| 837 | + | |
| 838 | + | |
833 | 839 | | |
834 | 840 | | |
835 | 841 | | |
| |||
1288 | 1294 | | |
1289 | 1295 | | |
1290 | 1296 | | |
1291 | | - | |
| 1297 | + | |
1292 | 1298 | | |
1293 | 1299 | | |
1294 | 1300 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
11 | | - | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
12 | 20 | | |
13 | 21 | | |
14 | 22 | | |
| |||
188 | 196 | | |
189 | 197 | | |
190 | 198 | | |
| 199 | + | |
191 | 200 | | |
192 | 201 | | |
193 | 202 | | |
194 | 203 | | |
195 | 204 | | |
196 | 205 | | |
197 | 206 | | |
| 207 | + | |
198 | 208 | | |
199 | 209 | | |
200 | 210 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5202 | 5202 | | |
5203 | 5203 | | |
5204 | 5204 | | |
5205 | | - | |
| 5205 | + | |
5206 | 5206 | | |
5207 | 5207 | | |
5208 | 5208 | | |
| |||
5284 | 5284 | | |
5285 | 5285 | | |
5286 | 5286 | | |
| 5287 | + | |
| 5288 | + | |
5287 | 5289 | | |
5288 | 5290 | | |
5289 | 5291 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
7994 | 7994 | | |
7995 | 7995 | | |
7996 | 7996 | | |
7997 | | - | |
| 7997 | + | |
7998 | 7998 | | |
7999 | 7999 | | |
8000 | 8000 | | |
| |||
8051 | 8051 | | |
8052 | 8052 | | |
8053 | 8053 | | |
| 8054 | + | |
| 8055 | + | |
8054 | 8056 | | |
8055 | 8057 | | |
8056 | 8058 | | |
| |||
0 commit comments