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
next prev 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).