From patchwork Thu Nov 23 09:01:01 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul Mackerras X-Patchwork-Id: 840702 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=kvm-ppc-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; secure) header.d=ozlabs.org header.i=@ozlabs.org header.b="ttsB6bX5"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3yjCxG3jRPz9t2r for ; Thu, 23 Nov 2017 20:01:38 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751631AbdKWJB0 (ORCPT ); Thu, 23 Nov 2017 04:01:26 -0500 Received: from ozlabs.org ([103.22.144.67]:47047 "EHLO ozlabs.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751690AbdKWJBZ (ORCPT ); Thu, 23 Nov 2017 04:01:25 -0500 Received: from authenticated.ozlabs.org (localhost [127.0.0.1]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPSA id 3yjCwz3SHKz9sRm; Thu, 23 Nov 2017 20:01:23 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ozlabs.org; s=201707; t=1511427683; bh=+GT7q1GMk+/5X2aa2WvDg8Fo0wPBhUkPn/9VkAMWP/o=; h=From:To:Subject:Date:In-Reply-To:References:From; b=ttsB6bX5MxHO1aGJyApxpSdqdCPenDIJ3PrCaQJH1Hzbp5hlbFANsQk+99LSQdILo lHElZFUKr3MXMQR79HkTMT5G3NB2YUAUGTPhgjAZnDgeP4KaVkvvmyfMHj4Ugyx7os Vug6v+sMVhtwJr/ql8Loba0fuRvfAvqfEkun4nZJrcgknKpYRCTNS8PLkU47JzceFW gcPyRI6bfNMkAH72Ovd9AqCu7Kr+WMrRlJX15uYHTaxAKTGRuy/JaJ+hJVbgzYXwxL OoJDQFLxRz4yTDpmD2KpUcvHgdasV+oSAz9itmrw+44ceewqG7OuTo7W0HKgeait37 gCZn8Uub2T38w== From: Paul Mackerras To: kvm@vger.kernel.org, kvm-ppc@vger.kernel.org Subject: [PATCH 1/5] KVM: PPC: Book3S HV: Avoid shifts by negative amounts Date: Thu, 23 Nov 2017 20:01:01 +1100 Message-Id: <1511427665-21660-2-git-send-email-paulus@ozlabs.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1511427665-21660-1-git-send-email-paulus@ozlabs.org> References: <1511427665-21660-1-git-send-email-paulus@ozlabs.org> Sender: kvm-ppc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm-ppc@vger.kernel.org The kvmppc_hpte_page_shifts function decodes the actual and base page sizes for a HPTE, returning -1 if it doesn't recognize the page size encoding. This then gets used as a shift amount in various places, which is undefined behaviour. This was reported by Coverity. In fact this should never occur, since we should only get HPTEs in the HPT which have a recognized page size encoding. The only place where this might not be true is in the call to kvmppc_actual_pgsz() near the beginning of kvmppc_do_h_enter(), where we are validating the HPTE value passed in from the guest. So to fix this and eliminate the undefined behaviour, we make kvmppc_hpte_page_shifts return 0 for unrecognized page size encodings, and make kvmppc_actual_pgsz() detect that case and return 0 for the page size, which will then cause kvmppc_do_h_enter() to return an error and refuse to insert any HPTE with an unrecognized page size encoding. To ensure that we don't get undefined behaviour in compute_tlbie_rb(), we take the 4k page size path for any unrecognized page size encoding. This should never be hit in practice because it is only used on HPTE values which have previously been checked for having a recognized page size encoding. Signed-off-by: Paul Mackerras --- arch/powerpc/include/asm/kvm_book3s_64.h | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/arch/powerpc/include/asm/kvm_book3s_64.h b/arch/powerpc/include/asm/kvm_book3s_64.h index 735cfa3..998f7b7 100644 --- a/arch/powerpc/include/asm/kvm_book3s_64.h +++ b/arch/powerpc/include/asm/kvm_book3s_64.h @@ -122,13 +122,13 @@ static inline int kvmppc_hpte_page_shifts(unsigned long h, unsigned long l) lphi = (l >> 16) & 0xf; switch ((l >> 12) & 0xf) { case 0: - return !lphi ? 24 : -1; /* 16MB */ + return !lphi ? 24 : 0; /* 16MB */ break; case 1: return 16; /* 64kB */ break; case 3: - return !lphi ? 34 : -1; /* 16GB */ + return !lphi ? 34 : 0; /* 16GB */ break; case 7: return (16 << 8) + 12; /* 64kB in 4kB */ @@ -140,7 +140,7 @@ static inline int kvmppc_hpte_page_shifts(unsigned long h, unsigned long l) return (24 << 8) + 12; /* 16MB in 4kB */ break; } - return -1; + return 0; } static inline int kvmppc_hpte_base_page_shift(unsigned long h, unsigned long l) @@ -159,7 +159,11 @@ static inline int kvmppc_hpte_actual_page_shift(unsigned long h, unsigned long l static inline unsigned long kvmppc_actual_pgsz(unsigned long v, unsigned long r) { - return 1ul << kvmppc_hpte_actual_page_shift(v, r); + int shift = kvmppc_hpte_actual_page_shift(v, r); + + if (shift) + return 1ul << shift; + return 0; } static inline int kvmppc_pgsize_lp_encoding(int base_shift, int actual_shift) @@ -232,7 +236,7 @@ static inline unsigned long compute_tlbie_rb(unsigned long v, unsigned long r, va_low ^= v >> (SID_SHIFT_1T - 16); va_low &= 0x7ff; - if (b_pgshift == 12) { + if (b_pgshift <= 12) { if (a_pgshift > 12) { sllp = (a_pgshift == 16) ? 5 : 4; rb |= sllp << 5; /* AP field */ From patchwork Thu Nov 23 09:01:02 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul Mackerras X-Patchwork-Id: 840703 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=kvm-ppc-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; secure) header.d=ozlabs.org header.i=@ozlabs.org header.b="FNKyVZSB"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3yjCxJ2cF7z9t2m for ; Thu, 23 Nov 2017 20:01:40 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752636AbdKWJBj (ORCPT ); Thu, 23 Nov 2017 04:01:39 -0500 Received: from ozlabs.org ([103.22.144.67]:38471 "EHLO ozlabs.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751702AbdKWJB0 (ORCPT ); Thu, 23 Nov 2017 04:01:26 -0500 Received: from authenticated.ozlabs.org (localhost [127.0.0.1]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPSA id 3yjCx0001Jz9t2c; Thu, 23 Nov 2017 20:01:23 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ozlabs.org; s=201707; t=1511427684; bh=Wog/jSdFUxxmIro0slUwdreQ18nQ/4CNwrRQLP6NwqE=; h=From:To:Subject:Date:In-Reply-To:References:From; b=FNKyVZSB+zjEJKRB8H/4jVq6DasC/NVwaWUMHxgBv1CSAzB0TM9jVw3JNkl958kXi hnAFzNjwmojD2gJKjpjOrlf9tdMWqR1yy0WR1Sqdc+z9A9WyXBUYBshtUTD/dciI1b adrlejDx76KjgeXLxI88evEML7MS3H+egl6L8DF4FZ+ZukU3YlHmjlro9c1AzKCB+7 rfUWMvRFOHhLjv2S1f7CIw1VtCJiYUUa9CNYlD2ryACfB1UU170fPq3IVZZNu60TiB xysvYn7hY95OQieOcpcd/jDkjGSbnzkv6b1YDPgRFSFyIyGX8BsEh4rbxQQcy0vnD1 i9sl1nX5wyGtg== From: Paul Mackerras To: kvm@vger.kernel.org, kvm-ppc@vger.kernel.org Subject: [PATCH 2/5] KVM: PPC: Book3S HV: Fix typo in kvmppc_hv_get_dirty_log_radix() Date: Thu, 23 Nov 2017 20:01:02 +1100 Message-Id: <1511427665-21660-3-git-send-email-paulus@ozlabs.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1511427665-21660-1-git-send-email-paulus@ozlabs.org> References: <1511427665-21660-1-git-send-email-paulus@ozlabs.org> Sender: kvm-ppc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm-ppc@vger.kernel.org This fixes a typo where the intent was to assign to 'j' in order to skip some number of bits in the dirty bitmap for a guest. The effect of the typo is benign since it means we just iterate through all the bits rather than skipping bits which we know will be zero. This issue was found by Coverity. Signed-off-by: Paul Mackerras Reviewed-by: Darren Kenny --- arch/powerpc/kvm/book3s_64_mmu_radix.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/powerpc/kvm/book3s_64_mmu_radix.c b/arch/powerpc/kvm/book3s_64_mmu_radix.c index 58618f6..0c85481 100644 --- a/arch/powerpc/kvm/book3s_64_mmu_radix.c +++ b/arch/powerpc/kvm/book3s_64_mmu_radix.c @@ -573,7 +573,7 @@ long kvmppc_hv_get_dirty_log_radix(struct kvm *kvm, j = i + 1; if (npages) { set_dirty_bits(map, i, npages); - i = j + npages; + j = i + npages; } } return 0; From patchwork Thu Nov 23 09:01:03 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul Mackerras X-Patchwork-Id: 840701 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=kvm-ppc-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; secure) header.d=ozlabs.org header.i=@ozlabs.org header.b="OVaJ2jm+"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3yjCx73BQtz9t3F for ; Thu, 23 Nov 2017 20:01:31 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752513AbdKWJB3 (ORCPT ); Thu, 23 Nov 2017 04:01:29 -0500 Received: from ozlabs.org ([103.22.144.67]:33269 "EHLO ozlabs.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751771AbdKWJB0 (ORCPT ); Thu, 23 Nov 2017 04:01:26 -0500 Received: from authenticated.ozlabs.org (localhost [127.0.0.1]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPSA id 3yjCx04M69z9t2h; Thu, 23 Nov 2017 20:01:24 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ozlabs.org; s=201707; t=1511427684; bh=ij2SBWWWGm49uJK/ePHG3vm2ZE1FcaAnsbDgvfEzjOM=; h=From:To:Subject:Date:In-Reply-To:References:From; b=OVaJ2jm+BPJT3J74/N7+KCf0j7Y0MSl+CK91nr7sNFAUqp9ZM9BHTmzpefszxKEMp RbK5cqNAJtT3VhrfQgZ0wi3DLPc/PmJHoLx6E+KdEcH5cVVXsZPHkUQTxVuhNFEUGj b2P5iF8PeM/aVpOAZg/9qHem/3Qh1N9LO9NeiMbkon1GLV26KN5HJDr8f9fSzs+I5p SgG24ObYkl22p+6Qiiq1IaHM42akQrsCcZukgPxAL2u/7+Bjr858cRccNHDp1VmWOY Aag5xutLouBkGT8v8DwZJFpXWkio727K488SOMtGz1t2+7J0iSeWenaUjq+Wyfe2rG Z628dFKhqtW8Q== From: Paul Mackerras To: kvm@vger.kernel.org, kvm-ppc@vger.kernel.org Subject: [PATCH 3/5] KVM: PPC: Book3S HV: Remove useless statement Date: Thu, 23 Nov 2017 20:01:03 +1100 Message-Id: <1511427665-21660-4-git-send-email-paulus@ozlabs.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1511427665-21660-1-git-send-email-paulus@ozlabs.org> References: <1511427665-21660-1-git-send-email-paulus@ozlabs.org> Sender: kvm-ppc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm-ppc@vger.kernel.org This removes a statement that has no effect. It should have been removed in commit 898b25b202f3 ("KVM: PPC: Book3S HV: Simplify dynamic micro-threading code", 2017-06-22) along with the loop over the piggy-backed virtual cores. This issue was reported by Coverity. Signed-off-by: Paul Mackerras Reviewed-by: Darren Kenny --- arch/powerpc/kvm/book3s_hv.c | 1 - 1 file changed, 1 deletion(-) diff --git a/arch/powerpc/kvm/book3s_hv.c b/arch/powerpc/kvm/book3s_hv.c index 2d46037..597498d 100644 --- a/arch/powerpc/kvm/book3s_hv.c +++ b/arch/powerpc/kvm/book3s_hv.c @@ -2831,7 +2831,6 @@ static noinline void kvmppc_run_core(struct kvmppc_vcore *vc) */ if (!thr0_done) kvmppc_start_thread(NULL, pvc); - thr += pvc->num_threads; } /* From patchwork Thu Nov 23 09:01:04 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul Mackerras X-Patchwork-Id: 840699 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=kvm-ppc-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; secure) header.d=ozlabs.org header.i=@ozlabs.org header.b="oJWWBEr9"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3yjCx60ktLz9t30 for ; Thu, 23 Nov 2017 20:01:30 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752212AbdKWJB2 (ORCPT ); Thu, 23 Nov 2017 04:01:28 -0500 Received: from ozlabs.org ([103.22.144.67]:55607 "EHLO ozlabs.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752174AbdKWJB0 (ORCPT ); Thu, 23 Nov 2017 04:01:26 -0500 Received: from authenticated.ozlabs.org (localhost [127.0.0.1]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPSA id 3yjCx0627Wz9t1t; Thu, 23 Nov 2017 20:01:24 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ozlabs.org; s=201707; t=1511427684; bh=TUDDBUoRnvmv0nKl3ONJer+ZcATvZjPNcDKi6gWamA4=; h=From:To:Subject:Date:In-Reply-To:References:From; b=oJWWBEr9XJfA5ajS29TV2zCVBz+s+vN6wjShoY1xOSuTDSlqt+OTB7vBznFfh7MMB uM8vTusmzKrrG+mq6XxkaztxzGAzYn0krt1SOfP9Gopc5cdM3zHH3TdjzG5Vn5T20F eZ5zOPsS/g/wEc4F89KhkNi1Qrr/rM4BDPL7YZaR1CzDZxRLZIVUMe8dsMddyfRtse d1Wvmxi8S4BIZLs0glIr1qg/+Q2fNm7sxDTFZYGq1fihHfzGn7ZlGh3Q7Fkg9ZRbre WHLMNyVbQWS42TIKySOL+7ppTg7HCqb5ro1ClaAPIXCG0lFGaUdn79I4uExS4IZU/+ jU+golpAz1OLg== From: Paul Mackerras To: kvm@vger.kernel.org, kvm-ppc@vger.kernel.org Subject: [PATCH 4/5] KVM: PPC: Book3S HV: Fix conditions for starting vcpu Date: Thu, 23 Nov 2017 20:01:04 +1100 Message-Id: <1511427665-21660-5-git-send-email-paulus@ozlabs.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1511427665-21660-1-git-send-email-paulus@ozlabs.org> References: <1511427665-21660-1-git-send-email-paulus@ozlabs.org> Sender: kvm-ppc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm-ppc@vger.kernel.org This corrects the test that determines whether a vcpu that has just become able to run in the guest (e.g. it has just finished handling a hypercall or hypervisor page fault) and whose virtual core is already running somewhere as a "piggybacked" vcore can start immediately or not. (A piggybacked vcore is one which is executing along with another vcore as a result of dynamic micro-threading.) Previously the test tried to lock the piggybacked vcore using spin_trylock, which would always fail because the vcore was already locked, and so the vcpu would have to wait until its vcore exited the guest before it could enter. In fact the vcpu can enter if its vcore is in VCORE_PIGGYBACK state and not already exiting (or exited) the guest, so the test in VCORE_PIGGYBACK state is basically the same as for VCORE_RUNNING state. Coverity detected this as a double unlock issue, which it isn't because the spin_trylock would always fail. This will fix the apparent double unlock as well. Signed-off-by: Paul Mackerras --- arch/powerpc/kvm/book3s_hv.c | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/arch/powerpc/kvm/book3s_hv.c b/arch/powerpc/kvm/book3s_hv.c index 597498d..c4f0beb 100644 --- a/arch/powerpc/kvm/book3s_hv.c +++ b/arch/powerpc/kvm/book3s_hv.c @@ -3175,17 +3175,8 @@ static int kvmppc_run_vcpu(struct kvm_run *kvm_run, struct kvm_vcpu *vcpu) * this thread straight away and have it join in. */ if (!signal_pending(current)) { - if (vc->vcore_state == VCORE_PIGGYBACK) { - if (spin_trylock(&vc->lock)) { - if (vc->vcore_state == VCORE_RUNNING && - !VCORE_IS_EXITING(vc)) { - kvmppc_create_dtl_entry(vcpu, vc); - kvmppc_start_thread(vcpu, vc); - trace_kvm_guest_enter(vcpu); - } - spin_unlock(&vc->lock); - } - } else if (vc->vcore_state == VCORE_RUNNING && + if ((vc->vcore_state == VCORE_PIGGYBACK || + vc->vcore_state == VCORE_RUNNING) && !VCORE_IS_EXITING(vc)) { kvmppc_create_dtl_entry(vcpu, vc); kvmppc_start_thread(vcpu, vc); From patchwork Thu Nov 23 09:01:05 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul Mackerras X-Patchwork-Id: 840700 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=kvm-ppc-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; secure) header.d=ozlabs.org header.i=@ozlabs.org header.b="qONUb+ft"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3yjCx5249Cz9t2c for ; Thu, 23 Nov 2017 20:01:29 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752456AbdKWJB1 (ORCPT ); Thu, 23 Nov 2017 04:01:27 -0500 Received: from ozlabs.org ([103.22.144.67]:41565 "EHLO ozlabs.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752212AbdKWJB0 (ORCPT ); Thu, 23 Nov 2017 04:01:26 -0500 Received: from authenticated.ozlabs.org (localhost [127.0.0.1]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPSA id 3yjCx10Kmnz9t2l; Thu, 23 Nov 2017 20:01:25 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ozlabs.org; s=201707; t=1511427685; bh=Ru1aruh25AsZydunSp5vrEChOY3eRMg7W9dSzK5QQP8=; h=From:To:Subject:Date:In-Reply-To:References:From; b=qONUb+ftFrduqiO3D+QSzPsjBziGsJOlvRSYik+RT9BZSyy0k8mqLSo3NB0iWipHG 5e2UWtJ64R/a7e4p6y9ghqIsfgGdZjN6Ff7sW7W3TNKfF0i4MvNQORJAq9FkLj9p1D AUqnVYxr7bZ2wmw1VuHUNjIEFSbKkjjUSKVrUwmnkOmknE3ZC9goyNZA006wH5MB34 fxotpteBPUxHd2QRPX8JJhviJIytWLxndVgyFs28o1tJVgxk4M6WwRJF/Pf9MWBnR0 KAg55nroZPpu+0MgsFqrLViH+eyGXNzZ6vrjT9TERqfWSPNYyRCmiqHtblwbC7GKrj USqdt8WLruZcw== From: Paul Mackerras To: kvm@vger.kernel.org, kvm-ppc@vger.kernel.org Subject: [PATCH 5/5] KVM: PPC: Book3S: Eliminate some unnecessary checks Date: Thu, 23 Nov 2017 20:01:05 +1100 Message-Id: <1511427665-21660-6-git-send-email-paulus@ozlabs.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1511427665-21660-1-git-send-email-paulus@ozlabs.org> References: <1511427665-21660-1-git-send-email-paulus@ozlabs.org> Sender: kvm-ppc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm-ppc@vger.kernel.org In an excess of caution, commit 6f63e81bda98 ("KVM: PPC: Book3S: Add MMIO emulation for FP and VSX instructions", 2017-02-21) included checks for the case that vcpu->arch.mmio_vsx_copy_nums is less than zero, even though its type is u8. This causes a Coverity warning, so we remove the check for < 0. We also adjust the associated comment to be more accurate ("4 or less" rather than "less than 4"). Signed-off-by: Paul Mackerras Reviewed-by: Darren Kenny --- arch/powerpc/kvm/powerpc.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/arch/powerpc/kvm/powerpc.c b/arch/powerpc/kvm/powerpc.c index 6b6c53c..c2c7ef3 100644 --- a/arch/powerpc/kvm/powerpc.c +++ b/arch/powerpc/kvm/powerpc.c @@ -1101,11 +1101,9 @@ int kvmppc_handle_vsx_load(struct kvm_run *run, struct kvm_vcpu *vcpu, { enum emulation_result emulated = EMULATE_DONE; - /* Currently, mmio_vsx_copy_nums only allowed to be less than 4 */ - if ( (vcpu->arch.mmio_vsx_copy_nums > 4) || - (vcpu->arch.mmio_vsx_copy_nums < 0) ) { + /* Currently, mmio_vsx_copy_nums only allowed to be 4 or less */ + if (vcpu->arch.mmio_vsx_copy_nums > 4) return EMULATE_FAIL; - } while (vcpu->arch.mmio_vsx_copy_nums) { emulated = __kvmppc_handle_load(run, vcpu, rt, bytes, @@ -1247,11 +1245,9 @@ int kvmppc_handle_vsx_store(struct kvm_run *run, struct kvm_vcpu *vcpu, vcpu->arch.io_gpr = rs; - /* Currently, mmio_vsx_copy_nums only allowed to be less than 4 */ - if ( (vcpu->arch.mmio_vsx_copy_nums > 4) || - (vcpu->arch.mmio_vsx_copy_nums < 0) ) { + /* Currently, mmio_vsx_copy_nums only allowed to be 4 or less */ + if (vcpu->arch.mmio_vsx_copy_nums > 4) return EMULATE_FAIL; - } while (vcpu->arch.mmio_vsx_copy_nums) { if (kvmppc_get_vsr_data(vcpu, rs, &val) == -1)