]> git.proxmox.com Git - mirror_ubuntu-kernels.git/blobdiff - arch/s390/kvm/kvm-s390.c
mmap locking API: use coccinelle to convert mmap_sem rwsem call sites
[mirror_ubuntu-kernels.git] / arch / s390 / kvm / kvm-s390.c
index 5c546d27fdae64c9354b05c0addcbef23b40c01b..d0ff26d157bcb7aeb00a9000d58c61c6db6b6e44 100644 (file)
@@ -763,9 +763,9 @@ int kvm_vm_ioctl_enable_cap(struct kvm *kvm, struct kvm_enable_cap *cap)
                        r = -EINVAL;
                else {
                        r = 0;
-                       down_write(&kvm->mm->mmap_sem);
+                       mmap_write_lock(kvm->mm);
                        kvm->mm->context.allow_gmap_hpage_1m = 1;
-                       up_write(&kvm->mm->mmap_sem);
+                       mmap_write_unlock(kvm->mm);
                        /*
                         * We might have to create fake 4k page
                         * tables. To avoid that the hardware works on
@@ -1815,7 +1815,7 @@ static long kvm_s390_get_skeys(struct kvm *kvm, struct kvm_s390_skeys *args)
        if (!keys)
                return -ENOMEM;
 
-       down_read(&current->mm->mmap_sem);
+       mmap_read_lock(current->mm);
        srcu_idx = srcu_read_lock(&kvm->srcu);
        for (i = 0; i < args->count; i++) {
                hva = gfn_to_hva(kvm, args->start_gfn + i);
@@ -1829,7 +1829,7 @@ static long kvm_s390_get_skeys(struct kvm *kvm, struct kvm_s390_skeys *args)
                        break;
        }
        srcu_read_unlock(&kvm->srcu, srcu_idx);
-       up_read(&current->mm->mmap_sem);
+       mmap_read_unlock(current->mm);
 
        if (!r) {
                r = copy_to_user((uint8_t __user *)args->skeydata_addr, keys,
@@ -1873,7 +1873,7 @@ static long kvm_s390_set_skeys(struct kvm *kvm, struct kvm_s390_skeys *args)
                goto out;
 
        i = 0;
-       down_read(&current->mm->mmap_sem);
+       mmap_read_lock(current->mm);
        srcu_idx = srcu_read_lock(&kvm->srcu);
         while (i < args->count) {
                unlocked = false;
@@ -1900,7 +1900,7 @@ static long kvm_s390_set_skeys(struct kvm *kvm, struct kvm_s390_skeys *args)
                        i++;
        }
        srcu_read_unlock(&kvm->srcu, srcu_idx);
-       up_read(&current->mm->mmap_sem);
+       mmap_read_unlock(current->mm);
 out:
        kvfree(keys);
        return r;
@@ -2089,14 +2089,14 @@ static int kvm_s390_get_cmma_bits(struct kvm *kvm,
        if (!values)
                return -ENOMEM;
 
-       down_read(&kvm->mm->mmap_sem);
+       mmap_read_lock(kvm->mm);
        srcu_idx = srcu_read_lock(&kvm->srcu);
        if (peek)
                ret = kvm_s390_peek_cmma(kvm, args, values, bufsize);
        else
                ret = kvm_s390_get_cmma(kvm, args, values, bufsize);
        srcu_read_unlock(&kvm->srcu, srcu_idx);
-       up_read(&kvm->mm->mmap_sem);
+       mmap_read_unlock(kvm->mm);
 
        if (kvm->arch.migration_mode)
                args->remaining = atomic64_read(&kvm->arch.cmma_dirty_pages);
@@ -2146,7 +2146,7 @@ static int kvm_s390_set_cmma_bits(struct kvm *kvm,
                goto out;
        }
 
-       down_read(&kvm->mm->mmap_sem);
+       mmap_read_lock(kvm->mm);
        srcu_idx = srcu_read_lock(&kvm->srcu);
        for (i = 0; i < args->count; i++) {
                hva = gfn_to_hva(kvm, args->start_gfn + i);
@@ -2161,12 +2161,12 @@ static int kvm_s390_set_cmma_bits(struct kvm *kvm,
                set_pgste_bits(kvm->mm, hva, mask, pgstev);
        }
        srcu_read_unlock(&kvm->srcu, srcu_idx);
-       up_read(&kvm->mm->mmap_sem);
+       mmap_read_unlock(kvm->mm);
 
        if (!kvm->mm->context.uses_cmm) {
-               down_write(&kvm->mm->mmap_sem);
+               mmap_write_lock(kvm->mm);
                kvm->mm->context.uses_cmm = 1;
-               up_write(&kvm->mm->mmap_sem);
+               mmap_write_unlock(kvm->mm);
        }
 out:
        vfree(bits);
@@ -2239,9 +2239,9 @@ static int kvm_s390_handle_pv(struct kvm *kvm, struct kvm_pv_cmd *cmd)
                if (r)
                        break;
 
-               down_write(&current->mm->mmap_sem);
+               mmap_write_lock(current->mm);
                r = gmap_mark_unmergeable();
-               up_write(&current->mm->mmap_sem);
+               mmap_write_unlock(current->mm);
                if (r)
                        break;