From cc03dc218f3c2d1f82ac4c383e62a06617330760 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arve=20Hj=C3=B8nnev=C3=A5g?= Date: Tue, 22 Nov 2011 18:24:51 -0800 Subject: [PATCH] --- yaml --- r: 276375 b: refs/heads/master c: 6a8943d9ec2567572fca25cf69ad45844d0141a3 h: refs/heads/master i: 276373: 7f0f3beaa8da08c13098a03ebffcdc57ec31c8ff 276371: ce09e0683a6bc8ebce6fa88ae7cfef54d94d3657 276367: d160019213b3b0bf3a0b85975af65df11e483c33 v: v3 --- [refs] | 2 +- trunk/drivers/rtc/class.c | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index 48e7cfea29d1..db5a27feeaf8 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: c0afabd3d553c521e003779c127143ffde55a16f +refs/heads/master: 6a8943d9ec2567572fca25cf69ad45844d0141a3 diff --git a/trunk/drivers/rtc/class.c b/trunk/drivers/rtc/class.c index 01a7df5317c1..b82a1554cdc1 100644 --- a/trunk/drivers/rtc/class.c +++ b/trunk/drivers/rtc/class.c @@ -66,7 +66,7 @@ static int rtc_suspend(struct device *dev, pm_message_t mesg) */ delta = timespec_sub(old_system, old_rtc); delta_delta = timespec_sub(delta, old_delta); - if (abs(delta_delta.tv_sec) >= 2) { + if (delta_delta.tv_sec < -2 || delta_delta.tv_sec >= 2) { /* * if delta_delta is too large, assume time correction * has occured and set old_delta to the current delta. @@ -100,9 +100,8 @@ static int rtc_resume(struct device *dev) rtc_tm_to_time(&tm, &new_rtc.tv_sec); new_rtc.tv_nsec = 0; - if (new_rtc.tv_sec <= old_rtc.tv_sec) { - if (new_rtc.tv_sec < old_rtc.tv_sec) - pr_debug("%s: time travel!\n", dev_name(&rtc->dev)); + if (new_rtc.tv_sec < old_rtc.tv_sec) { + pr_debug("%s: time travel!\n", dev_name(&rtc->dev)); return 0; } @@ -119,7 +118,8 @@ static int rtc_resume(struct device *dev) sleep_time = timespec_sub(sleep_time, timespec_sub(new_system, old_system)); - timekeeping_inject_sleeptime(&sleep_time); + if (sleep_time.tv_sec >= 0) + timekeeping_inject_sleeptime(&sleep_time); return 0; }