diff options
author | Radim Krčmář <rkrcmar@redhat.com> | 2017-01-20 11:59:02 -0500 |
---|---|---|
committer | Radim Krčmář <rkrcmar@redhat.com> | 2017-01-20 11:59:02 -0500 |
commit | fec969012314ec452620516f8251f512f9b534ac (patch) | |
tree | acbb1dfa48480a81ca6672ac03fbf4d7c06b4121 | |
parent | ce2e852ecc9a42e4b8dabb46025cfef63209234a (diff) | |
parent | 04478197416e3a302e9ebc917ba1aa884ef9bfab (diff) |
Merge tag 'kvm-s390-master-4.10-1' of git://git.kernel.org/pub/scm/linux/kernel/git/kvms390/linux
KVM: s390: Fix for 4.10 (via kvm/master)
Fix a kernel memory exposure.
-rw-r--r-- | arch/s390/kvm/kvm-s390.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c index bec71e902be3..6484a250021e 100644 --- a/arch/s390/kvm/kvm-s390.c +++ b/arch/s390/kvm/kvm-s390.c | |||
@@ -916,7 +916,7 @@ static int kvm_s390_get_machine(struct kvm *kvm, struct kvm_device_attr *attr) | |||
916 | memcpy(&mach->fac_mask, kvm->arch.model.fac_mask, | 916 | memcpy(&mach->fac_mask, kvm->arch.model.fac_mask, |
917 | S390_ARCH_FAC_LIST_SIZE_BYTE); | 917 | S390_ARCH_FAC_LIST_SIZE_BYTE); |
918 | memcpy((unsigned long *)&mach->fac_list, S390_lowcore.stfle_fac_list, | 918 | memcpy((unsigned long *)&mach->fac_list, S390_lowcore.stfle_fac_list, |
919 | S390_ARCH_FAC_LIST_SIZE_BYTE); | 919 | sizeof(S390_lowcore.stfle_fac_list)); |
920 | if (copy_to_user((void __user *)attr->addr, mach, sizeof(*mach))) | 920 | if (copy_to_user((void __user *)attr->addr, mach, sizeof(*mach))) |
921 | ret = -EFAULT; | 921 | ret = -EFAULT; |
922 | kfree(mach); | 922 | kfree(mach); |
@@ -1437,7 +1437,7 @@ int kvm_arch_init_vm(struct kvm *kvm, unsigned long type) | |||
1437 | 1437 | ||
1438 | /* Populate the facility mask initially. */ | 1438 | /* Populate the facility mask initially. */ |
1439 | memcpy(kvm->arch.model.fac_mask, S390_lowcore.stfle_fac_list, | 1439 | memcpy(kvm->arch.model.fac_mask, S390_lowcore.stfle_fac_list, |
1440 | S390_ARCH_FAC_LIST_SIZE_BYTE); | 1440 | sizeof(S390_lowcore.stfle_fac_list)); |
1441 | for (i = 0; i < S390_ARCH_FAC_LIST_SIZE_U64; i++) { | 1441 | for (i = 0; i < S390_ARCH_FAC_LIST_SIZE_U64; i++) { |
1442 | if (i < kvm_s390_fac_list_mask_size()) | 1442 | if (i < kvm_s390_fac_list_mask_size()) |
1443 | kvm->arch.model.fac_mask[i] &= kvm_s390_fac_list_mask[i]; | 1443 | kvm->arch.model.fac_mask[i] &= kvm_s390_fac_list_mask[i]; |