Skip to content

Commit 312d16c

Browse files
vittyvkbonzini
authored andcommitted
KVM: x86/mmu: Avoid mixing gpa_t with gfn_t in walk_addr_generic()
translate_gpa() returns a GPA, assigning it to 'real_gfn' seems obviously wrong. There is no real issue because both 'gpa_t' and 'gfn_t' are u64 and we don't use the value in 'real_gfn' as a GFN, we do real_gfn = gpa_to_gfn(real_gfn); instead. 'If you see a "buffalo" sign on an elephant's cage, do not trust your eyes', but let's fix it for good. No functional change intended. Signed-off-by: Vitaly Kuznetsov <[email protected]> Message-Id: <[email protected]> Signed-off-by: Paolo Bonzini <[email protected]>
1 parent 44d5271 commit 312d16c

File tree

1 file changed

+3
-6
lines changed

1 file changed

+3
-6
lines changed

arch/x86/kvm/mmu/paging_tmpl.h

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -360,7 +360,6 @@ static int FNAME(walk_addr_generic)(struct guest_walker *walker,
360360
++walker->level;
361361

362362
do {
363-
gfn_t real_gfn;
364363
unsigned long host_addr;
365364

366365
pt_access = pte_access;
@@ -375,7 +374,7 @@ static int FNAME(walk_addr_generic)(struct guest_walker *walker,
375374
walker->table_gfn[walker->level - 1] = table_gfn;
376375
walker->pte_gpa[walker->level - 1] = pte_gpa;
377376

378-
real_gfn = mmu->translate_gpa(vcpu, gfn_to_gpa(table_gfn),
377+
real_gpa = mmu->translate_gpa(vcpu, gfn_to_gpa(table_gfn),
379378
nested_access,
380379
&walker->fault);
381380

@@ -389,12 +388,10 @@ static int FNAME(walk_addr_generic)(struct guest_walker *walker,
389388
* information to fix the exit_qualification or exit_info_1
390389
* fields.
391390
*/
392-
if (unlikely(real_gfn == UNMAPPED_GVA))
391+
if (unlikely(real_gpa == UNMAPPED_GVA))
393392
return 0;
394393

395-
real_gfn = gpa_to_gfn(real_gfn);
396-
397-
host_addr = kvm_vcpu_gfn_to_hva_prot(vcpu, real_gfn,
394+
host_addr = kvm_vcpu_gfn_to_hva_prot(vcpu, gpa_to_gfn(real_gpa),
398395
&walker->pte_writable[walker->level - 1]);
399396
if (unlikely(kvm_is_error_hva(host_addr)))
400397
goto error;

0 commit comments

Comments
 (0)