Blob Blame History Raw
From: Takashi Iwai <tiwai@suse.de>
Subject: kABI compatibility workaround for efivars
Patch-mainline: Never, kABI workaround
References: git-fixes

Re-export two functions that were removed by the patch
  efi-efivars-Fix-variable-writes-without-query_variab.patch

Signed-off-by: Takashi Iwai <tiwai@suse.de>

---
 drivers/firmware/efi/vars.c |   17 +++++++++++++++--
 include/linux/efi.h         |    4 ++++
 2 files changed, 19 insertions(+), 2 deletions(-)

--- a/drivers/firmware/efi/vars.c
+++ b/drivers/firmware/efi/vars.c
@@ -21,7 +21,7 @@ static struct efivars *__efivars;
 
 static DEFINE_SEMAPHORE(efivars_lock);
 
-static efi_status_t check_var_size(bool nonblocking, u32 attributes,
+static efi_status_t __check_var_size(bool nonblocking, u32 attributes,
 				   unsigned long size)
 {
 	const struct efivar_operations *fops;
@@ -39,6 +39,19 @@ static efi_status_t check_var_size(bool
 	return status;
 }
 
+/* FIXME: exported just for kABI compatibility with SLE15-SP5 */
+efi_status_t check_var_size(u32 attributes, unsigned long size)
+{
+	return __check_var_size(false, attributes, size);
+}
+EXPORT_SYMBOL_NS_GPL(check_var_size, EFIVAR);
+
+efi_status_t check_var_size_nonblocking(u32 attributes, unsigned long size)
+{
+	return __check_var_size(true, attributes, size);
+}
+EXPORT_SYMBOL_NS_GPL(check_var_size_nonblocking, EFIVAR);
+
 /**
  * efivars_kobject - get the kobject for the registered efivars
  *
@@ -202,7 +215,7 @@ efi_status_t efivar_set_variable_locked(
 	efi_status_t status;
 
 	if (data_size > 0) {
-		status = check_var_size(nonblocking, attr,
+		status = __check_var_size(nonblocking, attr,
 					data_size + ucs2_strsize(name, 1024));
 		if (status != EFI_SUCCESS)
 			return status;
--- a/include/linux/efi.h
+++ b/include/linux/efi.h
@@ -1065,6 +1065,10 @@ efi_status_t efivar_set_variable_locked(
 efi_status_t efivar_set_variable(efi_char16_t *name, efi_guid_t *vendor,
 				 u32 attr, unsigned long data_size, void *data);
 
+/* exported for kABI compatibility */
+efi_status_t check_var_size(u32 attributes, unsigned long size);
+efi_status_t check_var_size_nonblocking(u32 attributes, unsigned long size);
+
 #if IS_ENABLED(CONFIG_EFI_CAPSULE_LOADER)
 extern bool efi_capsule_pending(int *reset_type);