aboutsummaryrefslogtreecommitdiff
path: root/fs/ksmbd/ndr.c
diff options
context:
space:
mode:
authorGravatar Christian Brauner <christian.brauner@ubuntu.com> 2021-08-23 17:13:54 +0200
committerGravatar Steve French <stfrench@microsoft.com> 2021-09-03 23:29:45 -0500
commit9467a0ce486c87a8f06ad492afa8b95686bff61f (patch)
tree2ba6eecab7774ec3f9328c1681f5c35e63c9afd5 /fs/ksmbd/ndr.c
parentksmbd: fix translation in sid_to_id() (diff)
downloadlinux-9467a0ce486c87a8f06ad492afa8b95686bff61f.tar.gz
linux-9467a0ce486c87a8f06ad492afa8b95686bff61f.tar.bz2
linux-9467a0ce486c87a8f06ad492afa8b95686bff61f.zip
ndr: fix translation in ndr_encode_posix_acl()
The sid_to_id() helper encodes raw ownership information suitable for s*id handling. This is conceptually equivalent to reporting ownership information via stat to userspace. In this case the consumer is ksmbd instead of a regular user. So when encoding raw ownership information suitable for s*id handling later we need to map the id up according to the user namespace of ksmbd itself taking any idmapped mounts into account. Cc: Steve French <stfrench@microsoft.com> Cc: Christoph Hellwig <hch@infradead.org> Cc: Namjae Jeon <namjae.jeon@samsung.com> Cc: Hyunchul Lee <hyc.lee@gmail.com> Cc: Sergey Senozhatsky <senozhatsky@chromium.org> Cc: linux-cifs@vger.kernel.org Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com> Signed-off-by: Namjae Jeon <linkinjeon@kernel.org> Signed-off-by: Steve French <stfrench@microsoft.com>
Diffstat (limited to 'fs/ksmbd/ndr.c')
-rw-r--r--fs/ksmbd/ndr.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/fs/ksmbd/ndr.c b/fs/ksmbd/ndr.c
index 2243a2c64b37..e6a574fa7709 100644
--- a/fs/ksmbd/ndr.c
+++ b/fs/ksmbd/ndr.c
@@ -259,8 +259,8 @@ int ndr_encode_posix_acl(struct ndr *n,
ndr_write_int32(n, 0);
}
- ndr_write_int64(n, from_kuid(user_ns, inode->i_uid));
- ndr_write_int64(n, from_kgid(user_ns, inode->i_gid));
+ ndr_write_int64(n, from_kuid(&init_user_ns, i_uid_into_mnt(user_ns, inode)));
+ ndr_write_int64(n, from_kgid(&init_user_ns, i_gid_into_mnt(user_ns, inode)));
ndr_write_int32(n, inode->i_mode);
if (acl) {