]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
sleep: let's turn off the RTC alarm time ASAP
authorLennart Poettering <lennart@poettering.net>
Wed, 24 Oct 2018 10:52:11 +0000 (12:52 +0200)
committerLennart Poettering <lennart@poettering.net>
Wed, 24 Oct 2018 10:52:11 +0000 (12:52 +0200)
Let's be a tiny bit more careful here.

Also, let's rearrange things to simplify them a bit, and to not use "r"
outside of its immediate scope of validity.

src/sleep/sleep.c

index bd4c104ad07c61f1b804b514487a22ed7d55ec49..771a8cd48bd6faf83b3ea05c395ebcf461b9967e 100644 (file)
@@ -246,22 +246,22 @@ static int execute_s2h(usec_t hibernate_delay_sec) {
         if (r < 0)
                 return r;
 
-        r = rtc_read_time(&cmp_time);
+        /* Reset RTC right-away */
+        r = rtc_write_wake_alarm(0);
         if (r < 0)
                 return r;
 
-        /* reset RTC */
-        r = rtc_write_wake_alarm(0);
+        r = rtc_read_time(&cmp_time);
         if (r < 0)
                 return r;
 
         log_debug("Woke up at %"PRIu64, cmp_time);
 
-        /* if woken up after alarm time, hibernate */
-        if (cmp_time >= wake_time)
-                r = execute(hibernate_modes, hibernate_states);
+        if (cmp_time < wake_time) /* We woke up before the alarm time, we are done. */
+                return 0;
 
-        return r;
+        /* If woken up after alarm time, hibernate */
+        return execute(hibernate_modes, hibernate_states);
 }
 
 static int help(void) {