From 6dbd96ac04624eb2adb82ed68c6542d52c1da366 Mon Sep 17 00:00:00 2001 From: Heiko Carstens Date: Tue, 5 Mar 2013 13:14:40 +0100 Subject: [PATCH] --- yaml --- r: 372973 b: refs/heads/master c: 744b37fb5a63d45e92e590967bae82d8ac62e950 h: refs/heads/master i: 372971: 8c42b785dc44da2b98f57ea44460f205a4b83ebc v: v3 --- [refs] | 2 +- trunk/arch/s390/kvm/gaccess.h | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 621e21b7f187..db0971627bf1 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 1a0d74e66405a795bb37a4a23ece50f8d8e5e81e +refs/heads/master: 744b37fb5a63d45e92e590967bae82d8ac62e950 diff --git a/trunk/arch/s390/kvm/gaccess.h b/trunk/arch/s390/kvm/gaccess.h index 4703f129e95e..84d01dd7a8e4 100644 --- a/trunk/arch/s390/kvm/gaccess.h +++ b/trunk/arch/s390/kvm/gaccess.h @@ -22,13 +22,16 @@ static inline void __user *__guestaddr_to_user(struct kvm_vcpu *vcpu, unsigned long guestaddr) { unsigned long prefix = vcpu->arch.sie_block->prefix; + unsigned long uaddress; if (guestaddr < 2 * PAGE_SIZE) guestaddr += prefix; else if ((guestaddr >= prefix) && (guestaddr < prefix + 2 * PAGE_SIZE)) guestaddr -= prefix; - - return (void __user *) gmap_fault(guestaddr, vcpu->arch.gmap); + uaddress = gmap_fault(guestaddr, vcpu->arch.gmap); + if (IS_ERR_VALUE(uaddress)) + uaddress = -EFAULT; + return (void __user *)uaddress; } static inline int get_guest_u64(struct kvm_vcpu *vcpu, unsigned long guestaddr,