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; |
