Re: [PATCH][RFC] ->mnt_devname is never NULL

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

 



On Mon, Apr 21, 2025 at 04:35:09AM +0100, Al Viro wrote:
> Not since 8f2918898eb5 "new helpers: vfs_create_mount(), fc_mount()"
> back in 2018.  Get rid of the dead checks...
>     
> Signed-off-by: Al Viro <viro@xxxxxxxxxxxxxxxxxx>
> ---

Good idea. Fwiw, I've put this into vfs-6.16.mount with some other minor
stuff. If you're keeping it yourself let me know.

> diff --git a/fs/namespace.c b/fs/namespace.c
> index d9ca80dcc544..fa17762268f5 100644
> --- a/fs/namespace.c
> +++ b/fs/namespace.c
> @@ -355,12 +355,13 @@ static struct mount *alloc_vfsmnt(const char *name)
>  		if (err)
>  			goto out_free_cache;
>  
> -		if (name) {
> +		if (name)
>  			mnt->mnt_devname = kstrdup_const(name,
>  							 GFP_KERNEL_ACCOUNT);
> -			if (!mnt->mnt_devname)
> -				goto out_free_id;
> -		}
> +		else
> +			mnt->mnt_devname = "none";
> +		if (!mnt->mnt_devname)
> +			goto out_free_id;
>  
>  #ifdef CONFIG_SMP
>  		mnt->mnt_pcp = alloc_percpu(struct mnt_pcp);
> @@ -1268,7 +1269,7 @@ struct vfsmount *vfs_create_mount(struct fs_context *fc)
>  	if (!fc->root)
>  		return ERR_PTR(-EINVAL);
>  
> -	mnt = alloc_vfsmnt(fc->source ?: "none");
> +	mnt = alloc_vfsmnt(fc->source);
>  	if (!mnt)
>  		return ERR_PTR(-ENOMEM);
>  
> @@ -5491,7 +5492,7 @@ static int statmount_sb_source(struct kstatmount *s, struct seq_file *seq)
>  		seq->buf[seq->count] = '\0';
>  		seq->count = start;
>  		seq_commit(seq, string_unescape_inplace(seq->buf + start, UNESCAPE_OCTAL));
> -	} else if (r->mnt_devname) {
> +	} else {
>  		seq_puts(seq, r->mnt_devname);
>  	}
>  	return 0;
> diff --git a/fs/proc_namespace.c b/fs/proc_namespace.c
> index e133b507ddf3..5c555db68aa2 100644
> --- a/fs/proc_namespace.c
> +++ b/fs/proc_namespace.c
> @@ -111,7 +111,7 @@ static int show_vfsmnt(struct seq_file *m, struct vfsmount *mnt)
>  		if (err)
>  			goto out;
>  	} else {
> -		mangle(m, r->mnt_devname ? r->mnt_devname : "none");
> +		mangle(m, r->mnt_devname);
>  	}
>  	seq_putc(m, ' ');
>  	/* mountpoints outside of chroot jail will give SEQ_SKIP on this */
> @@ -177,7 +177,7 @@ static int show_mountinfo(struct seq_file *m, struct vfsmount *mnt)
>  		if (err)
>  			goto out;
>  	} else {
> -		mangle(m, r->mnt_devname ? r->mnt_devname : "none");
> +		mangle(m, r->mnt_devname);
>  	}
>  	seq_puts(m, sb_rdonly(sb) ? " ro" : " rw");
>  	err = show_sb_opts(m, sb);
> @@ -199,17 +199,13 @@ static int show_vfsstat(struct seq_file *m, struct vfsmount *mnt)
>  	int err;
>  
>  	/* device */
> +	seq_puts(m, "device ");
>  	if (sb->s_op->show_devname) {
> -		seq_puts(m, "device ");
>  		err = sb->s_op->show_devname(m, mnt_path.dentry);
>  		if (err)
>  			goto out;
>  	} else {
> -		if (r->mnt_devname) {
> -			seq_puts(m, "device ");
> -			mangle(m, r->mnt_devname);
> -		} else
> -			seq_puts(m, "no device");
> +		mangle(m, r->mnt_devname);
>  	}
>  
>  	/* mount point */




[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