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

Commit 15bbc1b2 authored by Marc Zyngier's avatar Marc Zyngier Committed by Linus Torvalds
Browse files

ARM: KVM: fix unbalanced get_cpu() in access_dcsw



In the very unlikely event where a guest would be foolish enough to
*read* from a write-only cache maintainance register, we end up
with preemption disabled, due to a misplaced get_cpu().

Just move the "is_write" test outside of the critical section.

Signed-off-by: default avatarMarc Zyngier <marc.zyngier@arm.com>
Signed-off-by: default avatarChristoffer Dall <cdall@cs.columbia.edu>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent fca83168
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -79,11 +79,11 @@ static bool access_dcsw(struct kvm_vcpu *vcpu,
	u32 val;
	int cpu;

	cpu = get_cpu();

	if (!p->is_write)
		return read_from_write_only(vcpu, p);

	cpu = get_cpu();

	cpumask_setall(&vcpu->arch.require_dcache_flush);
	cpumask_clear_cpu(cpu, &vcpu->arch.require_dcache_flush);