fscache: Fix error handling in fscache_begin_operation()
authorDavid Howells <dhowells@redhat.com>
Fri, 15 Mar 2024 14:48:26 +0000 (14:48 +0000)
committerChristian Brauner <brauner@kernel.org>
Mon, 18 Mar 2024 09:33:48 +0000 (10:33 +0100)
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>
fs/netfs/fscache_io.c

index ad572f7..43a651e 100644 (file)
@@ -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);