Re: [PATCH v7 7/10] KVM: arm/arm64: context-switch ptrauth registers

From: Amit Daniel Kachhap
Date: Thu Mar 28 2019 - 07:29:26 EST



Hi James,
On 3/27/19 11:46 PM, James Morse wrote:
Hi Amit, Kristina,

On 27/03/2019 03:21, Amit Daniel Kachhap wrote:
On 3/26/19 11:31 PM, Kristina Martsenko wrote:
On 26/03/2019 04:03, Amit Daniel Kachhap wrote:
On 3/26/19 1:34 AM, Kristina Martsenko wrote:
On 19/03/2019 08:30, Amit Daniel Kachhap wrote:
From: Mark Rutland <mark.rutland@xxxxxxx>

When pointer authentication is supported, a guest may wish to use it.
This patch adds the necessary KVM infrastructure for this to work, with
a semi-lazy context switch of the pointer auth state.

+ÂÂÂ if (test_bit(KVM_ARM_VCPU_PTRAUTH_ADDRESS, vcpu->arch.features) ||
+ÂÂÂÂÂÂÂ test_bit(KVM_ARM_VCPU_PTRAUTH_GENERIC, vcpu->arch.features)) {>>>>> +ÂÂÂÂÂÂÂ /* Verify that KVM startup matches the conditions for ptrauth */
+ÂÂÂÂÂÂÂ if (WARN_ON(!vcpu_has_ptrauth(vcpu)))
+ÂÂÂÂÂÂÂÂÂÂÂ return -EINVAL;
+ÂÂÂ }

One more thing - I think the WARN_ON() here should be removed. Otherwise
if panic_on_warn is set then userspace can panic the kernel. I think
WARN_ON is only for internal kernel errors (see comment in
include/asm-generic/bug.h).

The documentation makes sense so in this case a pr_err like message will suffice.

(could it be a kvm_debug() at most?)

Do we need to print anything at all? User-space asked us for something we can't do.
Filling up the kernel log with user-space's mistakes makes it harder to debug the kernel
when something goes wrong.

kvm_arm_pmu_v3_init() returns -ENODEV if you ask if for the PMU and the platform can't
support it. Isn't the returned error enough?
Yes Agree that most of the time the user invoked functions are just returned with error value in case of failure. Thanks for the details.

Regards,
Amit D


Btw
there is one WARN in the function kvm_set_ipa_limit in the same file.

That is called once via kvm_arch_init(), it can't be triggered repeatedly from user-space.


Thanks,

James