Commit f6bd4128 authored by Namjae Jeon's avatar Namjae Jeon Committed by Steve French

ksmbd: override fsids for smb2_query_info()

Sangsoo reported that a DAC denial error occurred when accessing
files through the ksmbd thread. This patch override fsids for
smb2_query_info().
Reported-by: default avatarSangsoo Lee <constant.lee@samsung.com>
Signed-off-by: default avatarNamjae Jeon <linkinjeon@kernel.org>
Signed-off-by: default avatarSteve French <stfrench@microsoft.com>
parent a018c1b6
...@@ -5596,6 +5596,11 @@ int smb2_query_info(struct ksmbd_work *work) ...@@ -5596,6 +5596,11 @@ int smb2_query_info(struct ksmbd_work *work)
ksmbd_debug(SMB, "GOT query info request\n"); ksmbd_debug(SMB, "GOT query info request\n");
if (ksmbd_override_fsids(work)) {
rc = -ENOMEM;
goto err_out;
}
switch (req->InfoType) { switch (req->InfoType) {
case SMB2_O_INFO_FILE: case SMB2_O_INFO_FILE:
ksmbd_debug(SMB, "GOT SMB2_O_INFO_FILE\n"); ksmbd_debug(SMB, "GOT SMB2_O_INFO_FILE\n");
...@@ -5614,6 +5619,7 @@ int smb2_query_info(struct ksmbd_work *work) ...@@ -5614,6 +5619,7 @@ int smb2_query_info(struct ksmbd_work *work)
req->InfoType); req->InfoType);
rc = -EOPNOTSUPP; rc = -EOPNOTSUPP;
} }
ksmbd_revert_fsids(work);
if (!rc) { if (!rc) {
rsp->StructureSize = cpu_to_le16(9); rsp->StructureSize = cpu_to_le16(9);
...@@ -5623,6 +5629,7 @@ int smb2_query_info(struct ksmbd_work *work) ...@@ -5623,6 +5629,7 @@ int smb2_query_info(struct ksmbd_work *work)
le32_to_cpu(rsp->OutputBufferLength)); le32_to_cpu(rsp->OutputBufferLength));
} }
err_out:
if (rc < 0) { if (rc < 0) {
if (rc == -EACCES) if (rc == -EACCES)
rsp->hdr.Status = STATUS_ACCESS_DENIED; rsp->hdr.Status = STATUS_ACCESS_DENIED;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment