diff options
author | David Howells <dhowells@redhat.com> | 2024-03-15 15:48:26 +0100 |
---|---|---|
committer | Christian Brauner <brauner@kernel.org> | 2024-03-18 10:33:48 +0100 |
commit | 449ac5514631dd9b9b66dd708dd5beb1428e2812 (patch) | |
tree | 26b51e67139e6ac4965cb0b245948eeb681eb4b7 /fs/netfs/fscache_io.c | |
parent | fs,block: get holder during claim (diff) | |
download | linux-449ac5514631dd9b9b66dd708dd5beb1428e2812.tar.xz linux-449ac5514631dd9b9b66dd708dd5beb1428e2812.zip |
fscache: Fix error handling in fscache_begin_operation()
Fix fscache_begin_operation() to clear cres->cache_priv on error, otherwise
fscache_resources_valid() will report it as being valid.
Signed-off-by: David Howells <dhowells@redhat.com>
Link: https://lore.kernel.org/r/3933237.1710514106@warthog.procyon.org.uk
Reviewed-by: Jeff Layton <jlayton@kernel.org>
Reported-by: Marc Dionne <marc.dionne@auristor.com>
cc: Jeff Layton <jlayton@kernel.org>
cc: netfs@lists.linux.dev
cc: linux-fsdevel@vger.kernel.org
Signed-off-by: Christian Brauner <brauner@kernel.org>
Diffstat (limited to 'fs/netfs/fscache_io.c')
-rw-r--r-- | fs/netfs/fscache_io.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/fs/netfs/fscache_io.c b/fs/netfs/fscache_io.c index ad572f7ee897..43a651ed8264 100644 --- a/fs/netfs/fscache_io.c +++ b/fs/netfs/fscache_io.c @@ -83,8 +83,10 @@ static int fscache_begin_operation(struct netfs_cache_resources *cres, cres->debug_id = cookie->debug_id; cres->inval_counter = cookie->inval_counter; - if (!fscache_begin_cookie_access(cookie, why)) + if (!fscache_begin_cookie_access(cookie, why)) { + cres->cache_priv = NULL; return -ENOBUFS; + } again: spin_lock(&cookie->lock); |