diff options
| author | Paulo Alcantara <pc@manguebit.org> | 2026-10-11 17:08:52 -0300 |
|---|---|---|
| committer | Paulo Alcantara <pc@manguebit.org> | 2026-10-13 00:52:20 -0300 |
| commit | 7c4bf530aefad8b5b47ffb464daa90b3f0662930 (patch) | |
| tree | 8bbc830db64ef4d7fb02b72c58177afe16d1bf76 /tools/perf/scripts/python/stackcollapse.py | |
| parent | 54a53dd9b6d987d887aa29e2aaf7e89860bb496b (diff) | |
| download | linux-7c4bf530aefad8b5b47ffb464daa90b3f0662930.tar.gz linux-7c4bf530aefad8b5b47ffb464daa90b3f0662930.zip | |
smb: client: avoid breaking the file lease when probing mfsymlinks
cifs_check_mf_symlink() probes any file whose size matches
CIFS_MF_SYMLINK_FILE_SIZE as a possible Minshall+French symlink.
smb2_query_mf_symlink() did so with a fresh leaseless SMB2_open, so the
server saw a second conflicting opener and broke the RWH lease the client
had just been granted on the same file, needlessly churning the cache.
Rework smb2_query_mf_symlink() to issue a single OPEN/READ/CLOSE compound
that either reuses an already open handle via cifs_get_readable_path() or,
failing that, opens with the inode's lease key so the server treats it as
the same lease holder. Thread the inode down to the ->query_mf_symlink()
handlers, rename check_mf_symlink() to cifs_check_mf_symlink(), and
validate the read payload against the response buffer before copying it.
Signed-off-by: Paulo Alcantara <pc@manguebit.org>
Reviewed-by: David Howells <dhowells@redhat.com>
Cc: Namjae Jeon <linkinjeon@kernel.org>
Cc: Ronnie Sahlberg <ronniesahlberg@gmail.com>
Cc: Shyam Prasad N <sprasad@microsoft.com>
Cc: Tom Talpey <tom@talpey.com>
Cc: Bharath SM <bharathsm@microsoft.com>
Diffstat (limited to 'tools/perf/scripts/python/stackcollapse.py')
0 files changed, 0 insertions, 0 deletions
