ksmbd: update to 3.4.2
authorMarcos Del Sol Vives <redacted>
Sun, 17 Oct 2021 11:28:51 +0000 (13:28 +0200)
committerRosen Penev <redacted>
Mon, 18 Oct 2021 02:02:59 +0000 (19:02 -0700)
Signed-off-by: Marcos Del Sol Vives <redacted>
kernel/ksmbd/Makefile
kernel/ksmbd/patches/010-no-acl.patch [deleted file]

index 7d8761dc1b0d5b9e17a5656bb1f264e1f9d78bc1..fa978c999799e09af2286a182a400e5a44db96ac 100644 (file)
@@ -1,12 +1,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=ksmbd
-PKG_VERSION:=3.4.1
+PKG_VERSION:=3.4.2
 PKG_RELEASE:=$(AUTORELEASE)
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=https://codeload.github.com/cifsd-team/cifsd/tar.gz/$(PKG_VERSION)?
-PKG_HASH:=73c0e81c74e85a7acd5d5ecde01bfe039a6aeb76353e0e6145d60acd3ab66945
+PKG_HASH:=939fd4829b5aeadce75b51d2b22046f4e41d2b15ee6489b37f481f33c152a6f3
 
 PKG_MAINTAINER:=Andy Walsh <andy.walsh44+github@gmail.com>
 PKG_LICENSE:=GPL-2.0-or-later
