Linux-EFI Archive on lore.kernel.org
 help / color / Atom feed
* [PATCH v2] efivarfs: Replace invalid slashes with exclamation marks in dentries.
@ 2020-09-25  7:45 Michael Schaller
  2020-09-25  7:48 ` Ard Biesheuvel
  0 siblings, 1 reply; 5+ messages in thread
From: Michael Schaller @ 2020-09-25  7:45 UTC (permalink / raw)
  Cc: michael, Michael Schaller, Matthew Garrett, Jeremy Kerr,
	Ard Biesheuvel, linux-efi, linux-kernel

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>
Tested-by: Michael Schaller <misch@google.com>
---
 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)
-- 
2.28.0.681.g6f77f65b4e-goog


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v2] efivarfs: Replace invalid slashes with exclamation marks in dentries.
  2020-09-25  7:45 [PATCH v2] efivarfs: Replace invalid slashes with exclamation marks in dentries Michael Schaller
@ 2020-09-25  7:48 ` Ard Biesheuvel
  2020-09-25  7:54   ` Michael Schaller
  0 siblings, 1 reply; 5+ messages in thread
From: Ard Biesheuvel @ 2020-09-25  7:48 UTC (permalink / raw)
  To: Michael Schaller
  Cc: michael, Matthew Garrett, Jeremy Kerr, linux-efi,
	Linux Kernel Mailing List

On Fri, 25 Sep 2020 at 09:45, Michael Schaller <misch@google.com> wrote:
>
> 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>

Thanks

> Tested-by: Michael Schaller <misch@google.com>

I will drop this - in general, it is assumed that you test your own
patches before sending them to the list, so this is implicit. Also,
tested-by's given on the list tend to carry more weight than ones that
are givenin private and added to the patch by the authors themselves.


> ---
>  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)
> --
> 2.28.0.681.g6f77f65b4e-goog
>

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v2] efivarfs: Replace invalid slashes with exclamation marks in dentries.
  2020-09-25  7:48 ` Ard Biesheuvel
@ 2020-09-25  7:54   ` Michael Schaller
  2020-09-25  7:55     ` Ard Biesheuvel
  0 siblings, 1 reply; 5+ messages in thread
From: Michael Schaller @ 2020-09-25  7:54 UTC (permalink / raw)
  To: Ard Biesheuvel
  Cc: Michael Schaller, Matthew Garrett, Jeremy Kerr, linux-efi,
	Linux Kernel Mailing List

On Fri, Sep 25, 2020 at 9:49 AM Ard Biesheuvel <ardb@kernel.org> wrote:
>
> On Fri, 25 Sep 2020 at 09:45, Michael Schaller <misch@google.com> wrote:
> >
> > 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>
>
> Thanks
>
> > Tested-by: Michael Schaller <misch@google.com>
>
> I will drop this - in general, it is assumed that you test your own
> patches before sending them to the list, so this is implicit. Also,
> tested-by's given on the list tend to carry more weight than ones that
> are givenin private and added to the patch by the authors themselves.
>
Makes sense. Is anything else needed from my side?
>
> > ---
> >  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)
> > --
> > 2.28.0.681.g6f77f65b4e-goog
> >

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v2] efivarfs: Replace invalid slashes with exclamation marks in dentries.
  2020-09-25  7:54   ` Michael Schaller
@ 2020-09-25  7:55     ` Ard Biesheuvel
  2020-09-25  7:58       ` Michael Schaller
  0 siblings, 1 reply; 5+ messages in thread
From: Ard Biesheuvel @ 2020-09-25  7:55 UTC (permalink / raw)
  To: Michael Schaller
  Cc: Michael Schaller, Matthew Garrett, Jeremy Kerr, linux-efi,
	Linux Kernel Mailing List

On Fri, 25 Sep 2020 at 09:54, Michael Schaller <misch@google.com> wrote:
>
> On Fri, Sep 25, 2020 at 9:49 AM Ard Biesheuvel <ardb@kernel.org> wrote:
> >
> > On Fri, 25 Sep 2020 at 09:45, Michael Schaller <misch@google.com> wrote:
> > >
> > > 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>
> >
> > Thanks
> >
> > > Tested-by: Michael Schaller <misch@google.com>
> >
> > I will drop this - in general, it is assumed that you test your own
> > patches before sending them to the list, so this is implicit. Also,
> > tested-by's given on the list tend to carry more weight than ones that
> > are givenin private and added to the patch by the authors themselves.
> >
> Makes sense. Is anything else needed from my side?

No, all good. I'll pick this up as a fix.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v2] efivarfs: Replace invalid slashes with exclamation marks in dentries.
  2020-09-25  7:55     ` Ard Biesheuvel
@ 2020-09-25  7:58       ` Michael Schaller
  0 siblings, 0 replies; 5+ messages in thread
From: Michael Schaller @ 2020-09-25  7:58 UTC (permalink / raw)
  To: Ard Biesheuvel
  Cc: Michael Schaller, Matthew Garrett, Jeremy Kerr, linux-efi,
	Linux Kernel Mailing List

On Fri, Sep 25, 2020 at 9:55 AM Ard Biesheuvel <ardb@kernel.org> wrote:
>
> On Fri, 25 Sep 2020 at 09:54, Michael Schaller <misch@google.com> wrote:
> >
> > On Fri, Sep 25, 2020 at 9:49 AM Ard Biesheuvel <ardb@kernel.org> wrote:
> > >
> > > On Fri, 25 Sep 2020 at 09:45, Michael Schaller <misch@google.com> wrote:
> > > >
> > > > 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>
> > >
> > > Thanks
> > >
> > > > Tested-by: Michael Schaller <misch@google.com>
> > >
> > > I will drop this - in general, it is assumed that you test your own
> > > patches before sending them to the list, so this is implicit. Also,
> > > tested-by's given on the list tend to carry more weight than ones that
> > > are givenin private and added to the patch by the authors themselves.
> > >
> > Makes sense. Is anything else needed from my side?
>
> No, all good. I'll pick this up as a fix.

Awesome. Would it make sense to consider this for stable kernels as well?
We've found this in the wild on Lenovo ThinkStation P520 machines as
they write EFI variables like this one:
05/15/2019-13:37:56-SysEvtLog:36-193545dc-3550-4d14-bdba-b7d426c6b019

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, back to index

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-09-25  7:45 [PATCH v2] efivarfs: Replace invalid slashes with exclamation marks in dentries Michael Schaller
2020-09-25  7:48 ` Ard Biesheuvel
2020-09-25  7:54   ` Michael Schaller
2020-09-25  7:55     ` Ard Biesheuvel
2020-09-25  7:58       ` Michael Schaller

Linux-EFI Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-efi/0 linux-efi/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-efi linux-efi/ https://lore.kernel.org/linux-efi \
		linux-efi@vger.kernel.org
	public-inbox-index linux-efi

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-efi


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git