• Martin Schwidefsky's avatar
    s390/cputime: fix incorrect system time · 38f91557
    Martin Schwidefsky authored
    [ Upstream commit 07a63cbe ]
    
    git commit c5328901 "[S390] entry[64].S improvements" removed
    the update of the exit_timer lowcore field from the critical section
    cleanup of the .Lsysc_restore/.Lsysc_done and .Lio_restore/.Lio_done
    blocks. If the PSW is updated by the critical section cleanup to point to
    user space again, the interrupt entry code will do a vtime calculation
    after the cleanup completed with an exit_timer value which has *not* been
    updated. Due to this incorrect system time deltas are calculated.
    
    If an interrupt occured with an old PSW between .Lsysc_restore/.Lsysc_done
    or .Lio_restore/.Lio_done update __LC_EXIT_TIMER with the system entry
    time of the interrupt.
    
    Cc: stable@vger.kernel.org # 3.3+
    Tested-by: default avatarChristian Borntraeger <borntraeger@de.ibm.com>
    Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: default avatarSasha Levin <alexander.levin@verizon.com>
    38f91557
entry.S 28.9 KB