• Mark Rutland's avatar
    arm64: entry: remove redundant IRQ flag tracing · df068247
    Mark Rutland authored
    All EL0 returns go via ret_to_user(), which masks IRQs and notifies
    lockdep and tracing before calling into do_notify_resume(). Therefore,
    there's no need for do_notify_resume() to call trace_hardirqs_off(), and
    the comment is stale. The call is simply redundant.
    
    In ret_to_user() we call exit_to_user_mode(), which notifies lockdep and
    tracing the IRQs will be enabled in userspace, so there's no need for
    el0_svc_common() to call trace_hardirqs_on() before returning. Further,
    at the start of ret_to_user() we call trace_hardirqs_off(), so not only
    is this redundant, but it is immediately undone.
    
    In addition to being redundant, the trace_hardirqs_on() in
    el0_svc_common() leaves lockdep inconsistent with the hardware state,
    and is liable to cause issues for any C code or instrumentation
    between this and the call to trace_hardirqs_off() which undoes it in
    ret_to_user().
    
    This patch removes the redundant tracing calls and associated stale
    comments.
    
    Fixes: 23529049 ("arm64: entry: fix non-NMI user<->kernel transitions")
    Signed-off-by: default avatarMark Rutland <mark.rutland@arm.com>
    Acked-by: default avatarWill Deacon <will@kernel.org>
    Cc: James Morse <james.morse@arm.com>
    Cc: Will Deacon <will@kernel.org>
    Link: https://lore.kernel.org/r/20210107145310.44616-1-mark.rutland@arm.comSigned-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
    df068247
syscall.c 5.56 KB