mirror of
https://github.com/torvalds/linux.git
synced 2026-10-10 20:38:02 +02:00
ksmbd: exempt FSCTL_PIPE_TRANSCEIVE from the generic file-id lookup
smb2_ioctl() rejects FSCTL_PIPE_TRANSCEIVE with STATUS_OBJECT_NAME_NOT_FOUND before fsctl_pipe_transceive() runs. RPC pipe IDs live in sess->rpc_handle_list, a separate namespace from the ksmbd_file table the generic ksmbd_lookup_fd_slow() gate searches, so the lookup always misses. Found while testing generic SMB browsing (Finder's "Connect to Server"): every DCE/RPC bind over a named pipe (SRVSVC, WKSSVC, SAMR, LSARPC) failed right after CREATE. Adding FSCTL_PIPE_TRANSCEIVE to the same no_fileid_ioctl exemption as FSCTL_PIPE_WAIT fixes it, confirmed by testing a build with and without the change. Signed-off-by: Gael Blivet <gael.blivet@gmail.com> Assisted-by: Claude:claude-sonnet-5 Tested-by: ChenXiaoSong <chenxiaosong@kylinos.cn> Reviewed-by: ChenXiaoSong <chenxiaosong@kylinos.cn> Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
This commit is contained in:
parent
29f74f0f2e
commit
a3bcea7c81
|
|
@ -10132,6 +10132,7 @@ int smb2_ioctl(struct ksmbd_work *work)
|
|||
case FSCTL_QUERY_NETWORK_INTERFACE_INFO:
|
||||
case FSCTL_VALIDATE_NEGOTIATE_INFO:
|
||||
case FSCTL_PIPE_WAIT:
|
||||
case FSCTL_PIPE_TRANSCEIVE:
|
||||
no_fileid_ioctl = true;
|
||||
break;
|
||||
default:
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user