All successful semop calls must update sem_otime. Jia noticed that wait-for-zero semops do not update sem_otime if they do not sleep. Affected: The bug is present in 3.2.51 - probably all kernels after the introduction of do_smart_update(). Two approaches for fixing: - Move sem_otime = get_seconds() into perform_atomic_semop and then remove the whole "semop_completed" logic. OR - add "if (!alter) sem_otime = get_seconds()" into semtimedop()
Fixed 0e8c665699e953fa58dc1b0b0d09e5dce7343cc7 ipc/sem.c: update sem_otime for all operations