diff --git a/0001-Hibernate-Patch.patch b/patches-kernel-5.15/hibernate/0001-Hibernate-Patch.patch similarity index 100% rename from 0001-Hibernate-Patch.patch rename to patches-kernel-5.15/hibernate/0001-Hibernate-Patch.patch diff --git a/patches-kernel-6.8/hibernate/0001-Hibernate-Patch.patch b/patches-kernel-6.8/hibernate/0001-Hibernate-Patch.patch new file mode 100644 index 0000000..4ec424a --- /dev/null +++ b/patches-kernel-6.8/hibernate/0001-Hibernate-Patch.patch @@ -0,0 +1,68 @@ +From fbebff4599d745d40c409869e31323b678010397 Mon Sep 17 00:00:00 2001 +From: Captain ALM +Date: Fri, 16 Aug 2024 18:54:33 +0100 +Subject: [PATCH] Hibernate Patch. + +--- + Documentation/admin-guide/kernel-parameters.txt | 4 ++++ + kernel/power/hibernate.c | 11 ++++++++++- + 2 files changed, 14 insertions(+), 1 deletion(-) + +diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt +index e58f3bbb7..d8a8b5c71 100644 +--- a/Documentation/admin-guide/kernel-parameters.txt ++++ b/Documentation/admin-guide/kernel-parameters.txt +@@ -2956,6 +2956,10 @@ + confidentiality, kernel features that allow userland + to extract confidential information from the kernel + are also disabled. ++ lockdown_hibernate [HIBERNATION] ++ Enable hibernation even if lockdown is enabled. Enable this only if ++ your swap is encrypted and secured properly, as an attacker can ++ modify the kernel offline during hibernation. + + locktorture.acq_writer_lim= [KNL] + Set the time limit in jiffies for a lock +diff --git a/kernel/power/hibernate.c b/kernel/power/hibernate.c +index 4b0b7cf2e..d1bd28cdb 100644 +--- a/kernel/power/hibernate.c ++++ b/kernel/power/hibernate.c +@@ -37,6 +37,7 @@ + #include "power.h" + + ++static int lockdown_hibernate; + static int nocompress; + static int noresume; + static int nohibernate; +@@ -83,7 +84,7 @@ void hibernate_release(void) + bool hibernation_available(void) + { + return nohibernate == 0 && +- !security_locked_down(LOCKDOWN_HIBERNATION) && ++ (lockdown_hibernate || !security_locked_down(LOCKDOWN_HIBERNATION)) && + !secretmem_active() && !cxl_mem_active(); + } + +@@ -1370,6 +1371,13 @@ static int __init nohibernate_setup(char *str) + return 1; + } + ++ ++static int __init lockdown_hibernate_setup(char *str) ++{ ++ lockdown_hibernate = 1; ++ return 1; ++} ++ + __setup("noresume", noresume_setup); + __setup("resume_offset=", resume_offset_setup); + __setup("resume=", resume_setup); +@@ -1377,3 +1385,4 @@ __setup("hibernate=", hibernate_setup); + __setup("resumewait", resumewait_setup); + __setup("resumedelay=", resumedelay_setup); + __setup("nohibernate", nohibernate_setup); ++__setup("lockdown_hibernate", lockdown_hibernate_setup); +-- +2.43.0 +