Skip to content
  • Martin Schwidefsky's avatar
    s390: fix race on TIF_MCCK_PENDING · eda0c6d6
    Martin Schwidefsky authored
    
    
    There is a small race window in the __switch_to code in regard to
    the transfer of the TIF_MCCK_PENDING bit from the previous to the
    next task. The bit is transferred before the task struct pointer
    and the thread-info pointer for the next task has been stored to
    lowcore. If a machine check sets the TIF_MCCK_PENDING bit between
    the transfer code and the store of current/thread_info the bit
    is still set for the previous task. And if the previous task has
    terminated it can get lost. The effect is that a pending CRW is
    not retrieved until the next machine checks sets TIF_MCCK_PENDING.
    To fix this reorder __switch_to to first store the task struct
    and thread-info pointer and then do the transfer of the bit.
    
    Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
    eda0c6d6