From 9870bbb55a2fc70a3d0945f85c4ff8a4fbb99a8e Mon Sep 17 00:00:00 2001 From: Gael Blivet Date: Tue, 7 Jul 2026 11:55:04 +0200 Subject: ksmbd: return STATUS_OBJECT_NAME_NOT_FOUND for unknown IPC pipe names create_smb2_pipe() maps ksmbd_session_rpc_open() failing with -EINVAL (pipe name not recognized/supported) to STATUS_INVALID_PARAMETER. macOS Time Machine's backupd treats STATUS_INVALID_PARAMETER on a pipe open as a fatal error and aborts the backup immediately, whereas STATUS_OBJECT_NAME_NOT_FOUND is handled gracefully -- the client just treats that particular pipe as unavailable and continues. Assisted-by: Claude:claude-sonnet-5 Signed-off-by: Gael Blivet Signed-off-by: Namjae Jeon --- fs/smb/server/smb2pdu.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/fs/smb/server/smb2pdu.c b/fs/smb/server/smb2pdu.c index f737ba5cd82c..06197275956d 100644 --- a/fs/smb/server/smb2pdu.c +++ b/fs/smb/server/smb2pdu.c @@ -2640,7 +2640,13 @@ static noinline int create_smb2_pipe(struct ksmbd_work *work) out: switch (err) { case -EINVAL: - rsp->hdr.Status = STATUS_INVALID_PARAMETER; + /* + * Unknown pipe name: return STATUS_OBJECT_NAME_NOT_FOUND so + * macOS clients skip it gracefully. STATUS_INVALID_PARAMETER + * causes macOS Time Machine to abort the backup immediately + * (confirmed in ksmbd issue #502 / namjaejeon/ksmbd). + */ + rsp->hdr.Status = STATUS_OBJECT_NAME_NOT_FOUND; break; case -ENOSPC: case -ENOMEM: -- cgit v1.2.3