lkml.org 
[lkml]   [2018]   [Sep]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: [PATCH v5 05/27] arm64: Use daifflag_restore after bp_hardening
From
Date
Hi James,

On 12/09/18 11:32, James Morse wrote:
> Hi Julien,
>
> On 28/08/18 16:51, Julien Thierry wrote:
>> For EL0 entries requiring bp_hardening, daif status is kept at
>> DAIF_PROCCTX_NOIRQ until after hardening has been done. Then interrupts
>> are enabled through local_irq_enable().
>>
>> Before using local_irq_* functions, daifflags should be properly restored
>> to a state where IRQs are enabled.
>
>> Enable IRQs by restoring DAIF_PROCCTX state after bp hardening.
>
> Is this just for symmetry, or are you going on to add something to the daifflags
> state that local_irq_* functions won't change? (if so, could you allude to that
> in the commit message)
>

What happens is that once we use ICC_PMR_EL1, local_irq_enable will not
touch PSR.I. And we are coming back from an entry where PSR.I was kept
to 1 so local_irq_enable was not actually enabling the interrupts. On
the otherhand, restore will affect both.

Another option is to have the asm macro "enable_da_f" also switch to PMR
usage (i.e. "just keep normal interrupts disabled"). Overall it would
probably be easier to reason with, but I'm just unsure whether it is
acceptable to receive a Pseudo NMI before having applied the bp_hardening.

If it is possible, I'm happy to solve this with enable_da_f.

Thanks,

>
> Either way,
>
> Acked-by: James Morse <james.morse@arm.com>
>

--
Julien Thierry

\
 
 \ /
  Last update: 2018-09-12 13:12    [W:0.096 / U:3.180 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site