On 1/13/21 5:22 PM, Catalin Marinas wrote:
> On Thu, Jan 07, 2021 at 05:29:06PM +0000, Vincenzo Frascino wrote:
>> MTE provides an asynchronous mode for detecting tag exceptions. In
>> particular instead of triggering a fault the arm64 core updates a
>> register which is checked by the kernel at the first entry after the tag
>> exception has occurred.
> 
> Just rephrase the "tag exception" here as there's no exception taken.
> Also we don't check this only when the kernel is first entered after a
> tag check fault, as per patch 3.
>

Ok, I will clarify it in v3.

>> --- a/arch/arm64/kernel/mte.c
>> +++ b/arch/arm64/kernel/mte.c
>> @@ -153,8 +153,35 @@ void mte_init_tags(u64 max_tag)
>>  
>>  void mte_enable_kernel(enum kasan_arg_mode mode)
>>  {
>> -    /* Enable MTE Sync Mode for EL1. */
>> -    sysreg_clear_set(sctlr_el1, SCTLR_ELx_TCF_MASK, SCTLR_ELx_TCF_SYNC);
>> +    const char *m;
>> +
>> +    /* Preset parameter values based on the mode. */
>> +    switch (mode) {
>> +    case KASAN_ARG_MODE_OFF:
>> +            return;
>> +    case KASAN_ARG_MODE_LIGHT:
>> +            /* Enable MTE Async Mode for EL1. */
>> +            sysreg_clear_set(sctlr_el1, SCTLR_ELx_TCF_MASK, 
>> SCTLR_ELx_TCF_ASYNC);
>> +            m = "asynchronous";
>> +            break;
>> +    case KASAN_ARG_MODE_DEFAULT:
>> +    case KASAN_ARG_MODE_PROD:
>> +    case KASAN_ARG_MODE_FULL:
>> +            /* Enable MTE Sync Mode for EL1. */
>> +            sysreg_clear_set(sctlr_el1, SCTLR_ELx_TCF_MASK, 
>> SCTLR_ELx_TCF_SYNC);
>> +            m = "synchronous";
>> +            break;
>> +    default:
>> +            /*
>> +             * kasan mode should be always set hence we should
>> +             * not reach this condition.
>> +             */
>> +            WARN_ON_ONCE(1);
>> +            return;
>> +    }
> 
> I guess the switch statement here will be re-written as we want kasan to
> drive the actual sync/async modes as it sees fit rather than MTE
> guessing what PROD/FULL/LIGHT means.
> 

Yes, this is correct, it will present only sync/async mode.

-- 
Regards,
Vincenzo

Reply via email to