On Tue, Dec 10, 2019 at 04:16:44PM +0000, Ben Hutchings wrote:
The 3.16, 4.4, and 4.9 branches have slightly different conditions in kvm_set_cr3():
if (is_long_mode(vcpu)) { if (cr3 & CR3_L_MODE_RESERVED_BITS) return 1; } else if (is_pae(vcpu) && is_paging(vcpu) && !load_pdptrs(vcpu, vcpu->arch.walk_mmu, cr3)) return 1;
So load_pdptrs() already won't be called if is_long_mode() returns true, and this fix shouldn't be needed.
Argh, glad you double checked! I looked at 3.16.y, but apparently I didn't actually read the code...