[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAMj1kXEOOh8MrAt=L7aBt9wX5Pcmh4irnDuKqsDF7pB5-xnmog@mail.gmail.com>
Date: Fri, 20 Jan 2023 10:23:18 +0100
From: Ard Biesheuvel <ardb@...nel.org>
To: Johan Hovold <johan+linaro@...nel.org>,
Peter Jones <pjones@...hat.com>,
Heinrich Schuchardt <heinrich.schuchardt@...onical.com>
Cc: Matthew Garrett <mjg59@...f.ucam.org>, Jeremy Kerr <jk@...abs.org>,
Maximilian Luz <luzmaximilian@...il.com>,
linux-efi@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH 2/4] efivarfs: always register filesystem
(cc Peter, Heinrich)
On Thu, 19 Jan 2023 at 17:45, Johan Hovold <johan+linaro@...nel.org> wrote:
>
> The efivar ops are typically registered at subsys init time so that
> they are available when efivarfs is registered at module init time.
>
> Other efivars implementations, such as Google SMI, exists and can
> currently be build as modules which means that efivar may not be
> available when efivarfs is initialised.
>
> Move the efivar availability check from module init to when the
> filesystem is mounted to allow late registration of efivars.
>
> Signed-off-by: Johan Hovold <johan+linaro@...nel.org>
I think this change is fine in principle, but I 'm not sure if there
is user space code that the distros are carrying that might get
confused by this: beforehand, efivarfs would not exist in
/proc/filesystems and now, it will but trying to mount it might fail.
> ---
> fs/efivarfs/super.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/fs/efivarfs/super.c b/fs/efivarfs/super.c
> index f72c529c8ec3..b67d431c861a 100644
> --- a/fs/efivarfs/super.c
> +++ b/fs/efivarfs/super.c
> @@ -194,6 +194,9 @@ static int efivarfs_fill_super(struct super_block *sb, struct fs_context *fc)
> struct dentry *root;
> int err;
>
> + if (!efivar_is_available())
> + return -EOPNOTSUPP;
> +
> sb->s_maxbytes = MAX_LFS_FILESIZE;
> sb->s_blocksize = PAGE_SIZE;
> sb->s_blocksize_bits = PAGE_SHIFT;
> @@ -256,9 +259,6 @@ static struct file_system_type efivarfs_type = {
>
> static __init int efivarfs_init(void)
> {
> - if (!efivar_is_available())
> - return -ENODEV;
> -
> return register_filesystem(&efivarfs_type);
> }
>
> --
> 2.38.2
>
Powered by blists - more mailing lists