[PATCH 3/9] KVM: Move error code settings in kvm_vcpu_compat_ioctl()

From: SF Markus Elfring
Date: Sun Jan 22 2017 - 13:14:19 EST


From: Markus Elfring <elfring@xxxxxxxxxxxxxxxxxxxxx>
Date: Sun, 22 Jan 2017 13:57:40 +0100

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

This issue was detected by using the Coccinelle software.

* Return directly after a call of the function "copy_from_user"
(or an other check) failed in a case block.

* Delete the jump label "out" which became unnecessary with
this refactoring.

Signed-off-by: Markus Elfring <elfring@xxxxxxxxxxxxxxxxxxxxx>
---
virt/kvm/kvm_main.c | 11 +++--------
1 file changed, 3 insertions(+), 8 deletions(-)

diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
index 2773e5012948..62f24d8eaaa2 100644
--- a/virt/kvm/kvm_main.c
+++ b/virt/kvm/kvm_main.c
@@ -2743,17 +2743,14 @@ static long kvm_vcpu_compat_ioctl(struct file *filp,
sigset_t sigset;

if (argp) {
- r = -EFAULT;
if (copy_from_user(&kvm_sigmask, argp,
sizeof(kvm_sigmask)))
- goto out;
- r = -EINVAL;
+ return -EFAULT;
if (kvm_sigmask.len != sizeof(csigset))
- goto out;
- r = -EFAULT;
+ return -EINVAL;
if (copy_from_user(&csigset, sigmask_arg->sigset,
sizeof(csigset)))
- goto out;
+ return -EFAULT;
sigset_from_compat(&sigset, &csigset);
r = kvm_vcpu_ioctl_set_sigmask(vcpu, &sigset);
} else
@@ -2763,8 +2760,6 @@ static long kvm_vcpu_compat_ioctl(struct file *filp,
default:
r = kvm_vcpu_ioctl(filp, ioctl, arg);
}
-
-out:
return r;
}
#endif
--
2.11.0