• Paul Mackerras's avatar
    KVM: PPC: Book3S PR: Check copy_to/from_user return values · 67325e98
    Paul Mackerras authored
    The PR KVM implementation of the PAPR HPT hypercalls (H_ENTER etc.)
    access an image of the HPT in userspace memory using copy_from_user
    and copy_to_user.  Recently, the declarations of those functions were
    annotated to indicate that the return value must be checked.  Since
    this code doesn't currently check the return value, this causes
    compile warnings like the ones shown below, and since on PPC the
    default is to compile arch/powerpc with -Werror, this causes the
    build to fail.
    
    To fix this, we check the return values, and if non-zero, fail the
    hypercall being processed with a H_FUNCTION error return value.
    There is really no good error return value to use since PAPR didn't
    envisage the possibility that the hypervisor may not be able to access
    the guest's HPT, and H_FUNCTION (function not supported) seems as
    good as any.
    
    The typical compile warnings look like this:
    
      CC      arch/powerpc/kvm/book3s_pr_papr.o
    /home/paulus/kernel/kvm/arch/powerpc/kvm/book3s_pr_papr.c: In function ‘kvmppc_h_pr_enter’:
    /home/paulus/kernel/kvm/arch/powerpc/kvm/book3s_pr_papr.c:53:2: error: ignoring return value of ‘copy_from_user’, declared with attribute warn_unused_result [-Werror=unused-result]
      copy_from_user(pteg, (void __user *)pteg_addr, sizeof(pteg));
      ^
    /home/paulus/kernel/kvm/arch/powerpc/kvm/book3s_pr_papr.c:74:2: error: ignoring return value of ‘copy_to_user’, declared with attribute warn_unused_result [-Werror=unused-result]
      copy_to_user((void __user *)pteg_addr, hpte, HPTE_SIZE);
      ^
    
    ... etc.
    Signed-off-by: default avatarPaul Mackerras <paulus@ozlabs.org>
    67325e98
book3s_pr_papr.c 11.4 KB