lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <ac0855c4fa222bf68452d8154ea52dcdbb99f39f.camel@kernel.org>
Date: Mon, 09 Jun 2025 08:13:11 -0400
From: Jeff Layton <jlayton@...nel.org>
To: NeilBrown <neil@...wn.name>, Alexander Viro <viro@...iv.linux.org.uk>, 
 Christian Brauner
	 <brauner@...nel.org>, Jan Kara <jack@...e.cz>, Chuck Lever
	 <chuck.lever@...cle.com>, Amir Goldstein <amir73il@...il.com>, Jan Harkes
	 <jaharkes@...cmu.edu>, David Howells <dhowells@...hat.com>, Tyler Hicks
	 <code@...icks.com>, Miklos Szeredi <miklos@...redi.hu>, Carlos Maiolino
	 <cem@...nel.org>
Cc: linux-fsdevel@...r.kernel.org, coda@...cmu.edu,
 codalist@...a.cs.cmu.edu, 	linux-nfs@...r.kernel.org,
 netfs@...ts.linux.dev, ecryptfs@...r.kernel.org, 
	linux-unionfs@...r.kernel.org, linux-xfs@...r.kernel.org, 
	linux-kernel@...r.kernel.org
Subject: Re: [PATCH 1/5] VFS: merge lookup_one_qstr_excl_raw() back into
 lookup_one_qstr_excl()

On Mon, 2025-06-09 at 09:09 +1000, NeilBrown wrote:
> The effect of lookup_one_qstr_excl_raw() can be achieved by passing
> LOOKUP_CREATE() to lookup_one_qstr_excl() - we don't need a separate
> function.
> 
> Signed-off-by: NeilBrown <neil@...wn.name>
> ---
>  fs/namei.c | 37 ++++++++++++++-----------------------
>  1 file changed, 14 insertions(+), 23 deletions(-)
> 
> diff --git a/fs/namei.c b/fs/namei.c
> index 4bb889fc980b..dc42bfac5c57 100644
> --- a/fs/namei.c
> +++ b/fs/namei.c
> @@ -1665,9 +1665,17 @@ static struct dentry *lookup_dcache(const struct qstr *name,
>  	return dentry;
>  }
>  
> -static struct dentry *lookup_one_qstr_excl_raw(const struct qstr *name,
> -					       struct dentry *base,
> -					       unsigned int flags)
> +/*
> + * Parent directory has inode locked exclusive.  This is one
> + * and only case when ->lookup() gets called on non in-lookup
> + * dentries - as the matter of fact, this only gets called
> + * when directory is guaranteed to have no in-lookup children
> + * at all.
> + * Will return -ENOENT if name isn't found and LOOKUP_CREATE wasn't passed.
> + * Will return -EEXIST if name is found and LOOKUP_EXCL was passed.
> + */
> +struct dentry *lookup_one_qstr_excl(const struct qstr *name,
> +				    struct dentry *base, unsigned int flags)
>  {
>  	struct dentry *dentry;
>  	struct dentry *old;
> @@ -1675,7 +1683,7 @@ static struct dentry *lookup_one_qstr_excl_raw(const struct qstr *name,
>  
>  	dentry = lookup_dcache(name, base, flags);
>  	if (dentry)
> -		return dentry;
> +		goto found;
>  
>  	/* Don't create child dentry for a dead directory. */
>  	dir = base->d_inode;
> @@ -1691,24 +1699,7 @@ static struct dentry *lookup_one_qstr_excl_raw(const struct qstr *name,
>  		dput(dentry);
>  		dentry = old;
>  	}
> -	return dentry;
> -}
> -
> -/*
> - * Parent directory has inode locked exclusive.  This is one
> - * and only case when ->lookup() gets called on non in-lookup
> - * dentries - as the matter of fact, this only gets called
> - * when directory is guaranteed to have no in-lookup children
> - * at all.
> - * Will return -ENOENT if name isn't found and LOOKUP_CREATE wasn't passed.
> - * Will return -EEXIST if name is found and LOOKUP_EXCL was passed.
> - */
> -struct dentry *lookup_one_qstr_excl(const struct qstr *name,
> -				    struct dentry *base, unsigned int flags)
> -{
> -	struct dentry *dentry;
> -
> -	dentry = lookup_one_qstr_excl_raw(name, base, flags);
> +found:
>  	if (IS_ERR(dentry))
>  		return dentry;
>  	if (d_is_negative(dentry) && !(flags & LOOKUP_CREATE)) {
> @@ -2790,7 +2781,7 @@ struct dentry *kern_path_locked_negative(const char *name, struct path *path)
>  	if (unlikely(type != LAST_NORM))
>  		return ERR_PTR(-EINVAL);
>  	inode_lock_nested(parent_path.dentry->d_inode, I_MUTEX_PARENT);
> -	d = lookup_one_qstr_excl_raw(&last, parent_path.dentry, 0);
> +	d = lookup_one_qstr_excl(&last, parent_path.dentry, LOOKUP_CREATE);
>  	if (IS_ERR(d)) {
>  		inode_unlock(parent_path.dentry->d_inode);
>  		return d;

Nice little cleanup.

Reviewed-by: Jeff Layton <jlayton@...nel.org>

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