Patch "smb: Initialize cfid->tcon before performing network ops" has been added to the 6.6-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    smb: Initialize cfid->tcon before performing network ops

to the 6.6-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     smb-initialize-cfid-tcon-before-performing-network-o.patch
and it can be found in the queue-6.6 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 9dac0059ae041baa5ee141fb46438e5d2a0d1967
Author: Paul Aurich <paul@xxxxxxxxxxxxxx>
Date:   Tue Nov 26 18:50:31 2024 -0600

    smb: Initialize cfid->tcon before performing network ops
    
    [ 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@xxxxxxxxxxxxxx>
    Signed-off-by: Steve French <stfrench@xxxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/fs/smb/client/cached_dir.c b/fs/smb/client/cached_dir.c
index 004349a7ab69d..9c0ef4195b582 100644
--- a/fs/smb/client/cached_dir.c
+++ b/fs/smb/client/cached_dir.c
@@ -227,6 +227,7 @@ int open_cached_dir(unsigned int xid, struct cifs_tcon *tcon,
 		}
 	}
 	cfid->dentry = dentry;
+	cfid->tcon = tcon;
 
 	/*
 	 * We do not hold the lock for the open because in case
@@ -298,7 +299,6 @@ int open_cached_dir(unsigned int xid, struct cifs_tcon *tcon,
 		}
 		goto oshr_free;
 	}
-	cfid->tcon = tcon;
 	cfid->is_open = true;
 
 	spin_lock(&cfids->cfid_list_lock);




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux