All of lore.kernel.org
 help / color / mirror / Atom feed
From: Richard Weinberger <richard@nod.at>
To: Al Viro <viro@zeniv.linux.org.uk>
Cc: linux-fsdevel@vger.kernel.org, Linux MTD <linux-mtd@lists.infradead.org>
Subject: Re: [PATCH 09/15] ubifs_lookup: use d_splice_alias()
Date: Mon, 14 May 2018 08:48:04 +0200	[thread overview]
Message-ID: <1895334.QZIWCTBKyO@blindfold> (raw)
In-Reply-To: <20180513213017.31269-9-viro@ZenIV.linux.org.uk>

Am Sonntag, 13. Mai 2018, 23:30:11 CEST schrieb Al Viro:
> From: Al Viro <viro@zeniv.linux.org.uk>
> 
> Cc: Richard Weinberger <richard@nod.at>
> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
> ---
>  fs/ubifs/dir.c | 43 +++++++++++++++----------------------------
>  1 file changed, 15 insertions(+), 28 deletions(-)
> 
> diff --git a/fs/ubifs/dir.c b/fs/ubifs/dir.c
> index 9d7fb88e172e..4e267cc21c77 100644
> --- a/fs/ubifs/dir.c
> +++ b/fs/ubifs/dir.c
> @@ -214,7 +214,7 @@ static struct dentry *ubifs_lookup(struct inode *dir, struct dentry *dentry,
>  	int err;
>  	union ubifs_key key;
>  	struct inode *inode = NULL;
> -	struct ubifs_dent_node *dent;
> +	struct ubifs_dent_node *dent = NULL;
>  	struct ubifs_info *c = dir->i_sb->s_fs_info;
>  	struct fscrypt_name nm;
>  
> @@ -229,14 +229,14 @@ static struct dentry *ubifs_lookup(struct inode *dir, struct dentry *dentry,
>  		return ERR_PTR(err);
>  
>  	if (fname_len(&nm) > UBIFS_MAX_NLEN) {
> -		err = -ENAMETOOLONG;
> -		goto out_fname;
> +		inode = ERR_PTR(-ENAMETOOLONG);
> +		goto done;
>  	}
>  
>  	dent = kmalloc(UBIFS_MAX_DENT_NODE_SZ, GFP_NOFS);
>  	if (!dent) {
> -		err = -ENOMEM;
> -		goto out_fname;
> +		inode = ERR_PTR(-ENOMEM);
> +		goto done;
>  	}
>  
>  	if (nm.hash) {
> @@ -250,16 +250,16 @@ static struct dentry *ubifs_lookup(struct inode *dir, struct dentry *dentry,
>  	}
>  
>  	if (err) {
> -		if (err == -ENOENT) {
> +		if (err == -ENOENT)
>  			dbg_gen("not found");
> -			goto done;
> -		}
> -		goto out_dent;
> +		else
> +			inode = ERR_PTR(err);
> +		goto done;
>  	}
>  
>  	if (dbg_check_name(c, dent, &nm)) {
> -		err = -EINVAL;
> -		goto out_dent;
> +		inode = ERR_PTR(-EINVAL);
> +		goto done;
>  	}
>  
>  	inode = ubifs_iget(dir->i_sb, le64_to_cpu(dent->inum));
> @@ -272,7 +272,7 @@ static struct dentry *ubifs_lookup(struct inode *dir, struct dentry *dentry,
>  		ubifs_err(c, "dead directory entry '%pd', error %d",
>  			  dentry, err);
>  		ubifs_ro_mode(c, err);
> -		goto out_dent;
> +		goto done;
>  	}
>  
>  	if (ubifs_crypt_is_encrypted(dir) &&
> @@ -280,27 +280,14 @@ static struct dentry *ubifs_lookup(struct inode *dir, struct dentry *dentry,
>  	    !fscrypt_has_permitted_context(dir, inode)) {
>  		ubifs_warn(c, "Inconsistent encryption contexts: %lu/%lu",
>  			   dir->i_ino, inode->i_ino);
> -		err = -EPERM;
> -		goto out_inode;
> +		iput(inode);
> +		inode = ERR_PTR(-EPERM);
>  	}
>  
>  done:
>  	kfree(dent);
>  	fscrypt_free_filename(&nm);
> -	/*
> -	 * Note, d_splice_alias() would be required instead if we supported
> -	 * NFS.
> -	 */
> -	d_add(dentry, inode);
> -	return NULL;
> -
> -out_inode:
> -	iput(inode);
> -out_dent:
> -	kfree(dent);
> -out_fname:
> -	fscrypt_free_filename(&nm);
> -	return ERR_PTR(err);
> +	return d_splice_alias(inode, dentry);
>  }
>  
>  static int ubifs_create(struct inode *dir, struct dentry *dentry, umode_t mode,
> 

Acked-by: Richard Weinberger <richard@nod.at>

Thanks,
//richard

  reply	other threads:[~2018-05-14  6:48 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-05-13 21:26 [RFC][PATCHES] reducing d_add() use, part 1 Al Viro
2018-05-13 21:30 ` [PATCH 01/15] bfs_lookup(): use d_splice_alias() Al Viro
2018-05-13 21:30   ` [PATCH 02/15] bfs_find_entry: pass name/len as qstr pointer Al Viro
2018-05-13 21:30   ` [PATCH 03/15] bfs_add_entry: " Al Viro
2018-05-13 21:30   ` [PATCH 04/15] cramfs_lookup(): use d_splice_alias() Al Viro
2018-05-13 21:30   ` [PATCH 05/15] freevxfs_lookup(): " Al Viro
2018-05-14  8:41     ` Christoph Hellwig
2018-05-14 15:26       ` Al Viro
2018-05-13 21:30   ` [PATCH 06/15] minix_lookup: " Al Viro
2018-05-13 21:30   ` [PATCH 07/15] qnx4_lookup: " Al Viro
2018-05-14 10:48     ` Anders Larsen
2018-05-13 21:30   ` [PATCH 08/15] sysv_lookup: " Al Viro
2018-05-14  8:41     ` Christoph Hellwig
2018-05-13 21:30   ` [PATCH 09/15] ubifs_lookup: " Al Viro
2018-05-14  6:48     ` Richard Weinberger [this message]
2018-05-13 21:30   ` [PATCH 10/15] qnx6_lookup: switch to d_splice_alias() Al Viro
2018-05-13 21:30   ` [PATCH 11/15] romfs_lookup: hash negative lookups, use d_splice_alias() Al Viro
2018-05-13 21:30   ` [PATCH 12/15] adfs_lookup_byname: .. *is* taken care of in fs/namei.c Al Viro
2018-05-13 21:30   ` [PATCH 13/15] adfs_lookup: do not fail with ENOENT on negatives, use d_splice_alias() Al Viro
2018-05-13 21:30   ` [PATCH 14/15] xfs_vn_lookup: simplify a bit Al Viro
2018-05-14  8:41     ` Christoph Hellwig
2018-05-13 21:30   ` [PATCH 15/15] openpromfs: switch to d_splice_alias() Al Viro
2018-05-16  9:45   ` [PATCH 01/15] bfs_lookup(): use d_splice_alias() Tigran Aivazian
2018-05-25 23:53 ` [RFC][PATCHES] reducing d_add() use, part 2 Al Viro
2018-05-25 23:54   ` [PATCH 01/10] openpromfs: switch to d_splice_alias() Al Viro
2018-05-25 23:54     ` [PATCH 02/10] orangefs_lookup: simplify Al Viro
2018-05-31 18:23       ` Mike Marshall
2018-05-25 23:54     ` [PATCH 03/10] omfs_lookup(): report IO errors, use d_splice_alias() Al Viro
2018-05-25 23:54     ` [PATCH 04/10] hfs: " Al Viro
2018-05-25 23:54     ` [PATCH 05/10] hfs: don't allow mounting over .../rsrc Al Viro
2018-05-25 23:54     ` [PATCH 06/10] hfsplus: switch to d_splice_alias() Al Viro
2018-05-25 23:54     ` [PATCH 07/10] ncp_lookup(): use d_splice_alias() Al Viro
2018-05-25 23:54     ` [PATCH 08/10] 9p: unify paths in v9fs_vfs_lookup() Al Viro
2018-05-25 23:54     ` [PATCH 09/10] cifs_lookup(): cifs_get_inode_...() never returns 0 with *inode left NULL Al Viro
2018-05-25 23:54     ` [PATCH 10/10] cifs_lookup(): switch to d_splice_alias() Al Viro
2018-05-26  0:03   ` [RFC][PATCHES] reducing d_add() use, part 3 (procfs) Al Viro
2018-05-26  0:04     ` [PATCH 1/5] procfs: get rid of ancient BS in pid_revalidate() uses Al Viro
2018-05-26  0:04       ` [PATCH 2/5] proc_lookupfd_common(): don't bother with instantiate unless the file is open Al Viro
2018-05-26  0:04       ` [PATCH 3/5] don't bother with tid_fd_revalidate() in lookups Al Viro
2018-05-26  0:04       ` [PATCH 4/5] procfs: switch instantiate_t to d_splice_alias() Al Viro
2018-05-26  0:04       ` [PATCH 5/5] switch the rest of procfs lookups " Al Viro
2018-05-31  8:28       ` [PATCH 1/5] procfs: get rid of ancient BS in pid_revalidate() uses Alexey Dobriyan
2018-05-26 13:07     ` [RFC][PATCHES] reducing d_add() use, part 3 (procfs) Alexey Dobriyan
2018-05-26 13:56       ` Alexey Dobriyan
2018-05-26 18:20         ` Al Viro
2018-05-26 18:38           ` Matthew Wilcox

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1895334.QZIWCTBKyO@blindfold \
    --to=richard@nod.at \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-mtd@lists.infradead.org \
    --cc=viro@zeniv.linux.org.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.