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

Commit 9798f4ea authored by Cédric Le Goater's avatar Cédric Le Goater Committed by Michael Ellerman
Browse files

KVM: PPC: Book3S HV: XIVE: fix rollback when kvmppc_xive_create fails



The XIVE device structure is now allocated in kvmppc_xive_get_device()
and kfree'd in kvmppc_core_destroy_vm(). In case of an OPAL error when
allocating the XIVE VPs, the kfree() call in kvmppc_xive_*create()
will result in a double free and corrupt the host memory.

Fixes: 5422e951 ("KVM: PPC: Book3S HV: XIVE: Replace the 'destroy' method by a 'release' method")
Cc: stable@vger.kernel.org # v5.2+
Signed-off-by: default avatarCédric Le Goater <clg@kaod.org>
Tested-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/6ea6998b-a890-2511-01d1-747d7621eb19@kaod.org
parent 4d202c8c
Loading
Loading
Loading
Loading
+1 −3
Original line number Diff line number Diff line
@@ -1986,10 +1986,8 @@ static int kvmppc_xive_create(struct kvm_device *dev, u32 type)

	xive->single_escalation = xive_native_has_single_escalation();

	if (ret) {
		kfree(xive);
	if (ret)
		return ret;
	}

	return 0;
}
+2 −2
Original line number Diff line number Diff line
@@ -1090,9 +1090,9 @@ static int kvmppc_xive_native_create(struct kvm_device *dev, u32 type)
	xive->ops = &kvmppc_xive_native_ops;

	if (ret)
		kfree(xive);

		return ret;

	return 0;
}

/*