Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit df88f318 authored by Janosch Frank's avatar Janosch Frank Committed by Christian Borntraeger
Browse files

KVM: s390: Properly lock mm context allow_gmap_hpage_1m setting



We have to do down_write on the mm semaphore to set a bitfield in the
mm context.

Signed-off-by: default avatarJanosch Frank <frankja@linux.ibm.com>
Fixes: a4499382 ("KVM: s390: Add huge page enablement control")
Reviewed-by: default avatarChristian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: default avatarChristian Borntraeger <borntraeger@de.ibm.com>
parent 204c9724
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -16,7 +16,13 @@ typedef struct {
	unsigned long asce;
	unsigned long asce_limit;
	unsigned long vdso_base;
	/* The mmu context allocates 4K page tables. */
	/*
	 * The following bitfields need a down_write on the mm
	 * semaphore when they are written to. As they are only
	 * written once, they can be read without a lock.
	 *
	 * The mmu context allocates 4K page tables.
	 */
	unsigned int alloc_pgste:1;
	/* The mmu context uses extended page tables. */
	unsigned int has_pgste:1;
+2 −0
Original line number Diff line number Diff line
@@ -695,7 +695,9 @@ static 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);
			kvm->mm->context.allow_gmap_hpage_1m = 1;
			up_write(&kvm->mm->mmap_sem);
			/*
			 * We might have to create fake 4k page
			 * tables. To avoid that the hardware works on