KVM: arm64: Refactor setting the return value in kvm_vm_ioctl_enable_cap()
authorFuad Tabba <tabba@google.com>
Tue, 23 Apr 2024 15:05:36 +0000 (16:05 +0100)
committerMarc Zyngier <maz@kernel.org>
Wed, 1 May 2024 15:48:14 +0000 (16:48 +0100)
Initialize r = -EINVAL to get rid of the error-path
initializations in kvm_vm_ioctl_enable_cap().

No functional change intended.

Suggested-by: Oliver Upton <oliver.upton@linux.dev>
Signed-off-by: Fuad Tabba <tabba@google.com>
Acked-by: Oliver Upton <oliver.upton@linux.dev>
Link: https://lore.kernel.org/r/20240423150538.2103045-29-tabba@google.com
Signed-off-by: Marc Zyngier <maz@kernel.org>
arch/arm64/kvm/arm.c

index b6b6f60becdf279d241181ceb9ef3826614621b8..1075b3cf9a3cd9cc3335254d6bbb23a0f9bccbcc 100644 (file)
@@ -72,8 +72,7 @@ int kvm_arch_vcpu_should_kick(struct kvm_vcpu *vcpu)
 int kvm_vm_ioctl_enable_cap(struct kvm *kvm,
                            struct kvm_enable_cap *cap)
 {
-       int r;
-       u64 new_cap;
+       int r = -EINVAL;
 
        if (cap->flags)
                return -EINVAL;
@@ -86,9 +85,7 @@ int kvm_vm_ioctl_enable_cap(struct kvm *kvm,
                break;
        case KVM_CAP_ARM_MTE:
                mutex_lock(&kvm->lock);
-               if (!system_supports_mte() || kvm->created_vcpus) {
-                       r = -EINVAL;
-               } else {
+               if (system_supports_mte() && !kvm->created_vcpus) {
                        r = 0;
                        set_bit(KVM_ARCH_FLAG_MTE_ENABLED, &kvm->arch.flags);
                }
@@ -99,25 +96,22 @@ int kvm_vm_ioctl_enable_cap(struct kvm *kvm,
                set_bit(KVM_ARCH_FLAG_SYSTEM_SUSPEND_ENABLED, &kvm->arch.flags);
                break;
        case KVM_CAP_ARM_EAGER_SPLIT_CHUNK_SIZE:
-               new_cap = cap->args[0];
-
                mutex_lock(&kvm->slots_lock);
                /*
                 * To keep things simple, allow changing the chunk
                 * size only when no memory slots have been created.
                 */
-               if (!kvm_are_all_memslots_empty(kvm)) {
-                       r = -EINVAL;
-               } else if (new_cap && !kvm_is_block_size_supported(new_cap)) {
-                       r = -EINVAL;
-               } else {
-                       r = 0;
-                       kvm->arch.mmu.split_page_chunk_size = new_cap;
+               if (kvm_are_all_memslots_empty(kvm)) {
+                       u64 new_cap = cap->args[0];
+
+                       if (!new_cap || kvm_is_block_size_supported(new_cap)) {
+                               r = 0;
+                               kvm->arch.mmu.split_page_chunk_size = new_cap;
+                       }
                }
                mutex_unlock(&kvm->slots_lock);
                break;
        default:
-               r = -EINVAL;
                break;
        }