• Johannes Berg's avatar
    um: time-travel: fix time corruption · abe4eaa8
    Johannes Berg authored
    In 'basic' time-travel mode (without =inf-cpu or =ext), we
    still get timer interrupts. These can happen at arbitrary
    points in time, i.e. while in timer_read(), which pushes
    time forward just a little bit. Then, if we happen to get
    the interrupt after calculating the new time to push to,
    but before actually finishing that, the interrupt will set
    the time to a value that's incompatible with the forward,
    and we'll crash because time goes backwards when we do the
    forwarding.
    
    Fix this by reading the time_travel_time, calculating the
    adjustment, and doing the adjustment all with interrupts
    disabled.
    Reported-by: default avatarVincent Whitchurch <Vincent.Whitchurch@axis.com>
    Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
    Signed-off-by: default avatarRichard Weinberger <richard@nod.at>
    abe4eaa8
time.c 23 KB