From: Mike Yuan Date: Sat, 9 Dec 2023 14:34:43 +0000 (+0800) Subject: hibernate-util: de-duplicate clear_efi_hibernate_location X-Git-Tag: v256-rc1~1540 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8ad973ed99959ff483f6728bc05d7bbab1db9f7c;p=thirdparty%2Fsystemd.git hibernate-util: de-duplicate clear_efi_hibernate_location --- diff --git a/src/hibernate-resume/hibernate-resume-config.c b/src/hibernate-resume/hibernate-resume-config.c index e4be7ca2451..201e14bc83b 100644 --- a/src/hibernate-resume/hibernate-resume-config.c +++ b/src/hibernate-resume/hibernate-resume-config.c @@ -225,17 +225,6 @@ void compare_hibernate_location_and_warn(const HibernateInfo *info) { log_warning("resume_offset=%" PRIu64 " doesn't match with EFI HibernateLocation offset %" PRIu64 ", proceeding anyway with resume_offset=.", info->cmdline->offset, info->efi->offset); } - -void clear_efi_hibernate_location(void) { - int r; - - if (!is_efi_boot()) - return; - - r = efi_set_variable(EFI_SYSTEMD_VARIABLE(HibernateLocation), NULL, 0); - if (r < 0) - log_warning_errno(r, "Failed to clear EFI variable HibernateLocation, ignoring: %m"); -} #endif int acquire_hibernate_info(HibernateInfo *ret) { diff --git a/src/hibernate-resume/hibernate-resume-config.h b/src/hibernate-resume/hibernate-resume-config.h index 365d9ccda59..be759ec5d6b 100644 --- a/src/hibernate-resume/hibernate-resume-config.h +++ b/src/hibernate-resume/hibernate-resume-config.h @@ -40,16 +40,10 @@ int acquire_hibernate_info(HibernateInfo *ret); void compare_hibernate_location_and_warn(const HibernateInfo *info); -void clear_efi_hibernate_location(void); - #else static inline void compare_hibernate_location_and_warn(const HibernateInfo *info) { return; } -static inline void clear_efi_hibernate_location(void) { - return; -} - #endif diff --git a/src/hibernate-resume/hibernate-resume.c b/src/hibernate-resume/hibernate-resume.c index 175a0bda960..3f45836d591 100644 --- a/src/hibernate-resume/hibernate-resume.c +++ b/src/hibernate-resume/hibernate-resume.c @@ -60,7 +60,7 @@ static int run(int argc, char *argv[]) { return r; if (arg_info.efi) - clear_efi_hibernate_location(); + clear_efi_hibernate_location_and_warn(); } if (stat(arg_info.device, &st) < 0) diff --git a/src/shared/hibernate-util.c b/src/shared/hibernate-util.c index 2ce3781cbf6..48ed4141973 100644 --- a/src/shared/hibernate-util.c +++ b/src/shared/hibernate-util.c @@ -506,3 +506,14 @@ int write_resume_config(dev_t devno, uint64_t offset, const char *device) { return 0; } + +void clear_efi_hibernate_location_and_warn(void) { + int r; + + if (!is_efi_boot()) + return; + + r = efi_set_variable(EFI_SYSTEMD_VARIABLE(HibernateLocation), NULL, 0); + if (r < 0) + log_warning_errno(r, "Failed to clear EFI variable HibernateLocation, ignoring: %m"); +} diff --git a/src/shared/hibernate-util.h b/src/shared/hibernate-util.h index 2ae10fb1001..1064d2b4dd4 100644 --- a/src/shared/hibernate-util.h +++ b/src/shared/hibernate-util.h @@ -22,5 +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); + /* Only for test-fiemap */ int read_fiemap(int fd, struct fiemap **ret); diff --git a/src/sleep/sleep.c b/src/sleep/sleep.c index 6ff012d4477..3784796487a 100644 --- a/src/sleep/sleep.c +++ b/src/sleep/sleep.c @@ -301,8 +301,8 @@ static int execute( return 0; fail: - if (sleep_operation_is_hibernation(operation) && is_efi_boot()) - (void) efi_set_variable(EFI_SYSTEMD_VARIABLE(HibernateLocation), NULL, 0); + if (sleep_operation_is_hibernation(operation)) + clear_efi_hibernate_location_and_warn(); return r; }