Skip to content

Commit cd9ae5f

Browse files
anadavmatosatti
authored andcommitted
KVM: x86: Fix page-tables reserved bits
KVM does not handle the reserved bits of x86 page tables correctly: In PAE, bits 5:8 are reserved in the PDPTE. In IA-32e, bit 8 is not reserved. Signed-off-by: Nadav Amit <[email protected]> Signed-off-by: Marcelo Tosatti <[email protected]>
1 parent 0f689a3 commit cd9ae5f

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

arch/x86/kvm/mmu.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3538,7 +3538,7 @@ static void reset_rsvds_bits_mask(struct kvm_vcpu *vcpu,
35383538
case PT32E_ROOT_LEVEL:
35393539
context->rsvd_bits_mask[0][2] =
35403540
rsvd_bits(maxphyaddr, 63) |
3541-
rsvd_bits(7, 8) | rsvd_bits(1, 2); /* PDPTE */
3541+
rsvd_bits(5, 8) | rsvd_bits(1, 2); /* PDPTE */
35423542
context->rsvd_bits_mask[0][1] = exb_bit_rsvd |
35433543
rsvd_bits(maxphyaddr, 62); /* PDE */
35443544
context->rsvd_bits_mask[0][0] = exb_bit_rsvd |
@@ -3550,9 +3550,9 @@ static void reset_rsvds_bits_mask(struct kvm_vcpu *vcpu,
35503550
break;
35513551
case PT64_ROOT_LEVEL:
35523552
context->rsvd_bits_mask[0][3] = exb_bit_rsvd |
3553-
rsvd_bits(maxphyaddr, 51) | rsvd_bits(7, 8);
3553+
rsvd_bits(maxphyaddr, 51) | rsvd_bits(7, 7);
35543554
context->rsvd_bits_mask[0][2] = exb_bit_rsvd |
3555-
rsvd_bits(maxphyaddr, 51) | rsvd_bits(7, 8);
3555+
rsvd_bits(maxphyaddr, 51) | rsvd_bits(7, 7);
35563556
context->rsvd_bits_mask[0][1] = exb_bit_rsvd |
35573557
rsvd_bits(maxphyaddr, 51);
35583558
context->rsvd_bits_mask[0][0] = exb_bit_rsvd |

0 commit comments

Comments
 (0)