76 lines
2.7 KiB
Diff
76 lines
2.7 KiB
Diff
From: Seth Forshee <seth.forshee@canonical.com>
|
|
Date: Mon, 11 Mar 2013 16:17:50 -0500
|
|
Subject: efivars: Add module parameter to disable use as a pstore backend
|
|
|
|
commit ec0971ba5372a4dfa753f232449d23a8fd98490e upstream.
|
|
|
|
We know that with some firmware implementations writing too much data to
|
|
UEFI variables can lead to bricking machines. Recent changes attempt to
|
|
address this issue, but for some it may still be prudent to avoid
|
|
writing large amounts of data until the solution has been proven on a
|
|
wide variety of hardware.
|
|
|
|
Crash dumps or other data from pstore can potentially be a large data
|
|
source. Add a pstore_module parameter to efivars to allow disabling its
|
|
use as a backend for pstore. Also add a config option,
|
|
CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE, to allow setting the default
|
|
value of this paramter to true (i.e. disabled by default).
|
|
|
|
Signed-off-by: Seth Forshee <seth.forshee@canonical.com>
|
|
Cc: Josh Boyer <jwboyer@redhat.com>
|
|
Cc: Matthew Garrett <mjg59@srcf.ucam.org>
|
|
Cc: Seiji Aguchi <seiji.aguchi@hds.com>
|
|
Cc: Tony Luck <tony.luck@intel.com>
|
|
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
|
|
---
|
|
drivers/firmware/Kconfig | 9 +++++++++
|
|
drivers/firmware/efivars.c | 8 +++++++-
|
|
2 files changed, 16 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/drivers/firmware/Kconfig b/drivers/firmware/Kconfig
|
|
index 898023d..42c759a 100644
|
|
--- a/drivers/firmware/Kconfig
|
|
+++ b/drivers/firmware/Kconfig
|
|
@@ -62,6 +62,15 @@ config EFI_VARS_PSTORE
|
|
will allow writing console messages, crash dumps, or anything
|
|
else supported by pstore to EFI variables.
|
|
|
|
+config EFI_VARS_PSTORE_DEFAULT_DISABLE
|
|
+ bool "Disable using efivars as a pstore backend by default"
|
|
+ depends on EFI_VARS_PSTORE
|
|
+ default n
|
|
+ help
|
|
+ Saying Y here will disable the use of efivars as a storage
|
|
+ backend for pstore by default. This setting can be overridden
|
|
+ using the efivars module's pstore_disable parameter.
|
|
+
|
|
config EFI_PCDP
|
|
bool "Console device selection via EFI PCDP or HCDP table"
|
|
depends on ACPI && EFI && IA64
|
|
diff --git a/drivers/firmware/efivars.c b/drivers/firmware/efivars.c
|
|
index 37b6f24..6607daf 100644
|
|
--- a/drivers/firmware/efivars.c
|
|
+++ b/drivers/firmware/efivars.c
|
|
@@ -103,6 +103,11 @@ MODULE_VERSION(EFIVARS_VERSION);
|
|
*/
|
|
#define GUID_LEN 36
|
|
|
|
+static bool efivars_pstore_disable =
|
|
+ IS_ENABLED(EFI_VARS_PSTORE_DEFAULT_DISABLE);
|
|
+
|
|
+module_param_named(pstore_disable, efivars_pstore_disable, bool, 0644);
|
|
+
|
|
/*
|
|
* The maximum size of VariableName + Data = 1024
|
|
* Therefore, it's reasonable to save that much
|
|
@@ -2009,7 +2014,8 @@ int register_efivars(struct efivars *efivars,
|
|
if (error)
|
|
unregister_efivars(efivars);
|
|
|
|
- efivar_pstore_register(efivars);
|
|
+ if (!efivars_pstore_disable)
|
|
+ efivar_pstore_register(efivars);
|
|
|
|
register_filesystem(&efivarfs_type);
|
|
|