All of lore.kernel.org
 help / color / mirror / 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
  2020-09-30  5:27 ` [tip: efi/urgent] " tip-bot2 for Michael Schaller
  0 siblings, 2 replies; 6+ 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 related	[flat|nested] 6+ 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
  2020-09-30  5:27 ` [tip: efi/urgent] " tip-bot2 for Michael Schaller
  1 sibling, 1 reply; 6+ 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] 6+ 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; 6+ 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] 6+ 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; 6+ 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] 6+ 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; 6+ 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] 6+ messages in thread

* [tip: efi/urgent] 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-30  5:27 ` tip-bot2 for Michael Schaller
  1 sibling, 0 replies; 6+ messages in thread
From: tip-bot2 for Michael Schaller @ 2020-09-30  5:27 UTC (permalink / raw)
  To: linux-tip-commits; +Cc: Michael Schaller, Ard Biesheuvel, x86, LKML

The following commit has been merged into the efi/urgent branch of tip:

Commit-ID:     336af6a4686d885a067ecea8c3c3dd129ba4fc75
Gitweb:        https://git.kernel.org/tip/336af6a4686d885a067ecea8c3c3dd129ba4fc75
Author:        Michael Schaller <misch@google.com>
AuthorDate:    Fri, 25 Sep 2020 09:45:02 +02:00
Committer:     Ard Biesheuvel <ardb@kernel.org>
CommitterDate: Fri, 25 Sep 2020 23:29:04 +02:00

efivarfs: Replace invalid slashes with exclamation marks in dentries.

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>
---
 fs/efivarfs/super.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/fs/efivarfs/super.c b/fs/efivarfs/super.c
index 28bb568..15880a6 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)

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

end of thread, other threads:[~2020-09-30  5:27 UTC | newest]

Thread overview: 6+ 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
2020-09-30  5:27 ` [tip: efi/urgent] " tip-bot2 for Michael Schaller

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.