ksmbd: fix compile on kernel 5.15.52+
authorKevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
Tue, 5 Jul 2022 14:27:52 +0000 (15:27 +0100)
committerKevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
Sat, 9 Jul 2022 05:25:23 +0000 (06:25 +0100)
Backport upstream fix to build on kernel 5.15.52 or later since kernel
devs backported newer functionality to older kernels.

Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
package/kernel/ksmbd/patches/10-fix-build-on-kernel-5.15.52-or-higher.patch [new file with mode: 0644]

diff --git a/package/kernel/ksmbd/patches/10-fix-build-on-kernel-5.15.52-or-higher.patch b/package/kernel/ksmbd/patches/10-fix-build-on-kernel-5.15.52-or-higher.patch
new file mode 100644 (file)
index 0000000..68cf168
--- /dev/null
@@ -0,0 +1,69 @@
+From 98bc509f92cccedd7d51d5ebadc424e2d7f5cbb4 Mon Sep 17 00:00:00 2001
+From: Chukun Pan <amadeus@jmu.edu.cn>
+Date: Tue, 5 Jul 2022 15:20:10 +0800
+Subject: [PATCH] ksmbd: fixes build on kernel 5.15.52 or higher
+
+The 5.15.52 kernel downported two commits "fs: remove unused low-level
+mapping helpers" and "fs: use low-level mapping helpers", which broken
+the compilation[1]. This commit fixed it.
+
+1. https://cdn.kernel.org/pub/linux/kernel/v5.x/ChangeLog-5.15.52
+
+Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn>
+Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
+---
+ smbacl.c | 6 ++++--
+ smbacl.h | 6 ++++--
+ 2 files changed, 8 insertions(+), 4 deletions(-)
+
+diff --git a/smbacl.c b/smbacl.c
+index 275e357..19c682a 100644
+--- a/smbacl.c
++++ b/smbacl.c
+@@ -281,7 +281,8 @@ static int sid_to_id(struct user_namespace *user_ns,
+               uid_t id;
+               id = le32_to_cpu(psid->sub_auth[psid->num_subauth - 1]);
+-#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 17, 0)
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 17, 0) || \
++    (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 15, 52) && LINUX_VERSION_CODE < KERNEL_VERSION(5, 16, 0))
+               uid = mapped_kuid_user(user_ns, &init_user_ns, KUIDT_INIT(id));
+ #else
+               /*
+@@ -304,7 +305,8 @@ static int sid_to_id(struct user_namespace *user_ns,
+               gid_t id;
+               id = le32_to_cpu(psid->sub_auth[psid->num_subauth - 1]);
+-#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 17, 0)
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 17, 0) || \
++    (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 15, 52) && LINUX_VERSION_CODE < KERNEL_VERSION(5, 16, 0))
+               gid = mapped_kgid_user(user_ns, &init_user_ns, KGIDT_INIT(id));
+ #else
+               /*
+diff --git a/smbacl.h b/smbacl.h
+index f2bcdb4..7368bf4 100644
+--- a/smbacl.h
++++ b/smbacl.h
+@@ -221,7 +221,8 @@ static inline uid_t posix_acl_uid_translate(struct user_namespace *mnt_userns,
+       kuid_t kuid;
+       /* If this is an idmapped mount, apply the idmapping. */
+-#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 17, 0)
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 17, 0) || \
++    (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 15, 52) && LINUX_VERSION_CODE < KERNEL_VERSION(5, 16, 0))
+       kuid = mapped_kuid_fs(mnt_userns, &init_user_ns, pace->e_uid);
+ #else
+       kuid = kuid_into_mnt(mnt_userns, pace->e_uid);
+@@ -241,7 +242,8 @@ static inline gid_t posix_acl_gid_translate(struct user_namespace *mnt_userns,
+       kgid_t kgid;
+       /* If this is an idmapped mount, apply the idmapping. */
+-#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 17, 0)
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 17, 0) || \
++    (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 15, 52) && LINUX_VERSION_CODE < KERNEL_VERSION(5, 16, 0))
+       kgid = mapped_kgid_fs(mnt_userns, &init_user_ns, pace->e_gid);
+ #else
+       kgid = kgid_into_mnt(mnt_userns, pace->e_gid);
+-- 
+2.36.1
+