]> git.hungrycats.org Git - linux/commitdiff
smb: Initialize cfid->tcon before performing network ops
authorPaul Aurich <paul@darkrain42.org>
Wed, 27 Nov 2024 00:50:31 +0000 (18:50 -0600)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 9 Dec 2024 09:32:59 +0000 (10:32 +0100)
[ Upstream commit c353ee4fb119a2582d0e011f66a76a38f5cf984d ]

Avoid leaking a tcon ref when a lease break races with opening the
cached directory. Processing the leak break might take a reference to
the tcon in cached_dir_lease_break() and then fail to release the ref in
cached_dir_offload_close, since cfid->tcon is still NULL.

Fixes: ebe98f1447bb ("cifs: enable caching of directories for which a lease is held")
Signed-off-by: Paul Aurich <paul@darkrain42.org>
Signed-off-by: Steve French <stfrench@microsoft.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
fs/smb/client/cached_dir.c

index 004349a7ab69d2d01aa072b746b8b1a0df064b37..9c0ef4195b5829dad2e8e4d72eed28fe9e458dd1 100644 (file)
@@ -227,6 +227,7 @@ replay_again:
                }
        }
        cfid->dentry = dentry;
+       cfid->tcon = tcon;
 
        /*
         * We do not hold the lock for the open because in case
@@ -298,7 +299,6 @@ replay_again:
                }
                goto oshr_free;
        }
-       cfid->tcon = tcon;
        cfid->is_open = true;
 
        spin_lock(&cfids->cfid_list_lock);