Re: [PATCH 3/3] tmpfs: Initialize sysfs during tmpfs init

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi André,

On Thu, Oct 31, 2024 at 10:37:41PM -0300, André Almeida wrote:
> Instead of using fs_initcall(), initialize sysfs with the rest of the
> filesystem. This is the right way to do it because otherwise any error
> during tmpfs_sysfs_init() would get silently ignored. It's also useful
> if tmpfs' sysfs ever need to display runtime information.
> 
> Signed-off-by: André Almeida <andrealmeid@xxxxxxxxxx>
> ---
>  mm/shmem.c | 130 ++++++++++++++++++++++++++++-------------------------
>  1 file changed, 68 insertions(+), 62 deletions(-)
> 
> diff --git a/mm/shmem.c b/mm/shmem.c
> index 6038e1d11987..8ff2f619f531 100644
> --- a/mm/shmem.c
> +++ b/mm/shmem.c
> @@ -5126,6 +5126,66 @@ static struct file_system_type shmem_fs_type = {
>  	.fs_flags	= FS_USERNS_MOUNT | FS_ALLOW_IDMAP | FS_MGTIME,
>  };
>  
> +#if defined(CONFIG_SYSFS) && defined(CONFIG_TMPFS)

This condition...

> +static int __init tmpfs_sysfs_init(void)
> +{
> +	int ret;
> +
> +	tmpfs_kobj = kobject_create_and_add("tmpfs", fs_kobj);
> +	if (!tmpfs_kobj)
> +		return -ENOMEM;
> +
> +	ret = sysfs_create_group(tmpfs_kobj, &tmpfs_attribute_group);
> +	if (ret)
> +		kobject_put(tmpfs_kobj);
> +
> +	return ret;
> +}
> +#endif /* CONFIG_SYSFS && CONFIG_TMPFS */
> +
>  void __init shmem_init(void)
>  {
>  	int error;
> @@ -5149,6 +5209,14 @@ void __init shmem_init(void)
>  		goto out1;
>  	}
>  
> +#ifdef CONFIG_SYSFS

and this condition are not the same, so there will be a compile error if
CONFIG_SHMEM and CONFIG_SYSFS are enabled but CONFIG_TMPFS is not, such
as with ARCH=x86_64 allnoconfig for me:

  mm/shmem.c: In function 'shmem_init':
  mm/shmem.c:5243:17: error: implicit declaration of function 'tmpfs_sysfs_init'; did you mean 'uids_sysfs_init'? [-Wimplicit-function-declaration]
   5243 |         error = tmpfs_sysfs_init();
        |                 ^~~~~~~~~~~~~~~~
        |                 uids_sysfs_init

> +	error = tmpfs_sysfs_init();
> +	if (error) {
> +		pr_err("Could not init tmpfs sysfs\n");
> +		goto out1;
> +	}
> +#endif

Cheers,
Nathan




[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [NTFS 3]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [NTFS 3]     [Samba]     [Device Mapper]     [CEPH Development]

  Powered by Linux