From: Karel Zak Date: Mon, 27 Nov 2017 11:37:53 +0000 (+0100) Subject: rtcwake: fix sys vs. rtc time delta usage X-Git-Tag: v2.31.1~21 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9feec6c2a0229ddae3c5f90ee9f790208c100a2c;p=thirdparty%2Futil-linux.git rtcwake: fix sys vs. rtc time delta usage srett commented: After some head scratching why relative wakeup using -s always works while -t didn't seem to work at all I discovered that the adjustment for time difference between sys and rtc is actually inverted when writing the alarm (code for -m show reading is fine), so if the RTC lags 10 minutes behind, the alarm will be shifted into the future by 10 minutes, resulting in a wakeup that is 20 minutes late. Addresses: https://github.com/karelzak/util-linux/issues/544 Signed-off-by: Karel Zak --- diff --git a/sys-utils/rtcwake.c b/sys-utils/rtcwake.c index 5fe686f5b0..20e40a07f6 100644 --- a/sys-utils/rtcwake.c +++ b/sys-utils/rtcwake.c @@ -532,7 +532,7 @@ int main(int argc, char **argv) if (alarm < ctl.sys_time) errx(EXIT_FAILURE, _("time doesn't go backward to %s"), ctime(&alarm)); - alarm += ctl.sys_time - ctl.rtc_time; + alarm -= ctl.sys_time - ctl.rtc_time; } else alarm = ctl.rtc_time + seconds + 1;