From: Michael Schaller misch@google.com
commit 336af6a4686d885a067ecea8c3c3dd129ba4fc75 upstream
Without this patch efivarfs_alloc_dentry creates dentries with slashes in their name if the respective EFI variable has slashes in its name. This in turn causes EIO on getdents64, which prevents a complete directory listing of /sys/firmware/efi/efivars/.
This patch replaces the invalid shlashes with exclamation marks like kobject_set_name_vargs does for /sys/firmware/efi/vars/ to have consistently named dentries under /sys/firmware/efi/vars/ and /sys/firmware/efi/efivars/.
Signed-off-by: Michael Schaller misch@google.com Link: https://lore.kernel.org/r/20200925074502.150448-1-misch@google.com Signed-off-by: Ard Biesheuvel ardb@kernel.org
---
This addresses an issue that breaks Ubuntu installs on platforms that have variable names as described above. One of our installers needs to sort the BootOrder to keep BootCurrent at the front, but this fails when the variable BootCurrent points at appears to not exist due to this issue.
Ref: https://bugs.launchpad.net/bugs/1899993
fs/efivarfs/super.c | 3 +++ 1 file changed, 3 insertions(+)
diff --git a/fs/efivarfs/super.c b/fs/efivarfs/super.c index 28bb5689333a..15880a68faad 100644 --- a/fs/efivarfs/super.c +++ b/fs/efivarfs/super.c @@ -141,6 +141,9 @@ static int efivarfs_callback(efi_char16_t *name16, efi_guid_t vendor,
name[len + EFI_VARIABLE_GUID_LEN+1] = '\0';
+ /* replace invalid slashes like kobject_set_name_vargs does for /sys/firmware/efi/vars. */ + strreplace(name, '/', '!'); + inode = efivarfs_get_inode(sb, d_inode(root), S_IFREG | 0644, 0, is_removable); if (!inode)
On Thu, Oct 29, 2020 at 11:54:42AM -0600, dann frazier wrote:
From: Michael Schaller misch@google.com
commit 336af6a4686d885a067ecea8c3c3dd129ba4fc75 upstream
Without this patch efivarfs_alloc_dentry creates dentries with slashes in their name if the respective EFI variable has slashes in its name. This in turn causes EIO on getdents64, which prevents a complete directory listing of /sys/firmware/efi/efivars/.
This patch replaces the invalid shlashes with exclamation marks like kobject_set_name_vargs does for /sys/firmware/efi/vars/ to have consistently named dentries under /sys/firmware/efi/vars/ and /sys/firmware/efi/efivars/.
Signed-off-by: Michael Schaller misch@google.com Link: https://lore.kernel.org/r/20200925074502.150448-1-misch@google.com Signed-off-by: Ard Biesheuvel ardb@kernel.org
Any reason you are not signing off on this?
:(
On Thu, Oct 29, 2020 at 1:18 PM Greg KH greg@kroah.com wrote:
On Thu, Oct 29, 2020 at 11:54:42AM -0600, dann frazier wrote:
From: Michael Schaller misch@google.com
commit 336af6a4686d885a067ecea8c3c3dd129ba4fc75 upstream
Without this patch efivarfs_alloc_dentry creates dentries with slashes in their name if the respective EFI variable has slashes in its name. This in turn causes EIO on getdents64, which prevents a complete directory listing of /sys/firmware/efi/efivars/.
This patch replaces the invalid shlashes with exclamation marks like kobject_set_name_vargs does for /sys/firmware/efi/vars/ to have consistently named dentries under /sys/firmware/efi/vars/ and /sys/firmware/efi/efivars/.
Signed-off-by: Michael Schaller misch@google.com Link: https://lore.kernel.org/r/20200925074502.150448-1-misch@google.com Signed-off-by: Ard Biesheuvel ardb@kernel.org
Any reason you are not signing off on this?
No, sorry:
Signed-off-by: dann frazier dann.frazier@canonical.com
Easier if I send a v2?
-dann
:(
On Thu, Oct 29, 2020 at 01:20:06PM -0600, dann frazier wrote:
On Thu, Oct 29, 2020 at 1:18 PM Greg KH greg@kroah.com wrote:
On Thu, Oct 29, 2020 at 11:54:42AM -0600, dann frazier wrote:
From: Michael Schaller misch@google.com
commit 336af6a4686d885a067ecea8c3c3dd129ba4fc75 upstream
Without this patch efivarfs_alloc_dentry creates dentries with slashes in their name if the respective EFI variable has slashes in its name. This in turn causes EIO on getdents64, which prevents a complete directory listing of /sys/firmware/efi/efivars/.
This patch replaces the invalid shlashes with exclamation marks like kobject_set_name_vargs does for /sys/firmware/efi/vars/ to have consistently named dentries under /sys/firmware/efi/vars/ and /sys/firmware/efi/efivars/.
Signed-off-by: Michael Schaller misch@google.com Link: https://lore.kernel.org/r/20200925074502.150448-1-misch@google.com Signed-off-by: Ard Biesheuvel ardb@kernel.org
Any reason you are not signing off on this?
No, sorry:
Signed-off-by: dann frazier dann.frazier@canonical.com
Easier if I send a v2?
Nah, I can take that, thanks.
greg k-h
linux-stable-mirror@lists.linaro.org