ksmbd: Support kernel 5.10.220

In kernel 5.10.220 many file system related patches were backported. One
of them changed the signature of vfs_rename(). Extend the version check
for 5.10.220.

Link: https://github.com/openwrt/openwrt/pull/15843
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
This commit is contained in:
Hauke Mehrtens 2024-07-04 22:47:31 +02:00
parent 1f69203081
commit b9aeaf778c

View File

@ -0,0 +1,25 @@
vfs_rename() was changed in 5.10.220, see:
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-5.10.y&id=e864d4d834f820c8be01c9d048cdab6051fe3932
--- a/vfs.c
+++ b/vfs.c
@@ -1074,12 +1074,18 @@ static int __ksmbd_vfs_rename(struct ksm
err = -ENOTEMPTY;
if (dst_dent != trap_dent && !d_really_is_positive(dst_dent)) {
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 12, 0)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 12, 0) || \
+ (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 10, 220) && \
+ LINUX_VERSION_CODE < KERNEL_VERSION(5, 11, 0))
struct renamedata rd = {
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 12, 0)
.old_mnt_userns = src_user_ns,
+#endif
.old_dir = d_inode(src_dent_parent),
.old_dentry = src_dent,
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 12, 0)
.new_mnt_userns = dst_user_ns,
+#endif
.new_dir = d_inode(dst_dent_parent),
.new_dentry = dst_dent,
};