Skip to contentSkip to conversation

MMU: fix cmpxchg8b emulation on i386 to use the right address

PATCH In review Carlo Marcelo Arenas Belon 2 participants 3 messages Jan 4, 2008

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 MMU: fix cmpxchg8b emulation on i386 to use the right address

change the function parameter to use vaddr instead of addr to avoid a variable name redefinition from 9a5ee611ca79bec98e9d97e93f11df8083b8af6e that resulted in :

kernel/x86.c:1746: warning: passing argument 2 of 'vcpu->arch.mmu.gva_to_gpa' makes integer from pointer without a cast kernel/x86.c:1746: warning: 'addr' is used uninitialized in this function

---
 arch/x86/kvm/x86.c |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)
arch/x86/kvm/x86.c +3 -3
index c5b4825..abe08d1 100644
@@ -1722,7 +1722,7 @@ int emulator_write_emulated(unsigned long addr,
 }
 EXPORT_SYMBOL_GPL(emulator_write_emulated);
 
-static int emulator_cmpxchg_emulated(unsigned long addr,
+static int emulator_cmpxchg_emulated(unsigned long vaddr,
 				     const void *old,
 				     const void *new,
 				     unsigned int bytes,
@@ -1743,7 +1743,7 @@ static int emulator_cmpxchg_emulated(unsigned long addr,
 		u64 val;
 
 		down_read(&current->mm->mmap_sem);
-		gpa = vcpu->arch.mmu.gva_to_gpa(vcpu, addr);
+		gpa = vcpu->arch.mmu.gva_to_gpa(vcpu, vaddr);
 
 		if (gpa == UNMAPPED_GVA ||
 		   (gpa & PAGE_MASK) == APIC_DEFAULT_PHYS_BASE)
@@ -1763,7 +1763,7 @@ static int emulator_cmpxchg_emulated(unsigned long addr,
 	}
 #endif
 
-	return emulator_write_emulated(addr, new, bytes, vcpu);
+	return emulator_write_emulated(vaddr, new, bytes, vcpu);
 }
 
 static unsigned long get_segment_base(struct kvm_vcpu *vcpu, int seg)
Signature · 7 lines
1.5.3.7


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
#1 lore raw
Quoted 2 lines · Carlo Marcelo Arenas Belon

change the function parameter to use vaddr instead of addr to avoid a variable name redefinition from 9a5ee611ca79bec98e9d97e93f11df8083b8af6e

this implementation has been already patched 6 times (not including this one) since it was originally introduced in Dec 12, including compilation and logic fixes as can be seen by :

24a673eb377069509e8dad5ff7fa146e363df739
eb9270cee7061e5a985eb9eac559270292b1d7ec
a5e8e8a4f7ddb211d856eb30e93e70af9d51b735
d5855a0ec163afd591f272e13e1f2c366794306f
9bfdd08f0a65e67d0842ca35516669bec523fbe0
91051a4955255317cab0d09d8849ec12db85f924

it was meant to fix some sort of bug on i386 because it wasn't atomic but with so many changes I am not sure if what it was meant to do has been really preserved, so I think it would be better if anyone with more experience and a better understanding of this patch could sheed some light on this.

Carlo

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/

#2 lore raw
Quoted 15 lines · Carlo Marcelo Arenas Belon
Quoted 2 lines · Carlo Marcelo Arenas Belon

change the function parameter to use vaddr instead of addr to avoid a variable name redefinition from 9a5ee611ca79bec98e9d97e93f11df8083b8af6e

this implementation has been already patched 6 times (not including this one) since it was originally introduced in Dec 12, including compilation and logic fixes as can be seen by :

24a673eb377069509e8dad5ff7fa146e363df739
eb9270cee7061e5a985eb9eac559270292b1d7ec
a5e8e8a4f7ddb211d856eb30e93e70af9d51b735
d5855a0ec163afd591f272e13e1f2c366794306f
9bfdd08f0a65e67d0842ca35516669bec523fbe0
91051a4955255317cab0d09d8849ec12db85f924

Quoted 4 lines

it was meant to fix some sort of bug on i386 because it wasn't atomic but with so many changes I am not sure if what it was meant to do has been really preserved, so I think it would be better if anyone with more experience and a better understanding of this patch could sheed some light on this.

It is OK now. The first patch was quite broken, thus so many fixes :(

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/