Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1563847

[PATCH 01/11] KVM: PPC: Book3S HV: Move assignments for the variable "err" in kvm_htab_write()

From SF Markus Elfring <elfring@users.sourceforge.net>
Newsgroups linux.kernel
Subject [PATCH 01/11] KVM: PPC: Book3S HV: Move assignments for the variable "err" in kvm_htab_write()
Date 2017-01-20 19:30 +0100
Message-ID <t1M6K-2gO-15@gated-at.bofh.it> (permalink)
References <t1LX4-2d6-19@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


From: Markus Elfring <elfring@users.sourceforge.net>
Date: Thu, 19 Jan 2017 22:45:56 +0100

* A local variable was set to an error code in five cases
  before a concrete error situation was detected.
  Thus move the corresponding assignments into
  if branches to indicate a software failure there.

  This issue was detected by using the Coccinelle software.

* Delete two zero assignments which became unnecessary with
  this refactoring.

Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
---
 arch/powerpc/kvm/book3s_64_mmu_hv.c | 24 +++++++++++++-----------
 1 file changed, 13 insertions(+), 11 deletions(-)

diff --git a/arch/powerpc/kvm/book3s_64_mmu_hv.c b/arch/powerpc/kvm/book3s_64_mmu_hv.c
index b795dd1ac2ef..dc34729e4ad0 100644
--- a/arch/powerpc/kvm/book3s_64_mmu_hv.c
+++ b/arch/powerpc/kvm/book3s_64_mmu_hv.c
@@ -1399,22 +1399,23 @@ static ssize_t kvm_htab_write(struct file *file, const char __user *buf,
 
 	err = 0;
 	for (nb = 0; nb + sizeof(hdr) <= count; ) {
-		err = -EFAULT;
-		if (__copy_from_user(&hdr, buf, sizeof(hdr)))
+		if (__copy_from_user(&hdr, buf, sizeof(hdr))) {
+			err = -EFAULT;
 			break;
+		}
 
-		err = 0;
 		if (nb + hdr.n_valid * HPTE_SIZE > count)
 			break;
 
 		nb += sizeof(hdr);
 		buf += sizeof(hdr);
 
-		err = -EINVAL;
 		i = hdr.index;
 		if (i >= kvm->arch.hpt_npte ||
-		    i + hdr.n_valid + hdr.n_invalid > kvm->arch.hpt_npte)
+		    i + hdr.n_valid + hdr.n_invalid > kvm->arch.hpt_npte) {
+			err = -EINVAL;
 			break;
+		}
 
 		hptp = (__be64 *)(kvm->arch.hpt_virt + (i * HPTE_SIZE));
 		lbuf = (unsigned long __user *)buf;
@@ -1422,26 +1423,28 @@ static ssize_t kvm_htab_write(struct file *file, const char __user *buf,
 			__be64 hpte_v;
 			__be64 hpte_r;
 
-			err = -EFAULT;
 			if (__get_user(hpte_v, lbuf) ||
-			    __get_user(hpte_r, lbuf + 1))
+			    __get_user(hpte_r, lbuf + 1)) {
+				err = -EFAULT;
 				goto out;
+			}
 			v = be64_to_cpu(hpte_v);
 			r = be64_to_cpu(hpte_r);
-			err = -EINVAL;
-			if (!(v & HPTE_V_VALID))
+			if (!(v & HPTE_V_VALID)) {
+				err = -EINVAL;
 				goto out;
+			}
 			lbuf += 2;
 			nb += HPTE_SIZE;
 
 			if (be64_to_cpu(hptp[0]) & (HPTE_V_VALID | HPTE_V_ABSENT))
 				kvmppc_do_h_remove(kvm, 0, i, 0, tmp);
-			err = -EIO;
 			ret = kvmppc_virtmode_do_h_enter(kvm, H_EXACT, i, v, r,
 							 tmp);
 			if (ret != H_SUCCESS) {
 				pr_err("kvm_htab_write ret %ld i=%ld v=%lx "
 				       "r=%lx\n", ret, i, v, r);
+				err = -EIO;
 				goto out;
 			}
 			if (!hpte_setup && is_vrma_hpte(v)) {
@@ -1465,7 +1468,6 @@ static ssize_t kvm_htab_write(struct file *file, const char __user *buf,
 			++i;
 			hptp += 2;
 		}
-		err = 0;
 	}
 
  out:
-- 
2.11.0

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH 00/11] PowerPC-KVM: Fine-tuning for some function  implementations SF Markus Elfring <elfring@users.sourceforge.net> - 2017-01-20 19:20 +0100
  [PATCH 02/11] KVM: PPC: Book3S HV: Improve a size determination in  kvmppc_alloc_hpt() SF Markus Elfring <elfring@users.sourceforge.net> - 2017-01-20 19:30 +0100
  [PATCH 07/11] KVM: PPC: Book3S HV: Improve size determinations in  five functions SF Markus Elfring <elfring@users.sourceforge.net> - 2017-01-20 19:30 +0100
  [PATCH 01/11] KVM: PPC: Book3S HV: Move assignments for the variable  "err" in kvm_htab_write() SF Markus Elfring <elfring@users.sourceforge.net> - 2017-01-20 19:30 +0100
    Re: [PATCH 01/11] KVM: PPC: Book3S HV: Move assignments for the  variable "err" in kvm_htab_write() Paolo Bonzini <pbonzini@redhat.com> - 2017-01-23 15:20 +0100
  [PATCH 10/11] KVM: PPC: e500: Use kcalloc() in e500_mmu_host_init() SF Markus Elfring <elfring@users.sourceforge.net> - 2017-01-20 19:30 +0100
  [PATCH 04/11] KVM: PPC: Book3S HV: Use common error handling code in  kvmppc_clr_passthru_irq() SF Markus Elfring <elfring@users.sourceforge.net> - 2017-01-20 19:30 +0100
  [PATCH 03/11] KVM: PPC: Book3S HV: Move error code assignments in two  functions SF Markus Elfring <elfring@users.sourceforge.net> - 2017-01-20 19:30 +0100
    Re: [PATCH 03/11] KVM: PPC: Book3S HV: Move error code assignments in  two functions Paolo Bonzini <pbonzini@redhat.com> - 2017-01-23 15:20 +0100
  [PATCH 06/11] KVM: PPC: Book3S HV: Use kcalloc() in  kvmppc_alloc_host_rm_ops() SF Markus Elfring <elfring@users.sourceforge.net> - 2017-01-20 19:30 +0100
  [PATCH 09/11] KVM: PPC: Book3S: Improve a size determination in two  functions SF Markus Elfring <elfring@users.sourceforge.net> - 2017-01-20 19:30 +0100
    Re: [PATCH 09/11] KVM: PPC: Book3S: Improve a size determination in  two functions kbuild test robot <lkp@intel.com> - 2017-01-21 07:40 +0100
  [PATCH 11/11] KVM: PPC: Return directly after a failed  copy_from_user() in two functions SF Markus Elfring <elfring@users.sourceforge.net> - 2017-01-20 19:40 +0100
  [PATCH 08/11] KVM: PPC: Book3S: Use seq_puts() in xics_debug_show() SF Markus Elfring <elfring@users.sourceforge.net> - 2017-01-20 19:40 +0100
  [PATCH 05/11] KVM: PPC: Book3S HV: Adjust nine checks for null  pointers SF Markus Elfring <elfring@users.sourceforge.net> - 2017-01-20 19:40 +0100
    Re: [PATCH 05/11] KVM: PPC: Book3S HV: Adjust nine checks for null  pointers Thomas Huth <thuth@redhat.com> - 2017-01-23 20:30 +0100

csiph-web