diff options
| author | Namjae Jeon <linkinjeon@kernel.org> | 2026-09-23 20:25:49 +0900 |
|---|---|---|
| committer | Paulo Alcantara <pc@manguebit.org> | 2026-09-24 10:50:39 -0300 |
| commit | e66cf1625ec4a3fe68346119f371def713fd0a4d (patch) | |
| tree | ca692ad7e28a1ee307092abeeeaa8cb766a8241d /tools/perf/scripts/python/task-analyzer.py | |
| parent | 031fe051abb3c1f36c2ba6346931fcdb3cddaeae (diff) | |
| download | linux-next-e66cf1625ec4a3fe68346119f371def713fd0a4d.tar.gz linux-next-e66cf1625ec4a3fe68346119f371def713fd0a4d.zip | |
smb: client: use finish_no_open() for non-regular inodes
An O_CREAT open can find an existing symlink or another non-regular
inode. cifs_atomic_open() calls finish_open() on it and attaches a
cifsFileInfo. Symlink inodes have no CIFS release operation, so the
dentry reference held by cifsFileInfo is leaked. FMODE_OPENED also
prevents the VFS from following the symlink.
Track whether cifs_do_create() returned an open server handle. For
non-regular inodes, close the handle if present, remove the pending
open, and call finish_no_open() so the VFS can continue the lookup.
Do not set FMODE_CREATED unless a regular file was opened. For
O_NOFOLLOW with __O_REGULAR, return -ELOOP before the VFS's
-EFTYPE check.
Defer closing a legacy POSIX handle on a non-regular inode until
after inode lookup. This avoids closing it again if lookup fails.
Fixes: d2c127197dfc ("cifs: implement i_op->atomic_open()")
Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
Signed-off-by: Paulo Alcantara <pc@manguebit.org>
Cc: stable@vger.kernel.org
Diffstat (limited to 'tools/perf/scripts/python/task-analyzer.py')
0 files changed, 0 insertions, 0 deletions
