50 lines
1.5 KiB
Diff
50 lines
1.5 KiB
Diff
From: Ben Hutchings <ben@decadent.org.uk>
|
|
Subject: efivars: pstore: Do not check size when erasing variable
|
|
Date: Sat, 23 Mar 2013 03:49:53 +0000
|
|
|
|
In 3.2, unlike mainline, efi_pstore_erase() calls efi_pstore_write()
|
|
with a size of 0, as the underlying EFI interface treats a size of 0
|
|
as meaning deletion.
|
|
|
|
This was not taken into account in my backport of commit d80a361d779a
|
|
'efi_pstore: Check remaining space with QueryVariableInfo() before
|
|
writing data'. The size check should be omitted when erasing.
|
|
|
|
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
|
---
|
|
--- a/drivers/firmware/efivars.c
|
|
+++ b/drivers/firmware/efivars.c
|
|
@@ -788,19 +788,21 @@ static int efi_pstore_write(enum pstore_
|
|
|
|
spin_lock_irqsave(&efivars->lock, flags);
|
|
|
|
- /*
|
|
- * Check if there is a space enough to log.
|
|
- * size: a size of logging data
|
|
- * DUMP_NAME_LEN * 2: a maximum size of variable name
|
|
- */
|
|
+ if (size) {
|
|
+ /*
|
|
+ * Check if there is a space enough to log.
|
|
+ * size: a size of logging data
|
|
+ * DUMP_NAME_LEN * 2: a maximum size of variable name
|
|
+ */
|
|
|
|
- status = check_var_size_locked(efivars, PSTORE_EFI_ATTRIBUTES,
|
|
- size + DUMP_NAME_LEN * 2);
|
|
+ status = check_var_size_locked(efivars, PSTORE_EFI_ATTRIBUTES,
|
|
+ size + DUMP_NAME_LEN * 2);
|
|
|
|
- if (status) {
|
|
- spin_unlock_irqrestore(&efivars->lock, flags);
|
|
- *id = part;
|
|
- return -ENOSPC;
|
|
+ if (status) {
|
|
+ spin_unlock_irqrestore(&efivars->lock, flags);
|
|
+ *id = part;
|
|
+ return -ENOSPC;
|
|
+ }
|
|
}
|
|
|
|
for (i = 0; i < DUMP_NAME_LEN; i++)
|