mirror of
https://github.com/torvalds/linux.git
synced 2026-10-07 19:16:02 +02:00
ksmbd: distinguish unknown RPC pipe names
Unknown RPC pipe names and malformed CREATE parameters both use -EINVAL. Mapping that errno to STATUS_OBJECT_NAME_NOT_FOUND therefore also hides invalid request parameters as a missing pipe. Return -ENOENT when RPC method lookup cannot find a supported pipe and map only that error to STATUS_OBJECT_NAME_NOT_FOUND. Preserve STATUS_INVALID_PARAMETER for -EINVAL returned by request validation. Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
This commit is contained in:
parent
13e82e2cbd
commit
7c5d98b515
|
|
@ -309,10 +309,10 @@ static int __rpc_method(char *rpc_name)
|
|||
return KSMBD_RPC_LSARPC_METHOD_INVOKE;
|
||||
|
||||
if (!strcmp(rpc_name, "\\mdssvc") || !strcmp(rpc_name, "mdssvc"))
|
||||
return 0; /* mdssvc unsupported: quiet, expected macOS probe */
|
||||
return -ENOENT;
|
||||
|
||||
pr_err("Unsupported RPC: %s\n", rpc_name);
|
||||
return 0;
|
||||
return -ENOENT;
|
||||
}
|
||||
|
||||
int ksmbd_session_rpc_open(struct ksmbd_session *sess, char *rpc_name)
|
||||
|
|
@ -322,8 +322,8 @@ int ksmbd_session_rpc_open(struct ksmbd_session *sess, char *rpc_name)
|
|||
int method, id;
|
||||
|
||||
method = __rpc_method(rpc_name);
|
||||
if (!method)
|
||||
return -EINVAL;
|
||||
if (method < 0)
|
||||
return method;
|
||||
|
||||
entry = kzalloc_obj(struct ksmbd_session_rpc, KSMBD_DEFAULT_GFP);
|
||||
if (!entry)
|
||||
|
|
|
|||
|
|
@ -2640,12 +2640,9 @@ static noinline int create_smb2_pipe(struct ksmbd_work *work)
|
|||
out:
|
||||
switch (err) {
|
||||
case -EINVAL:
|
||||
/*
|
||||
* 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_INVALID_PARAMETER;
|
||||
break;
|
||||
case -ENOENT:
|
||||
rsp->hdr.Status = STATUS_OBJECT_NAME_NOT_FOUND;
|
||||
break;
|
||||
case -ENOSPC:
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user