Hi Greg, On Mon, Mar 07, 2016 at 12:39:08PM -0800, gregkh@xxxxxxxxxxxxxxxxxxx wrote: > > The patch below does not apply to the 4.4-stable tree. > If someone wants it applied there, or to any other stable or longterm > tree, then please email the backport, including the original git commit > id to <stable@xxxxxxxxxxxxxxx>. I don't see any conflicts when this is applied to 4.4.4. Asside from the hashes the cherry-picked commit is identical. Is it conflicting with some other stable patch since then or something? Thanks James > > thanks, > > greg k-h > > ------------------ original commit in Linus's tree ------------------ > > From 887349f69f37e71e2a8bfbd743831625a0b2ff51 Mon Sep 17 00:00:00 2001 > From: "Michael S. Tsirkin" <mst@xxxxxxxxxx> > Date: Sun, 28 Feb 2016 17:35:59 +0200 > Subject: [PATCH] MIPS: kvm: Fix ioctl error handling. > > Calling return copy_to_user(...) or return copy_from_user in an ioctl > will not do the right thing if there's a pagefault: > copy_to_user/copy_from_user return the number of bytes not copied in > this case. > > Fix up kvm on mips to do > return copy_to_user(...)) ? -EFAULT : 0; > and > return copy_from_user(...)) ? -EFAULT : 0; > > everywhere. > > Signed-off-by: Michael S. Tsirkin <mst@xxxxxxxxxx> > Cc: Paolo Bonzini <pbonzini@xxxxxxxxxx> > Cc: James Hogan <james.hogan@xxxxxxxxxx> > Cc: linux-kernel@xxxxxxxxxxxxxxx > Cc: linux-mips@xxxxxxxxxxxxxx > Cc: stable@xxxxxxxxxxxxxxx > Cc: kvm@xxxxxxxxxxxxxxx > Patchwork: https://patchwork.linux-mips.org/patch/12709/ > Signed-off-by: Ralf Baechle <ralf@xxxxxxxxxxxxxx> > > diff --git a/arch/mips/kvm/mips.c b/arch/mips/kvm/mips.c > index 8bc3977576e6..3110447ab1e9 100644 > --- a/arch/mips/kvm/mips.c > +++ b/arch/mips/kvm/mips.c > @@ -702,7 +702,7 @@ static int kvm_mips_get_reg(struct kvm_vcpu *vcpu, > } else if ((reg->id & KVM_REG_SIZE_MASK) == KVM_REG_SIZE_U128) { > void __user *uaddr = (void __user *)(long)reg->addr; > > - return copy_to_user(uaddr, vs, 16); > + return copy_to_user(uaddr, vs, 16) ? -EFAULT : 0; > } else { > return -EINVAL; > } > @@ -732,7 +732,7 @@ static int kvm_mips_set_reg(struct kvm_vcpu *vcpu, > } else if ((reg->id & KVM_REG_SIZE_MASK) == KVM_REG_SIZE_U128) { > void __user *uaddr = (void __user *)(long)reg->addr; > > - return copy_from_user(vs, uaddr, 16); > + return copy_from_user(vs, uaddr, 16) ? -EFAULT : 0; > } else { > return -EINVAL; > } >
Attachment:
signature.asc
Description: Digital signature