Re: [PATCH BACKPORT 3.17-4.4 2/4] MIPS: KVM: Add missing gfn range check

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Sasha,

On Thu, Aug 18, 2016 at 07:45:33AM -0400, Levin, Alexander wrote:
> On 08/18/2016 05:05 AM, James Hogan wrote:
> > commit 8985d50382359e5bf118fdbefc859d0dbf6cebc7 upstream.
> > 
> > kvm_mips_handle_mapped_seg_tlb_fault() calculates the guest frame number
> > based on the guest TLB EntryLo values, however it is not range checked
> > to ensure it lies within the guest_pmap. If the physical memory the
> > guest refers to is out of range then dump the guest TLB and emit an
> > internal error.
> > 
> > Fixes: 858dd5d45733 ("KVM/MIPS32: MMU/TLB operations for the Guest.")
> > Signed-off-by: James Hogan <james.hogan@xxxxxxxxxx>
> > Cc: Paolo Bonzini <pbonzini@xxxxxxxxxx>
> > Cc: "Radim Krčmář" <rkrcmar@xxxxxxxxxx>
> > Cc: Ralf Baechle <ralf@xxxxxxxxxxxxxx>
> > Cc: linux-mips@xxxxxxxxxxxxxx
> > Cc: kvm@xxxxxxxxxxxxxxx
> > Signed-off-by: Radim Krčmář <rkrcmar@xxxxxxxxxx>
> > [james.hogan@xxxxxxxxxx: Backport to v3.17.y - v4.4.y]
> > Signed-off-by: James Hogan <james.hogan@xxxxxxxxxx>
> 
> Hey James,
> 
> Thanks for the backport!
> 
> Applying this one seems to fail with:
> 
> $ git apply --reject [PATCH BACKPORT 3.17-4.4 1_4] MIPS: KVM: Fix mapped
> fault broken commpage handling - James Hogan <james.hogan@xxxxxxxxxx> -
> 2016-08-18 0505.eml
> Checking patch arch/mips/kvm/tlb.c...
> error: while searching for:
> 	unsigned long entryhi = 0, entrylo0 = 0, entrylo1 = 0;
> 	struct kvm *kvm = vcpu->kvm;
> 	pfn_t pfn0, pfn1;
> 	long tlb_lo[2];
> 
> 	tlb_lo[0] = tlb->tlb_lo0;
> 
> error: patch failed: arch/mips/kvm/tlb.c:361
> error: while searching for:
> 			VPN2_MASK & (PAGE_MASK << 1)))
> 		tlb_lo[(KVM_GUEST_COMMPAGE_ADDR >> PAGE_SHIFT) & 1] = 0;
> 
> 	if (kvm_mips_map_page(kvm, mips3_tlbpfn_to_paddr(tlb_lo[0])
> 				   >> PAGE_SHIFT) < 0)
> 		return -1;
> 
> 	if (kvm_mips_map_page(kvm, mips3_tlbpfn_to_paddr(tlb_lo[1])
> 				   >> PAGE_SHIFT) < 0)
> 		return -1;
> 
> 	pfn0 = kvm->arch.guest_pmap[mips3_tlbpfn_to_paddr(tlb_lo[0])
> 				    >> PAGE_SHIFT];
> 	pfn1 = kvm->arch.guest_pmap[mips3_tlbpfn_to_paddr(tlb_lo[1])
> 				    >> PAGE_SHIFT];
> 
> 	if (hpa0)
> 		*hpa0 = pfn0 << PAGE_SHIFT;
> 
> error: patch failed: arch/mips/kvm/tlb.c:374
> Applying patch arch/mips/kvm/tlb.c with 2 rejects...
> Rejected hunk #1.
> Rejected hunk #2.

This works for me (on 558ba5fd7d8d Linux 4.1.30) as long as 1/4 is
applied first. Are you applying them in the right order?

Cheers
James

Attachment: signature.asc
Description: Digital signature


[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]