]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
hibernate-util: make clear_efi_hibernate_location_and_warn return 1 if
authorMike Yuan <me@yhndnzj.com>
Sun, 31 Mar 2024 12:17:14 +0000 (20:17 +0800)
committerMike Yuan <me@yhndnzj.com>
Wed, 3 Apr 2024 13:59:59 +0000 (21:59 +0800)
actually cleared the variable

src/hibernate-resume/hibernate-resume.c
src/shared/hibernate-util.c
src/shared/hibernate-util.h
src/sleep/sleep.c

index 3f45836d591b127cfc44af4249ef4c7bc191a69b..519aefe29faab8e74fc87bb64dbdb0d5b792d8b2 100644 (file)
@@ -60,7 +60,7 @@ static int run(int argc, char *argv[]) {
                         return r;
 
                 if (arg_info.efi)
-                        clear_efi_hibernate_location_and_warn();
+                        (void) clear_efi_hibernate_location_and_warn();
         }
 
         if (stat(arg_info.device, &st) < 0)
index 3547476c85141522c0fc130d0ed55f7306caa0dc..2e3f7cfb8448cb73bc4aa5ce3c72783c8cb07178 100644 (file)
@@ -513,13 +513,17 @@ int write_resume_config(dev_t devno, uint64_t offset, const char *device) {
         return 0;
 }
 
-void clear_efi_hibernate_location_and_warn(void) {
+int clear_efi_hibernate_location_and_warn(void) {
         int r;
 
         if (!is_efi_boot())
-                return;
+                return 0;
 
         r = efi_set_variable(EFI_SYSTEMD_VARIABLE(HibernateLocation), NULL, 0);
+        if (r == -ENOENT)
+                return 0;
         if (r < 0)
-                log_warning_errno(r, "Failed to clear EFI variable HibernateLocation, ignoring: %m");
+                return log_warning_errno(r, "Failed to clear EFI variable HibernateLocation: %m");
+
+        return 1;
 }
index 1064d2b4dd4ac30716053a8cd7cdafbc24760b4f..394d0b41766b42bd730578ecad84e03cbea81a48 100644 (file)
@@ -22,7 +22,7 @@ int hibernation_is_safe(void);
 
 int write_resume_config(dev_t devno, uint64_t offset, const char *device);
 
-void clear_efi_hibernate_location_and_warn(void);
+int clear_efi_hibernate_location_and_warn(void);
 
 /* Only for test-fiemap */
 int read_fiemap(int fd, struct fiemap **ret);
index 693484e886563e95dd323cdddcb8f8d727b8a563..c96207428dc5da10eca9a924cc6493a90f422d93 100644 (file)
@@ -308,7 +308,7 @@ static int execute(
 
 fail:
         if (SLEEP_OPERATION_IS_HIBERNATION(operation))
-                clear_efi_hibernate_location_and_warn();
+                (void) clear_efi_hibernate_location_and_warn();
 
         return r;
 }