Linux-EROFS Archive mirror
 help / color / mirror / Atom feed
From: libaokun@huaweicloud.com
To: netfs@lists.linux.dev
Cc: libaokun@huaweicloud.com, jlayton@kernel.org,
	linux-kernel@vger.kernel.org, dhowells@redhat.com,
	linux-cachefs@redhat.com, linux-fsdevel@vger.kernel.org,
	linux-erofs@lists.ozlabs.org
Subject: [PATCH 4/5] cachefiles: correct the return value of cachefiles_check_volume_xattr()
Date: Wed, 24 Apr 2024 11:27:31 +0800	[thread overview]
Message-ID: <20240424032732.2711487-5-libaokun@huaweicloud.com> (raw)
In-Reply-To: <20240424032732.2711487-1-libaokun@huaweicloud.com>

From: Baokun Li <libaokun1@huawei.com>

In cachefiles_check_volume_xattr(), the error returned by vfs_getxattr is
not passed to ret, so it ends up returning -ESTALE, which leads to an
endless loop as follows:

cachefiles_acquire_volume
retry:
  cachefiles_check_volume_xattr
  // return -ESTALE
  cachefiles_bury_object
  //  EIO causes rename failure
  goto retry;

So pass the error code to ret when xlen < 0 to avoid the above problem.

Fixes: 32e150037dce ("fscache, cachefiles: Store the volume coherency data")
Signed-off-by: Baokun Li <libaokun1@huawei.com>
---
 fs/cachefiles/xattr.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/fs/cachefiles/xattr.c b/fs/cachefiles/xattr.c
index bcb6173943ee..20e4a4391090 100644
--- a/fs/cachefiles/xattr.c
+++ b/fs/cachefiles/xattr.c
@@ -252,6 +252,7 @@ int cachefiles_check_volume_xattr(struct cachefiles_volume *volume)
 		xlen = vfs_getxattr(&nop_mnt_idmap, dentry, cachefiles_xattr_cache, buf, len);
 	if (xlen != len) {
 		if (xlen < 0) {
+			ret = xlen;
 			trace_cachefiles_vfs_error(NULL, d_inode(dentry), xlen,
 						   cachefiles_trace_getxattr_error);
 			if (xlen == -EIO)
-- 
2.39.2


  parent reply	other threads:[~2024-04-24  3:52 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-24  3:27 [PATCH 0/5] cachefiles: some bugfixes for withdraw and xattr libaokun
2024-04-24  3:27 ` [PATCH 1/5] netfs, fscache: export fscache_put_volume() and add fscache_try_get_volume() libaokun
2024-04-24  3:27 ` [PATCH 2/5] cachefiles: fix slab-use-after-free in fscache_withdraw_volume() libaokun
2024-04-24  3:27 ` [PATCH 3/5] cachefiles: fix slab-use-after-free in cachefiles_withdraw_cookie() libaokun
2024-04-24  3:27 ` libaokun [this message]
2024-04-24  3:27 ` [PATCH 5/5] cachefiles: correct the return value of cachefiles_check_auxdata() libaokun
2024-05-07 11:20 ` [PATCH 0/5] cachefiles: some bugfixes for withdraw and xattr Baokun Li

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=20240424032732.2711487-5-libaokun@huaweicloud.com \
    --to=libaokun@huaweicloud.com \
    --cc=dhowells@redhat.com \
    --cc=jlayton@kernel.org \
    --cc=linux-cachefs@redhat.com \
    --cc=linux-erofs@lists.ozlabs.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netfs@lists.linux.dev \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).