diff --git a/kernel/ksmbd/patches/010-no-acl.patch b/kernel/ksmbd/patches/010-no-acl.patch
deleted file mode 100644 (file)
index 1d79dc3..0000000
+++ /dev/null
@@ -1,189 +0,0 @@
-From f408c6c45013c80d62ed4b793ee79d76e4b582e0 Mon Sep 17 00:00:00 2001
-From: Namjae Jeon <namjae.jeon@samsung.com>
-Date: Wed, 11 Aug 2021 15:21:04 +0900
-Subject: [PATCH] ksmbd: remove select FS_POSIX_ACL in Kconfig
-
-ksmbd is forcing to turn on FS_POSIX_ACL in Kconfig to use vfs acl
-functions(posix_acl_alloc, get_acl, set_posix_acl). OpenWRT and other
-platform doesn't use acl and this config is disable by default in
-kernel. This patch use IS_ENABLED() to know acl config is enable and use
-acl function if it is enable.
-
-Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
----
- Kconfig   |  1 -
- smb2pdu.c |  8 +++---
- smbacl.c  | 80 ++++++++++++++++++++++++++++++++-----------------------
- vfs.c     |  9 +++++++
- 4 files changed, 60 insertions(+), 38 deletions(-)
-
---- a/Kconfig
-+++ b/Kconfig
-@@ -19,7 +19,6 @@ config SMB_SERVER
-       select CRYPTO_GCM
-       select ASN1
-       select OID_REGISTRY
--      select FS_POSIX_ACL
-       default n
-       help
-         Choose Y here if you want to allow SMB3 compliant clients
---- a/smb2pdu.c
-+++ b/smb2pdu.c
-@@ -2387,9 +2387,11 @@ static void ksmbd_acls_fattr(struct smb_
-       fattr->cf_mode = inode->i_mode;
-       fattr->cf_dacls = NULL;
--      fattr->cf_acls = get_acl(inode, ACL_TYPE_ACCESS);
--      if (S_ISDIR(inode->i_mode))
--              fattr->cf_dacls = get_acl(inode, ACL_TYPE_DEFAULT);
-+      if (IS_ENABLED(CONFIG_FS_POSIX_ACL)) {
-+              fattr->cf_acls = get_acl(inode, ACL_TYPE_ACCESS);
-+              if (S_ISDIR(inode->i_mode))
-+                      fattr->cf_dacls = get_acl(inode, ACL_TYPE_DEFAULT);
-+      }
- }
- /**
---- a/smbacl.c
-+++ b/smbacl.c
-@@ -533,22 +533,29 @@ static void parse_dacl(struct user_names
-       if (acl_state.users->n || acl_state.groups->n) {
-               acl_state.mask.allow = 0x07;
--              fattr->cf_acls = posix_acl_alloc(acl_state.users->n +
--                      acl_state.groups->n + 4, GFP_KERNEL);
--              if (fattr->cf_acls) {
--                      cf_pace = fattr->cf_acls->a_entries;
--                      posix_state_to_acl(&acl_state, cf_pace);
-+
-+              if (IS_ENABLED(CONFIG_FS_POSIX_ACL)) {
-+                      fattr->cf_acls =
-+                              posix_acl_alloc(acl_state.users->n +
-+                                      acl_state.groups->n + 4, GFP_KERNEL);
-+                      if (fattr->cf_acls) {
-+                              cf_pace = fattr->cf_acls->a_entries;
-+                              posix_state_to_acl(&acl_state, cf_pace);
-+                      }
-               }
-       }
-       if (default_acl_state.users->n || default_acl_state.groups->n) {
-               default_acl_state.mask.allow = 0x07;
--              fattr->cf_dacls =
--                      posix_acl_alloc(default_acl_state.users->n +
--                      default_acl_state.groups->n + 4, GFP_KERNEL);
--              if (fattr->cf_dacls) {
--                      cf_pdace = fattr->cf_dacls->a_entries;
--                      posix_state_to_acl(&default_acl_state, cf_pdace);
-+
-+              if (IS_ENABLED(CONFIG_FS_POSIX_ACL)) {
-+                      fattr->cf_dacls =
-+                              posix_acl_alloc(default_acl_state.users->n +
-+                              default_acl_state.groups->n + 4, GFP_KERNEL);
-+                      if (fattr->cf_dacls) {
-+                              cf_pdace = fattr->cf_dacls->a_entries;
-+                              posix_state_to_acl(&default_acl_state, cf_pdace);
-+                      }
-               }
-       }
-       free_acl_state(&acl_state);
-@@ -1221,31 +1228,36 @@ int smb_check_perm_dacl(struct ksmbd_con
-                       granted = GENERIC_ALL_FLAGS;
-       }
--      posix_acls = get_acl(d_inode(path->dentry), ACL_TYPE_ACCESS);
--      if (posix_acls && !found) {
--              unsigned int id = -1;
--
--              pa_entry = posix_acls->a_entries;
--              for (i = 0; i < posix_acls->a_count; i++, pa_entry++) {
--                      if (pa_entry->e_tag == ACL_USER)
--                              id = from_kuid(user_ns,
--                                             pa_entry->e_uid);
--                      else if (pa_entry->e_tag == ACL_GROUP)
--                              id = from_kgid(user_ns,
--                                             pa_entry->e_gid);
--                      else
--                              continue;
--
--                      if (id == uid) {
--                              mode_to_access_flags(pa_entry->e_perm, 0777, &access_bits);
--                              if (!access_bits)
--                                      access_bits = SET_MINIMUM_RIGHTS;
--                              goto check_access_bits;
-+      if (IS_ENABLED(CONFIG_FS_POSIX_ACL)) {
-+              posix_acls = get_acl(d_inode(path->dentry), ACL_TYPE_ACCESS);
-+              if (posix_acls && !found) {
-+                      unsigned int id = -1;
-+
-+                      pa_entry = posix_acls->a_entries;
-+                      for (i = 0; i < posix_acls->a_count; i++, pa_entry++) {
-+                              if (pa_entry->e_tag == ACL_USER)
-+                                      id = from_kuid(user_ns,
-+                                                     pa_entry->e_uid);
-+                              else if (pa_entry->e_tag == ACL_GROUP)
-+                                      id = from_kgid(user_ns,
-+                                                     pa_entry->e_gid);
-+                              else
-+                                      continue;
-+
-+                              if (id == uid) {
-+                                      mode_to_access_flags(pa_entry->e_perm,
-+                                                           0777,
-+                                                           &access_bits);
-+                                      if (!access_bits)
-+                                              access_bits =
-+                                                      SET_MINIMUM_RIGHTS;
-+                                      goto check_access_bits;
-+                              }
-                       }
-               }
-+              if (posix_acls)
-+                      posix_acl_release(posix_acls);
-       }
--      if (posix_acls)
--              posix_acl_release(posix_acls);
-       if (!found) {
-               if (others_ace) {
-@@ -1308,7 +1320,7 @@ int set_info_sec(struct ksmbd_conn *conn
-       ksmbd_vfs_remove_acl_xattrs(user_ns, path->dentry);
-       /* Update posix acls */
--      if (fattr.cf_dacls) {
-+      if (IS_ENABLED(CONFIG_FS_POSIX_ACL) && fattr.cf_dacls) {
- #if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 12, 0)
-               rc = set_posix_acl(user_ns, inode,
-                                  ACL_TYPE_ACCESS,
---- a/vfs.c
-+++ b/vfs.c
-@@ -1508,6 +1508,9 @@ static struct xattr_smb_acl *ksmbd_vfs_m
-       struct xattr_acl_entry *xa_entry;
-       int i;
-+      if (!IS_ENABLED(CONFIG_FS_POSIX_ACL))
-+              return NULL;
-+
-       posix_acls = get_acl(inode, acl_type);
-       if (!posix_acls)
-               return NULL;
-@@ -2322,6 +2325,9 @@ int ksmbd_vfs_set_init_posix_acl(struct
-       struct posix_acl *acls;
-       int rc;
-+      if (!IS_ENABLED(CONFIG_FS_POSIX_ACL))
-+              return -EOPNOTSUPP;
-+
-       ksmbd_debug(SMB, "Set posix acls\n");
-       rc = init_acl_state(&acl_state, 1);
-       if (rc)
-@@ -2377,6 +2383,9 @@ int ksmbd_vfs_inherit_posix_acl(struct u
-       struct posix_acl_entry *pace;
-       int rc, i;
-+      if (!IS_ENABLED(CONFIG_FS_POSIX_ACL))
-+              return -EOPNOTSUPP;
-+
-       acls = get_acl(parent_inode, ACL_TYPE_DEFAULT);
-       if (!acls)
-               return -ENOENT;
git clone https://git.99rst.org/PROJECT