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:5.002 / U:0.092 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site