69 lines
2.2 KiB
Diff
69 lines
2.2 KiB
Diff
From fbebff4599d745d40c409869e31323b678010397 Mon Sep 17 00:00:00 2001
|
|
From: Captain ALM <captainalm@captainalm.com>
|
|
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
|
|
|