do_schedule_next_timer() sets info->si_overrun = timr->it_overrun_last,
this discards the already accumulated overruns.
Signed-off-by: Oleg Nesterov <[email protected]>
--- 26-rc2/kernel/posix-timers.c~2_SNT_OVERRUN 2008-07-23 15:04:18.000000000 +0400
+++ 26-rc2/kernel/posix-timers.c 2008-07-23 20:24:05.000000000 +0400
@@ -289,7 +289,7 @@ void do_schedule_next_timer(struct sigin
else
schedule_next_timer(timr);
- info->si_overrun = timr->it_overrun_last;
+ info->si_overrun += timr->it_overrun_last;
}
if (timr)