Skip to content
  • Roland McGrath's avatar
    x86_64: remove bogus optimization in sysret_signal · 15e8f348
    Roland McGrath authored
    
    
    This short-circuit path in sysret_signal looks wrong to me.
    AFAICT, in practice the branch is never taken--and if it were,
    it would go wrong.  To wit, try loading a module whose init
    function does set_thread_flag(TIF_IRET), and see insmod crash
    (presumably with a wrong user stack pointer).
    
    This is because the FIXUP_TOP_OF_STACK work hasn't been done yet
    when we jump around the call to ptregscall_common and get to
    int_with_check--where it expects the user RSP,SS,CS and EFLAGS to
    have been stored by FIXUP_TOP_OF_STACK.
    
    I don't think it's normally possible to get to sysret_signal with no
    _TIF_DO_NOTIFY_MASK bits set anyway, so these two instructions are
    already superfluous.  If it ever did happen, it is harmless to call
    do_notify_resume with nothing for it to do.
    
    Signed-off-by: default avatarRoland McGrath <roland@redhat.com>
    15e8f348