From patchwork Fri Jan 20 18:29:50 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: SF Markus Elfring X-Patchwork-Id: 717878 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3v4q5x2lfMz9s2G for ; Sat, 21 Jan 2017 05:31:01 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753101AbdATSaq (ORCPT ); Fri, 20 Jan 2017 13:30:46 -0500 Received: from mout.web.de ([212.227.15.3]:58688 "EHLO mout.web.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752100AbdATSao (ORCPT ); Fri, 20 Jan 2017 13:30:44 -0500 Received: from [192.168.1.2] ([77.182.231.71]) by smtp.web.de (mrweb002 [213.165.67.108]) with ESMTPSA (Nemesis) id 0M4HmV-1cCpsX0v3b-00rnAJ; Fri, 20 Jan 2017 19:29:54 +0100 Subject: [PATCH 11/11] KVM: PPC: Return directly after a failed copy_from_user() in two functions To: kvm@vger.kernel.org, kvm-ppc@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, Alexander Graf , Benjamin Herrenschmidt , Michael Ellerman , Paolo Bonzini , =?UTF-8?B?UmFkaW0gS3LEjW3DocWZ?= References: Cc: LKML , kernel-janitors@vger.kernel.org From: SF Markus Elfring Message-ID: <0547e88f-34c7-da48-3bb2-57f01e596132@users.sourceforge.net> Date: Fri, 20 Jan 2017 19:29:50 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.6.0 MIME-Version: 1.0 In-Reply-To: X-Provags-ID: V03:K0:MjBc83hOGONv+VXkfexq/SzRkzWjwh+CH7UIVPpeXvppRAiqdIa r3ZqvTS+ti3BSOJkifFWwIEVUA8XpTeXr/nnlUhv3CiTWo//p4Z9hxi77e5DG1hAyaCDr29 yLTW4wnRrg/2dRu1d+H9rd/2FH5Cn403Pd1U0pVOM+kOLbzfg+wqKIXF6pSSCCQDqwy+SgS RWJbueQyCOfPDq4u3gCLQ== X-UI-Out-Filterresults: notjunk:1; V01:K0:GWoRJBsDZeg=:OW7HqSTNMy0D6T89ZO+urt 7igzYIOlkduCEg+XM3RAcZZUlawx1JFe/w7IPwjwpKfDOVTRK8QCDj8zhi0jjD67dw3SXnFP7 ks/+hnnJV/p5z1R6nE7CsBiEmuFBd++E9Dgn17fbzLzBfFdtMPxU6ZpS3ZzB03duXqnxi0kKi 7vEc1vvjAmQcAcw0lbLXNh+3jNy704In/8PsJ2WfoLCyMO+f7pFed7n3Y+qd2BAATECU5TjZV +bc4sPDahC/UIFwNHKPj5by6Ip1GV4P9d4o5gA97sWbW63Aw/+LAuuiQBaDPx8Asz5z4kf+rV HxhBrnrRvyjUSYR3YH5SoGHoe25I4iNylpFpbvqazxyYqO70V59uXIPSImgJmrxKynB7CBEZc UkHYaoeuQsA1Olklao+2mZCgLakPJcscHSppR6c/YhuGrzmM+88HoRN14aHvVMyfzOadFK2oP 6sbRyHi7Cgu/guGlDp4iWGm6xvUd4x7cAMesI83mhclwEGAeeCX5b8q7+NBgTzDf2H7g9Mtgc B0Hq6WO90hKaGjA0r04ZYmj2dLCFScg5+4YONA7v37x/N+8h3Dscbw7w8wAWvMsD0zXVtxLBW q54Mus7wHTTHpzj0VqKzBOIZraevhIE7NYyoWOAtlweNEe/6o7EalLIY+OFePZf0SO4lgidyA 9X8jKziWutmqs+YW9ymEuHd6qj1MYIz3pPvYG/X4ihJBtRCQhUqkGPyY3GDRAD6CuEFaU9kQr fUkdUH1nL7odmkjXxQ5ZjGN6sRhZOJZYw1EniHb9K2xt9wBtSuU37a/dVhworJdMoWF1u5mvq XyGf5gU Sender: kvm-ppc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm-ppc@vger.kernel.org From: Markus Elfring Date: Fri, 20 Jan 2017 18:00:35 +0100 * Return directly after a call of the function "copy_from_user" (or two other checks) failed in a case block. This issue was detected by using the Coccinelle software. * Delete the jump label "out" which became unnecessary with this refactoring. Signed-off-by: Markus Elfring --- arch/powerpc/kvm/powerpc.c | 48 ++++++++++++++++++---------------------------- 1 file changed, 19 insertions(+), 29 deletions(-) diff --git a/arch/powerpc/kvm/powerpc.c b/arch/powerpc/kvm/powerpc.c index efd1183a6b16..7083a680f5fb 100644 --- a/arch/powerpc/kvm/powerpc.c +++ b/arch/powerpc/kvm/powerpc.c @@ -1256,19 +1256,19 @@ long kvm_arch_vcpu_ioctl(struct file *filp, switch (ioctl) { case KVM_INTERRUPT: { struct kvm_interrupt irq; - r = -EFAULT; + if (copy_from_user(&irq, argp, sizeof(irq))) - goto out; + return -EFAULT; r = kvm_vcpu_ioctl_interrupt(vcpu, &irq); - goto out; + break; } case KVM_ENABLE_CAP: { struct kvm_enable_cap cap; - r = -EFAULT; + if (copy_from_user(&cap, argp, sizeof(cap))) - goto out; + return -EFAULT; r = kvm_vcpu_ioctl_enable_cap(vcpu, &cap); break; } @@ -1277,9 +1277,9 @@ long kvm_arch_vcpu_ioctl(struct file *filp, case KVM_GET_ONE_REG: { struct kvm_one_reg reg; - r = -EFAULT; + if (copy_from_user(®, argp, sizeof(reg))) - goto out; + return -EFAULT; if (ioctl == KVM_SET_ONE_REG) r = kvm_vcpu_ioctl_set_one_reg(vcpu, ®); else @@ -1290,9 +1290,9 @@ long kvm_arch_vcpu_ioctl(struct file *filp, #if defined(CONFIG_KVM_E500V2) || defined(CONFIG_KVM_E500MC) case KVM_DIRTY_TLB: { struct kvm_dirty_tlb dirty; - r = -EFAULT; + if (copy_from_user(&dirty, argp, sizeof(dirty))) - goto out; + return -EFAULT; r = kvm_vcpu_ioctl_dirty_tlb(vcpu, &dirty); break; } @@ -1300,8 +1300,6 @@ long kvm_arch_vcpu_ioctl(struct file *filp, default: r = -EINVAL; } - -out: return r; } @@ -1405,19 +1403,16 @@ long kvm_arch_vm_ioctl(struct file *filp, struct kvm_ppc_pvinfo pvinfo; memset(&pvinfo, 0, sizeof(pvinfo)); r = kvm_vm_ioctl_get_pvinfo(&pvinfo); - if (copy_to_user(argp, &pvinfo, sizeof(pvinfo))) { - r = -EFAULT; - goto out; - } - + if (copy_to_user(argp, &pvinfo, sizeof(pvinfo))) + return -EFAULT; break; } case KVM_ENABLE_CAP: { struct kvm_enable_cap cap; - r = -EFAULT; + if (copy_from_user(&cap, argp, sizeof(cap))) - goto out; + return -EFAULT; r = kvm_vm_ioctl_enable_cap(kvm, &cap); break; } @@ -1425,23 +1420,19 @@ long kvm_arch_vm_ioctl(struct file *filp, case KVM_CREATE_SPAPR_TCE_64: { struct kvm_create_spapr_tce_64 create_tce_64; - r = -EFAULT; if (copy_from_user(&create_tce_64, argp, sizeof(create_tce_64))) - goto out; - if (create_tce_64.flags) { - r = -EINVAL; - goto out; - } + return -EFAULT; + if (create_tce_64.flags) + return -EINVAL; r = kvm_vm_ioctl_create_spapr_tce(kvm, &create_tce_64); - goto out; + break; } case KVM_CREATE_SPAPR_TCE: { struct kvm_create_spapr_tce create_tce; struct kvm_create_spapr_tce_64 create_tce_64; - r = -EFAULT; if (copy_from_user(&create_tce, argp, sizeof(create_tce))) - goto out; + return -EFAULT; create_tce_64.liobn = create_tce.liobn; create_tce_64.page_shift = IOMMU_PAGE_SHIFT_4K; @@ -1450,7 +1441,7 @@ long kvm_arch_vm_ioctl(struct file *filp, IOMMU_PAGE_SHIFT_4K; create_tce_64.flags = 0; r = kvm_vm_ioctl_create_spapr_tce(kvm, &create_tce_64); - goto out; + break; } case KVM_PPC_GET_SMMU_INFO: { struct kvm_ppc_smmu_info info; @@ -1477,7 +1468,6 @@ long kvm_arch_vm_ioctl(struct file *filp, r = -ENOTTY; #endif } -out: return r; }