diff options
-rw-r--r-- | arch/powerpc/kvm/book3s_64_mmu_hv.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/arch/powerpc/kvm/book3s_64_mmu_hv.c b/arch/powerpc/kvm/book3s_64_mmu_hv.c index 41f96c51dfca..59425f143c6d 100644 --- a/arch/powerpc/kvm/book3s_64_mmu_hv.c +++ b/arch/powerpc/kvm/book3s_64_mmu_hv.c | |||
@@ -1542,9 +1542,15 @@ static ssize_t kvm_htab_write(struct file *file, const char __user *buf, | |||
1542 | hptp = (__be64 *)(kvm->arch.hpt_virt + (i * HPTE_SIZE)); | 1542 | hptp = (__be64 *)(kvm->arch.hpt_virt + (i * HPTE_SIZE)); |
1543 | lbuf = (unsigned long __user *)buf; | 1543 | lbuf = (unsigned long __user *)buf; |
1544 | for (j = 0; j < hdr.n_valid; ++j) { | 1544 | for (j = 0; j < hdr.n_valid; ++j) { |
1545 | __be64 hpte_v; | ||
1546 | __be64 hpte_r; | ||
1547 | |||
1545 | err = -EFAULT; | 1548 | err = -EFAULT; |
1546 | if (__get_user(v, lbuf) || __get_user(r, lbuf + 1)) | 1549 | if (__get_user(hpte_v, lbuf) || |
1550 | __get_user(hpte_r, lbuf + 1)) | ||
1547 | goto out; | 1551 | goto out; |
1552 | v = be64_to_cpu(hpte_v); | ||
1553 | r = be64_to_cpu(hpte_r); | ||
1548 | err = -EINVAL; | 1554 | err = -EINVAL; |
1549 | if (!(v & HPTE_V_VALID)) | 1555 | if (!(v & HPTE_V_VALID)) |
1550 | goto out; | 1556 | goto out; |