diff --git a/kernel/kernel/files/configs/kernel-x86_64-config b/kernel/kernel/files/configs/kernel-x86_64-config index c735ffa4..f2cc12f5 100644 --- a/kernel/kernel/files/configs/kernel-x86_64-config +++ b/kernel/kernel/files/configs/kernel-x86_64-config @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/x86_64 6.12.89 Kernel Configuration +# Linux/x86_64 6.12.94 Kernel Configuration # CONFIG_CC_VERSION_TEXT="gcc (Pisi Linux) 15.2.0" CONFIG_CC_IS_GCC=y diff --git a/kernel/kernel/files/patches/aufs6/aufs6-base.patch b/kernel/kernel/files/patches/aufs6/aufs6-base.patch index a3b95c56..30e50b8d 100644 --- a/kernel/kernel/files/patches/aufs6/aufs6-base.patch +++ b/kernel/kernel/files/patches/aufs6/aufs6-base.patch @@ -26,16 +26,15 @@ index b878ddc99f94e..8489754030b99 100644 M: Greg Kroah-Hartman R: Dave Ertman diff --git a/drivers/block/loop.c b/drivers/block/loop.c -index 78a7bb28defe4..479480f25a6c0 100644 +index 78a7bb28defe4..afea5819d150d 100644 --- a/drivers/block/loop.c +++ b/drivers/block/loop.c -@@ -661,6 +661,26 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev, +@@ -661,6 +661,31 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev, goto done; } +/* + * for AUFS -+ * no get/put for file. + */ +/* Just to make the compiler silence, declare it */ +struct file *loop_backing_file(struct super_block *sb); @@ -43,11 +42,17 @@ index 78a7bb28defe4..479480f25a6c0 100644 +{ + struct file *ret; + struct loop_device *l; ++ unsigned long flags; + + ret = NULL; + if (MAJOR(sb->s_dev) == LOOP_MAJOR) { + l = sb->s_bdev->bd_disk->private_data; ++ /* slow? but it's safe */ ++ spin_lock_irqsave(&l->lo_lock, flags); + ret = l->lo_backing_file; ++ if (ret) ++ get_file(ret); /* callers have to call fput() */ ++ spin_unlock_irqrestore(&l->lo_lock, flags); + } + return ret; +} diff --git a/kernel/kernel/files/patches/aufs6/aufs6-kbuild.patch b/kernel/kernel/files/patches/aufs6/aufs6-kbuild.patch index 70c96059..54b70370 100644 --- a/kernel/kernel/files/patches/aufs6/aufs6-kbuild.patch +++ b/kernel/kernel/files/patches/aufs6/aufs6-kbuild.patch @@ -14,11 +14,11 @@ index aae170fc27952..d5bb584649f50 100644 endif # MISC_FILESYSTEMS diff --git a/fs/Makefile b/fs/Makefile -index 61679fd587b7e..b2539712b80d0 100644 +index 61679fd587b7e..62a96f5053579 100644 --- a/fs/Makefile +++ b/fs/Makefile @@ -130,3 +130,4 @@ obj-$(CONFIG_EROFS_FS) += erofs/ obj-$(CONFIG_VBOXSF_FS) += vboxsf/ obj-$(CONFIG_ZONEFS_FS) += zonefs/ obj-$(CONFIG_BPF_LSM) += bpf_fs_kfuncs.o -+obj-$(CONFIG_AUFS_FS) += aufs/ ++obj-$(CONFIG_AUFS_FS) += aufs/ diff --git a/kernel/kernel/files/patches/aufs6/aufs6-loopback.patch b/kernel/kernel/files/patches/aufs6/aufs6-loopback.patch index 0c0674f4..b99f2399 100644 --- a/kernel/kernel/files/patches/aufs6/aufs6-loopback.patch +++ b/kernel/kernel/files/patches/aufs6/aufs6-loopback.patch @@ -2,7 +2,7 @@ SPDX-License-Identifier: GPL-2.0 aufs6.12 loopback patch diff --git a/drivers/block/loop.c b/drivers/block/loop.c -index 479480f25a6c0..ba3477c30e294 100644 +index afea5819d150d..965a004a13a8d 100644 --- a/drivers/block/loop.c +++ b/drivers/block/loop.c @@ -54,7 +54,7 @@ struct loop_device { @@ -84,7 +84,7 @@ index 479480f25a6c0..ba3477c30e294 100644 goto done; } -@@ -1039,6 +1062,7 @@ static int loop_configure(struct loop_device *lo, blk_mode_t mode, +@@ -1044,6 +1067,7 @@ static int loop_configure(struct loop_device *lo, blk_mode_t mode, const struct loop_config *config) { struct file *file = fget(config->fd); @@ -92,7 +92,7 @@ index 479480f25a6c0..ba3477c30e294 100644 struct address_space *mapping; int error; loff_t size; -@@ -1052,6 +1076,13 @@ static int loop_configure(struct loop_device *lo, blk_mode_t mode, +@@ -1057,6 +1081,13 @@ static int loop_configure(struct loop_device *lo, blk_mode_t mode, /* This is safe, since we have a reference from open(). */ __module_get(THIS_MODULE); @@ -106,7 +106,7 @@ index 479480f25a6c0..ba3477c30e294 100644 /* * If we don't hold exclusive handle for the device, upgrade to it * here to avoid changing device under exclusive owner. -@@ -1108,6 +1139,7 @@ static int loop_configure(struct loop_device *lo, blk_mode_t mode, +@@ -1113,6 +1144,7 @@ static int loop_configure(struct loop_device *lo, blk_mode_t mode, lo->use_dio = lo->lo_flags & LO_FLAGS_DIRECT_IO; lo->lo_device = bdev; lo->lo_backing_file = file; @@ -114,7 +114,7 @@ index 479480f25a6c0..ba3477c30e294 100644 lo->old_gfp_mask = mapping_gfp_mask(mapping); mapping_set_gfp_mask(mapping, lo->old_gfp_mask & ~(__GFP_IO|__GFP_FS)); -@@ -1150,6 +1182,8 @@ static int loop_configure(struct loop_device *lo, blk_mode_t mode, +@@ -1155,6 +1187,8 @@ static int loop_configure(struct loop_device *lo, blk_mode_t mode, bd_abort_claiming(bdev, loop_configure); out_putf: fput(file); @@ -123,7 +123,7 @@ index 479480f25a6c0..ba3477c30e294 100644 /* This is safe: open() is still holding a reference. */ module_put(THIS_MODULE); return error; -@@ -1159,11 +1193,13 @@ static void __loop_clr_fd(struct loop_device *lo) +@@ -1164,11 +1198,13 @@ static void __loop_clr_fd(struct loop_device *lo) { struct queue_limits lim; struct file *filp; @@ -137,7 +137,7 @@ index 479480f25a6c0..ba3477c30e294 100644 spin_unlock_irq(&lo->lo_lock); lo->lo_device = NULL; -@@ -1225,6 +1261,8 @@ static void __loop_clr_fd(struct loop_device *lo) +@@ -1230,6 +1266,8 @@ static void __loop_clr_fd(struct loop_device *lo) * fput can take open_mutex which is usually taken before lo_mutex. */ fput(filp); @@ -160,17 +160,17 @@ index cb5781e56e1e1..93e7a6a369d0a 100644 if (file->f_mapping != h_file->f_mapping) { file->f_mapping = h_file->f_mapping; diff --git a/fs/aufs/loop.c b/fs/aufs/loop.c -index 69dea4cda00c0..92a74affb2208 100644 +index dc43d4074f0fb..c6c821c302b45 100644 --- a/fs/aufs/loop.c +++ b/fs/aufs/loop.c -@@ -133,3 +133,19 @@ void au_loopback_fin(void) +@@ -142,3 +142,19 @@ void au_loopback_fin(void) symbol_put(loop_backing_file); au_kfree_try_rcu(au_warn_loopback_array); } + +/* ---------------------------------------------------------------------- */ + -+/* support the loopback block device insude aufs */ ++/* support the loopback block device inside aufs */ + +struct file *aufs_real_loop(struct file *file) +{ diff --git a/kernel/kernel/files/patches/aufs6/aufs6-mmap.patch b/kernel/kernel/files/patches/aufs6/aufs6-mmap.patch index 11fc0b35..a36aa7f4 100644 --- a/kernel/kernel/files/patches/aufs6/aufs6-mmap.patch +++ b/kernel/kernel/files/patches/aufs6/aufs6-mmap.patch @@ -2,7 +2,7 @@ SPDX-License-Identifier: GPL-2.0 aufs6.12 mmap patch diff --git a/fs/Makefile b/fs/Makefile -index b2539712b80d0..4ba97a539035c 100644 +index 62a96f5053579..4544ef689c75e 100644 --- a/fs/Makefile +++ b/fs/Makefile @@ -17,6 +17,12 @@ obj-y := open.o read_write.o file_table.o super.o \ @@ -11,7 +11,7 @@ index b2539712b80d0..4ba97a539035c 100644 +# don't move au_mf.o to the bottom of this file, otherwise it will +# conflict with aufs-kbuild.patch. -+ifeq (${CONFIG_AUFS_FS},m) ++ifeq ($(CONFIG_AUFS_FS),m) +obj-y += au_mf.o +endif + @@ -20,10 +20,10 @@ index b2539712b80d0..4ba97a539035c 100644 obj-$(CONFIG_LEGACY_DIRECT_IO) += direct-io.o diff --git a/fs/au_mf.c b/fs/au_mf.c new file mode 100644 -index 0000000000000..aaf6a1f91f719 +index 0000000000000..3524df3b21ccd --- /dev/null +++ b/fs/au_mf.c -@@ -0,0 +1,60 @@ +@@ -0,0 +1,59 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2025 Junjiro R. Okajima @@ -47,9 +47,8 @@ index 0000000000000..aaf6a1f91f719 + +const struct path *au_file_user_path(struct file *f) +{ -+ const struct path *path, -+ *(*func)(struct file *f), -+ *au_do_file_user_path(struct file *f); ++ const struct path *path, *(*func)(struct file *f); ++ const struct path *au_do_file_user_path(struct file *f); + + path = NULL; + func = symbol_get(au_do_file_user_path); @@ -85,18 +84,20 @@ index 0000000000000..aaf6a1f91f719 +} +EXPORT_SYMBOL_GPL(au_file_user_inode); diff --git a/fs/proc/base.c b/fs/proc/base.c -index b31283d81c52e..d738243b88746 100644 +index b31283d81c52e..c32417053ce97 100644 --- a/fs/proc/base.c +++ b/fs/proc/base.c -@@ -1784,7 +1784,7 @@ static int proc_exe_link(struct dentry *dentry, struct path *exe_path) +@@ -1784,8 +1784,8 @@ static int proc_exe_link(struct dentry *dentry, struct path *exe_path) exe_file = get_task_exe_file(task); put_task_struct(task); if (exe_file) { - *exe_path = exe_file->f_path; +- path_get(&exe_file->f_path); + *exe_path = *file_user_path(exe_file); - path_get(&exe_file->f_path); ++ path_get(exe_path); fput(exe_file); return 0; + } else diff --git a/fs/proc/nommu.c b/fs/proc/nommu.c index c6e7ebc637562..12c340dcdec3d 100644 --- a/fs/proc/nommu.c diff --git a/kernel/kernel/files/patches/aufs6/aufs6.12-20260223.patch b/kernel/kernel/files/patches/aufs6/aufs6.12-20260525.patch similarity index 99% rename from kernel/kernel/files/patches/aufs6/aufs6.12-20260223.patch rename to kernel/kernel/files/patches/aufs6/aufs6.12-20260525.patch index dbcb9cbb..78fc8004 100644 --- a/kernel/kernel/files/patches/aufs6/aufs6.12-20260223.patch +++ b/kernel/kernel/files/patches/aufs6/aufs6.12-20260525.patch @@ -1,6 +1,6 @@ diff -Naur null/Documentation/ABI/testing/debugfs-aufs linux-6.12.30/Documentation/ABI/testing/debugfs-aufs --- /dev/null -+++ linux-6.12.30/Documentation/ABI/testing/debugfs-aufs 2026-03-25 14:52:47.431348885 +0300 ++++ linux-6.12.30/Documentation/ABI/testing/debugfs-aufs 2026-06-20 18:11:10.316505256 +0300 @@ -0,0 +1,55 @@ +What: /debug/aufs/si_/ +Date: March 2009 @@ -59,7 +59,7 @@ diff -Naur null/Documentation/ABI/testing/debugfs-aufs linux-6.12.30/Documentati + will be empty. About XINO files, see the aufs manual. diff -Naur null/Documentation/ABI/testing/sysfs-aufs linux-6.12.30/Documentation/ABI/testing/sysfs-aufs --- /dev/null -+++ linux-6.12.30/Documentation/ABI/testing/sysfs-aufs 2026-03-25 14:52:47.431530892 +0300 ++++ linux-6.12.30/Documentation/ABI/testing/sysfs-aufs 2026-06-20 18:11:10.316505256 +0300 @@ -0,0 +1,31 @@ +What: /sys/fs/aufs/si_/ +Date: March 2009 @@ -94,7 +94,7 @@ diff -Naur null/Documentation/ABI/testing/sysfs-aufs linux-6.12.30/Documentation + will be empty. About XINO files, see the aufs manual. diff -Naur null/Documentation/filesystems/aufs/design/01intro.txt linux-6.12.30/Documentation/filesystems/aufs/design/01intro.txt --- /dev/null -+++ linux-6.12.30/Documentation/filesystems/aufs/design/01intro.txt 2026-03-25 14:52:47.431933736 +0300 ++++ linux-6.12.30/Documentation/filesystems/aufs/design/01intro.txt 2026-06-20 18:11:10.317505256 +0300 @@ -0,0 +1,171 @@ + +# Copyright (C) 2005-2025 Junjiro R. Okajima @@ -269,7 +269,7 @@ diff -Naur null/Documentation/filesystems/aufs/design/01intro.txt linux-6.12.30/ +about it. But currently I have implemented it in kernel space. diff -Naur null/Documentation/filesystems/aufs/design/02struct.txt linux-6.12.30/Documentation/filesystems/aufs/design/02struct.txt --- /dev/null -+++ linux-6.12.30/Documentation/filesystems/aufs/design/02struct.txt 2026-03-25 14:52:47.432142492 +0300 ++++ linux-6.12.30/Documentation/filesystems/aufs/design/02struct.txt 2026-06-20 18:11:10.317505256 +0300 @@ -0,0 +1,258 @@ + +# Copyright (C) 2005-2025 Junjiro R. Okajima @@ -531,7 +531,7 @@ diff -Naur null/Documentation/filesystems/aufs/design/02struct.txt linux-6.12.30 +For this purpose, use "aumvdown" command in aufs-util.git. diff -Naur null/Documentation/filesystems/aufs/design/03atomic_open.txt linux-6.12.30/Documentation/filesystems/aufs/design/03atomic_open.txt --- /dev/null -+++ linux-6.12.30/Documentation/filesystems/aufs/design/03atomic_open.txt 2026-03-25 14:52:47.432142492 +0300 ++++ linux-6.12.30/Documentation/filesystems/aufs/design/03atomic_open.txt 2026-06-20 18:11:10.317505256 +0300 @@ -0,0 +1,85 @@ + +# Copyright (C) 2015-2025 Junjiro R. Okajima @@ -620,7 +620,7 @@ diff -Naur null/Documentation/filesystems/aufs/design/03atomic_open.txt linux-6. + be implemented in aufs, but not all I am afraid. diff -Naur null/Documentation/filesystems/aufs/design/03lookup.txt linux-6.12.30/Documentation/filesystems/aufs/design/03lookup.txt --- /dev/null -+++ linux-6.12.30/Documentation/filesystems/aufs/design/03lookup.txt 2026-03-25 14:52:47.432142492 +0300 ++++ linux-6.12.30/Documentation/filesystems/aufs/design/03lookup.txt 2026-06-20 18:11:10.317505256 +0300 @@ -0,0 +1,113 @@ + +# Copyright (C) 2005-2025 Junjiro R. Okajima @@ -737,7 +737,7 @@ diff -Naur null/Documentation/filesystems/aufs/design/03lookup.txt linux-6.12.30 + by over-mounting something (or another method). diff -Naur null/Documentation/filesystems/aufs/design/04branch.txt linux-6.12.30/Documentation/filesystems/aufs/design/04branch.txt --- /dev/null -+++ linux-6.12.30/Documentation/filesystems/aufs/design/04branch.txt 2026-03-25 14:52:47.432142492 +0300 ++++ linux-6.12.30/Documentation/filesystems/aufs/design/04branch.txt 2026-06-20 18:11:10.317505256 +0300 @@ -0,0 +1,74 @@ + +# Copyright (C) 2005-2025 Junjiro R. Okajima @@ -815,7 +815,7 @@ diff -Naur null/Documentation/filesystems/aufs/design/04branch.txt linux-6.12.30 + same named entry on the upper branch. diff -Naur null/Documentation/filesystems/aufs/design/05wbr_policy.txt linux-6.12.30/Documentation/filesystems/aufs/design/05wbr_policy.txt --- /dev/null -+++ linux-6.12.30/Documentation/filesystems/aufs/design/05wbr_policy.txt 2026-03-25 14:52:47.432142492 +0300 ++++ linux-6.12.30/Documentation/filesystems/aufs/design/05wbr_policy.txt 2026-06-20 18:11:10.317505256 +0300 @@ -0,0 +1,64 @@ + +# Copyright (C) 2005-2025 Junjiro R. Okajima @@ -883,7 +883,7 @@ diff -Naur null/Documentation/filesystems/aufs/design/05wbr_policy.txt linux-6.1 + copyup policy. diff -Naur null/Documentation/filesystems/aufs/design/06dirren.dot linux-6.12.30/Documentation/filesystems/aufs/design/06dirren.dot --- /dev/null -+++ linux-6.12.30/Documentation/filesystems/aufs/design/06dirren.dot 2026-03-25 14:52:47.432142492 +0300 ++++ linux-6.12.30/Documentation/filesystems/aufs/design/06dirren.dot 2026-06-20 18:11:10.317505256 +0300 @@ -0,0 +1,44 @@ + +// to view this graph, run dot(1) command in GRAPHVIZ. @@ -931,7 +931,7 @@ diff -Naur null/Documentation/filesystems/aufs/design/06dirren.dot linux-6.12.30 +} diff -Naur null/Documentation/filesystems/aufs/design/06dirren.txt linux-6.12.30/Documentation/filesystems/aufs/design/06dirren.txt --- /dev/null -+++ linux-6.12.30/Documentation/filesystems/aufs/design/06dirren.txt 2026-03-25 14:52:47.432142492 +0300 ++++ linux-6.12.30/Documentation/filesystems/aufs/design/06dirren.txt 2026-06-20 18:11:10.318505256 +0300 @@ -0,0 +1,102 @@ + +# Copyright (C) 2017-2025 Junjiro R. Okajima @@ -1037,7 +1037,7 @@ diff -Naur null/Documentation/filesystems/aufs/design/06dirren.txt linux-6.12.30 +equivalen to udba=reval case. diff -Naur null/Documentation/filesystems/aufs/design/06fhsm.txt linux-6.12.30/Documentation/filesystems/aufs/design/06fhsm.txt --- /dev/null -+++ linux-6.12.30/Documentation/filesystems/aufs/design/06fhsm.txt 2026-03-25 14:52:47.432142492 +0300 ++++ linux-6.12.30/Documentation/filesystems/aufs/design/06fhsm.txt 2026-06-20 18:11:10.318505256 +0300 @@ -0,0 +1,118 @@ + +# Copyright (C) 2011-2025 Junjiro R. Okajima @@ -1159,7 +1159,7 @@ diff -Naur null/Documentation/filesystems/aufs/design/06fhsm.txt linux-6.12.30/D +should restore the original file state after an error happens. diff -Naur null/Documentation/filesystems/aufs/design/06mmap.txt linux-6.12.30/Documentation/filesystems/aufs/design/06mmap.txt --- /dev/null -+++ linux-6.12.30/Documentation/filesystems/aufs/design/06mmap.txt 2026-03-25 14:52:47.432142492 +0300 ++++ linux-6.12.30/Documentation/filesystems/aufs/design/06mmap.txt 2026-06-20 18:11:10.318505256 +0300 @@ -0,0 +1,40 @@ + +# Copyright (C) 2005-2025 Junjiro R. Okajima @@ -1203,7 +1203,7 @@ diff -Naur null/Documentation/filesystems/aufs/design/06mmap.txt linux-6.12.30/D +will be much smaller than the approach aufs used to take. diff -Naur null/Documentation/filesystems/aufs/design/06xattr.txt linux-6.12.30/Documentation/filesystems/aufs/design/06xattr.txt --- /dev/null -+++ linux-6.12.30/Documentation/filesystems/aufs/design/06xattr.txt 2026-03-25 14:52:47.432142492 +0300 ++++ linux-6.12.30/Documentation/filesystems/aufs/design/06xattr.txt 2026-06-20 18:11:10.318505256 +0300 @@ -0,0 +1,94 @@ + +# Copyright (C) 2014-2025 Junjiro R. Okajima @@ -1301,7 +1301,7 @@ diff -Naur null/Documentation/filesystems/aufs/design/06xattr.txt linux-6.12.30/ +now, aufs implements the branch attributes to ignore the error. diff -Naur null/Documentation/filesystems/aufs/design/07export.txt linux-6.12.30/Documentation/filesystems/aufs/design/07export.txt --- /dev/null -+++ linux-6.12.30/Documentation/filesystems/aufs/design/07export.txt 2026-03-25 14:52:47.432142492 +0300 ++++ linux-6.12.30/Documentation/filesystems/aufs/design/07export.txt 2026-06-20 18:11:10.318505256 +0300 @@ -0,0 +1,58 @@ + +# Copyright (C) 2005-2025 Junjiro R. Okajima @@ -1363,7 +1363,7 @@ diff -Naur null/Documentation/filesystems/aufs/design/07export.txt linux-6.12.30 + lookup_one_len(), vfs_getattr(), encode_fh() and others. diff -Naur null/Documentation/filesystems/aufs/design/08shwh.txt linux-6.12.30/Documentation/filesystems/aufs/design/08shwh.txt --- /dev/null -+++ linux-6.12.30/Documentation/filesystems/aufs/design/08shwh.txt 2026-03-25 14:52:47.432142492 +0300 ++++ linux-6.12.30/Documentation/filesystems/aufs/design/08shwh.txt 2026-06-20 18:11:10.318505256 +0300 @@ -0,0 +1,52 @@ + +# Copyright (C) 2005-2025 Junjiro R. Okajima @@ -1419,7 +1419,7 @@ diff -Naur null/Documentation/filesystems/aufs/design/08shwh.txt linux-6.12.30/D +initramfs will use it to replace the old one at the next boot. diff -Naur null/Documentation/filesystems/aufs/design/10dynop.txt linux-6.12.30/Documentation/filesystems/aufs/design/10dynop.txt --- /dev/null -+++ linux-6.12.30/Documentation/filesystems/aufs/design/10dynop.txt 2026-03-25 14:52:47.432142492 +0300 ++++ linux-6.12.30/Documentation/filesystems/aufs/design/10dynop.txt 2026-06-20 18:11:10.318505256 +0300 @@ -0,0 +1,47 @@ + +# Copyright (C) 2010-2025 Junjiro R. Okajima @@ -1470,7 +1470,7 @@ diff -Naur null/Documentation/filesystems/aufs/design/10dynop.txt linux-6.12.30/ +regular files only. diff -Naur null/Documentation/filesystems/aufs/README linux-6.12.30/Documentation/filesystems/aufs/README --- /dev/null -+++ linux-6.12.30/Documentation/filesystems/aufs/README 2026-03-25 14:52:47.431700815 +0300 ++++ linux-6.12.30/Documentation/filesystems/aufs/README 2026-06-20 18:11:10.317505256 +0300 @@ -0,0 +1,409 @@ + +Aufs6 -- advanced multi layered unification filesystem version 6.x @@ -1883,7 +1883,7 @@ diff -Naur null/Documentation/filesystems/aufs/README linux-6.12.30/Documentatio +# End: ; diff -Naur null/fs/aufs/aufs.h linux-6.12.30/fs/aufs/aufs.h --- /dev/null -+++ linux-6.12.30/fs/aufs/aufs.h 2026-03-25 14:52:47.434610124 +0300 ++++ linux-6.12.30/fs/aufs/aufs.h 2026-06-20 18:11:10.320505256 +0300 @@ -0,0 +1,62 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* @@ -1949,7 +1949,7 @@ diff -Naur null/fs/aufs/aufs.h linux-6.12.30/fs/aufs/aufs.h +#endif /* __AUFS_H__ */ diff -Naur null/fs/aufs/branch.c linux-6.12.30/fs/aufs/branch.c --- /dev/null -+++ linux-6.12.30/fs/aufs/branch.c 2026-03-25 14:52:47.434610124 +0300 ++++ linux-6.12.30/fs/aufs/branch.c 2026-06-20 18:11:10.320505256 +0300 @@ -0,0 +1,1427 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -3380,7 +3380,7 @@ diff -Naur null/fs/aufs/branch.c linux-6.12.30/fs/aufs/branch.c +} diff -Naur null/fs/aufs/branch.h linux-6.12.30/fs/aufs/branch.h --- /dev/null -+++ linux-6.12.30/fs/aufs/branch.h 2026-03-25 14:52:47.434610124 +0300 ++++ linux-6.12.30/fs/aufs/branch.h 2026-06-20 18:11:10.320505256 +0300 @@ -0,0 +1,375 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* @@ -3759,7 +3759,7 @@ diff -Naur null/fs/aufs/branch.h linux-6.12.30/fs/aufs/branch.h +#endif /* __AUFS_BRANCH_H__ */ diff -Naur null/fs/aufs/conf.mk linux-6.12.30/fs/aufs/conf.mk --- /dev/null -+++ linux-6.12.30/fs/aufs/conf.mk 2026-03-25 14:52:47.434610124 +0300 ++++ linux-6.12.30/fs/aufs/conf.mk 2026-06-20 18:11:10.320505256 +0300 @@ -0,0 +1,40 @@ +# SPDX-License-Identifier: GPL-2.0 + @@ -3803,7 +3803,7 @@ diff -Naur null/fs/aufs/conf.mk linux-6.12.30/fs/aufs/conf.mk +-include ${srctree}/${src}/conf_priv.mk diff -Naur null/fs/aufs/cpup.c linux-6.12.30/fs/aufs/cpup.c --- /dev/null -+++ linux-6.12.30/fs/aufs/cpup.c 2026-03-25 14:52:47.434610124 +0300 ++++ linux-6.12.30/fs/aufs/cpup.c 2026-06-20 18:11:10.320505256 +0300 @@ -0,0 +1,1446 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -5253,7 +5253,7 @@ diff -Naur null/fs/aufs/cpup.c linux-6.12.30/fs/aufs/cpup.c +} diff -Naur null/fs/aufs/cpup.h linux-6.12.30/fs/aufs/cpup.h --- /dev/null -+++ linux-6.12.30/fs/aufs/cpup.h 2026-03-25 14:52:47.434610124 +0300 ++++ linux-6.12.30/fs/aufs/cpup.h 2026-06-20 18:11:10.320505256 +0300 @@ -0,0 +1,101 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* @@ -5358,7 +5358,7 @@ diff -Naur null/fs/aufs/cpup.h linux-6.12.30/fs/aufs/cpup.h +#endif /* __AUFS_CPUP_H__ */ diff -Naur null/fs/aufs/dbgaufs.c linux-6.12.30/fs/aufs/dbgaufs.c --- /dev/null -+++ linux-6.12.30/fs/aufs/dbgaufs.c 2026-03-25 14:52:47.434610124 +0300 ++++ linux-6.12.30/fs/aufs/dbgaufs.c 2026-06-20 18:11:10.321505257 +0300 @@ -0,0 +1,526 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -5888,7 +5888,7 @@ diff -Naur null/fs/aufs/dbgaufs.c linux-6.12.30/fs/aufs/dbgaufs.c +} diff -Naur null/fs/aufs/dbgaufs.h linux-6.12.30/fs/aufs/dbgaufs.h --- /dev/null -+++ linux-6.12.30/fs/aufs/dbgaufs.h 2026-03-25 14:52:47.434610124 +0300 ++++ linux-6.12.30/fs/aufs/dbgaufs.h 2026-06-20 18:11:10.321505257 +0300 @@ -0,0 +1,53 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* @@ -5945,7 +5945,7 @@ diff -Naur null/fs/aufs/dbgaufs.h linux-6.12.30/fs/aufs/dbgaufs.h +#endif /* __DBGAUFS_H__ */ diff -Naur null/fs/aufs/dcsub.c linux-6.12.30/fs/aufs/dcsub.c --- /dev/null -+++ linux-6.12.30/fs/aufs/dcsub.c 2026-03-25 14:52:47.434610124 +0300 ++++ linux-6.12.30/fs/aufs/dcsub.c 2026-06-20 18:11:10.321505257 +0300 @@ -0,0 +1,225 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -6174,7 +6174,7 @@ diff -Naur null/fs/aufs/dcsub.c linux-6.12.30/fs/aufs/dcsub.c +} diff -Naur null/fs/aufs/dcsub.h linux-6.12.30/fs/aufs/dcsub.h --- /dev/null -+++ linux-6.12.30/fs/aufs/dcsub.h 2026-03-25 14:52:47.435035737 +0300 ++++ linux-6.12.30/fs/aufs/dcsub.h 2026-06-20 18:11:10.321505257 +0300 @@ -0,0 +1,139 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* @@ -6317,7 +6317,7 @@ diff -Naur null/fs/aufs/dcsub.h linux-6.12.30/fs/aufs/dcsub.h +#endif /* __AUFS_DCSUB_H__ */ diff -Naur null/fs/aufs/debug.c linux-6.12.30/fs/aufs/debug.c --- /dev/null -+++ linux-6.12.30/fs/aufs/debug.c 2026-03-25 14:52:47.435035737 +0300 ++++ linux-6.12.30/fs/aufs/debug.c 2026-06-20 18:11:10.321505257 +0300 @@ -0,0 +1,448 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -6769,7 +6769,7 @@ diff -Naur null/fs/aufs/debug.c linux-6.12.30/fs/aufs/debug.c +} diff -Naur null/fs/aufs/debug.h linux-6.12.30/fs/aufs/debug.h --- /dev/null -+++ linux-6.12.30/fs/aufs/debug.h 2026-03-25 14:52:47.435035737 +0300 ++++ linux-6.12.30/fs/aufs/debug.h 2026-06-20 18:11:10.321505257 +0300 @@ -0,0 +1,226 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* @@ -6999,7 +6999,7 @@ diff -Naur null/fs/aufs/debug.h linux-6.12.30/fs/aufs/debug.h +#endif /* __AUFS_DEBUG_H__ */ diff -Naur null/fs/aufs/dentry.c linux-6.12.30/fs/aufs/dentry.c --- /dev/null -+++ linux-6.12.30/fs/aufs/dentry.c 2026-03-25 14:52:47.435035737 +0300 ++++ linux-6.12.30/fs/aufs/dentry.c 2026-06-20 18:11:10.321505257 +0300 @@ -0,0 +1,1178 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -8181,7 +8181,7 @@ diff -Naur null/fs/aufs/dentry.c linux-6.12.30/fs/aufs/dentry.c +}; diff -Naur null/fs/aufs/dentry.h linux-6.12.30/fs/aufs/dentry.h --- /dev/null -+++ linux-6.12.30/fs/aufs/dentry.h 2026-03-25 14:52:47.435035737 +0300 ++++ linux-6.12.30/fs/aufs/dentry.h 2026-06-20 18:11:10.321505257 +0300 @@ -0,0 +1,270 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* @@ -8455,7 +8455,7 @@ diff -Naur null/fs/aufs/dentry.h linux-6.12.30/fs/aufs/dentry.h +#endif /* __AUFS_DENTRY_H__ */ diff -Naur null/fs/aufs/dinfo.c linux-6.12.30/fs/aufs/dinfo.c --- /dev/null -+++ linux-6.12.30/fs/aufs/dinfo.c 2026-03-25 14:52:47.435035737 +0300 ++++ linux-6.12.30/fs/aufs/dinfo.c 2026-06-20 18:11:10.322505257 +0300 @@ -0,0 +1,555 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -9014,7 +9014,7 @@ diff -Naur null/fs/aufs/dinfo.c linux-6.12.30/fs/aufs/dinfo.c +} diff -Naur null/fs/aufs/dir.c linux-6.12.30/fs/aufs/dir.c --- /dev/null -+++ linux-6.12.30/fs/aufs/dir.c 2026-03-25 14:52:47.435035737 +0300 ++++ linux-6.12.30/fs/aufs/dir.c 2026-06-20 18:11:10.322505257 +0300 @@ -0,0 +1,765 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -9783,7 +9783,7 @@ diff -Naur null/fs/aufs/dir.c linux-6.12.30/fs/aufs/dir.c +}; diff -Naur null/fs/aufs/dir.h linux-6.12.30/fs/aufs/dir.h --- /dev/null -+++ linux-6.12.30/fs/aufs/dir.h 2026-03-25 14:52:47.436035724 +0300 ++++ linux-6.12.30/fs/aufs/dir.h 2026-06-20 18:11:10.322505257 +0300 @@ -0,0 +1,134 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* @@ -9921,7 +9921,7 @@ diff -Naur null/fs/aufs/dir.h linux-6.12.30/fs/aufs/dir.h +#endif /* __AUFS_DIR_H__ */ diff -Naur null/fs/aufs/dirren.c linux-6.12.30/fs/aufs/dirren.c --- /dev/null -+++ linux-6.12.30/fs/aufs/dirren.c 2026-03-25 14:52:47.436035724 +0300 ++++ linux-6.12.30/fs/aufs/dirren.c 2026-06-20 18:11:10.322505257 +0300 @@ -0,0 +1,1308 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -11233,7 +11233,7 @@ diff -Naur null/fs/aufs/dirren.c linux-6.12.30/fs/aufs/dirren.c +} diff -Naur null/fs/aufs/dirren.h linux-6.12.30/fs/aufs/dirren.h --- /dev/null -+++ linux-6.12.30/fs/aufs/dirren.h 2026-03-25 14:52:47.436035724 +0300 ++++ linux-6.12.30/fs/aufs/dirren.h 2026-06-20 18:11:10.322505257 +0300 @@ -0,0 +1,140 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* @@ -11377,7 +11377,7 @@ diff -Naur null/fs/aufs/dirren.h linux-6.12.30/fs/aufs/dirren.h +#endif /* __AUFS_DIRREN_H__ */ diff -Naur null/fs/aufs/dynop.c linux-6.12.30/fs/aufs/dynop.c --- /dev/null -+++ linux-6.12.30/fs/aufs/dynop.c 2026-03-25 14:52:47.436035724 +0300 ++++ linux-6.12.30/fs/aufs/dynop.c 2026-06-20 18:11:10.322505257 +0300 @@ -0,0 +1,365 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -11746,7 +11746,7 @@ diff -Naur null/fs/aufs/dynop.c linux-6.12.30/fs/aufs/dynop.c +} diff -Naur null/fs/aufs/dynop.h linux-6.12.30/fs/aufs/dynop.h --- /dev/null -+++ linux-6.12.30/fs/aufs/dynop.h 2026-03-25 14:52:47.436035724 +0300 ++++ linux-6.12.30/fs/aufs/dynop.h 2026-06-20 18:11:10.322505257 +0300 @@ -0,0 +1,77 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* @@ -11827,7 +11827,7 @@ diff -Naur null/fs/aufs/dynop.h linux-6.12.30/fs/aufs/dynop.h +#endif /* __AUFS_DYNOP_H__ */ diff -Naur null/fs/aufs/export.c linux-6.12.30/fs/aufs/export.c --- /dev/null -+++ linux-6.12.30/fs/aufs/export.c 2026-03-25 14:52:47.436035724 +0300 ++++ linux-6.12.30/fs/aufs/export.c 2026-06-20 18:11:10.323505257 +0300 @@ -0,0 +1,846 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -12677,7 +12677,7 @@ diff -Naur null/fs/aufs/export.c linux-6.12.30/fs/aufs/export.c +} diff -Naur null/fs/aufs/fhsm.c linux-6.12.30/fs/aufs/fhsm.c --- /dev/null -+++ linux-6.12.30/fs/aufs/fhsm.c 2026-03-25 14:52:47.437035712 +0300 ++++ linux-6.12.30/fs/aufs/fhsm.c 2026-06-20 18:11:10.323505257 +0300 @@ -0,0 +1,426 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -13107,7 +13107,7 @@ diff -Naur null/fs/aufs/fhsm.c linux-6.12.30/fs/aufs/fhsm.c +} diff -Naur null/fs/aufs/file.c linux-6.12.30/fs/aufs/file.c --- /dev/null -+++ linux-6.12.30/fs/aufs/file.c 2026-03-25 14:52:47.437035712 +0300 ++++ linux-6.12.30/fs/aufs/file.c 2026-06-20 18:11:10.323505257 +0300 @@ -0,0 +1,851 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -13962,7 +13962,7 @@ diff -Naur null/fs/aufs/file.c linux-6.12.30/fs/aufs/file.c +}; diff -Naur null/fs/aufs/file.h linux-6.12.30/fs/aufs/file.h --- /dev/null -+++ linux-6.12.30/fs/aufs/file.h 2026-03-25 14:52:47.437035712 +0300 ++++ linux-6.12.30/fs/aufs/file.h 2026-06-20 18:11:10.323505257 +0300 @@ -0,0 +1,327 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* @@ -14293,7 +14293,7 @@ diff -Naur null/fs/aufs/file.h linux-6.12.30/fs/aufs/file.h +#endif /* __AUFS_FILE_H__ */ diff -Naur null/fs/aufs/finfo.c linux-6.12.30/fs/aufs/finfo.c --- /dev/null -+++ linux-6.12.30/fs/aufs/finfo.c 2026-03-25 14:52:47.437035712 +0300 ++++ linux-6.12.30/fs/aufs/finfo.c 2026-06-20 18:11:10.323505257 +0300 @@ -0,0 +1,148 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -14445,7 +14445,7 @@ diff -Naur null/fs/aufs/finfo.c linux-6.12.30/fs/aufs/finfo.c +} diff -Naur null/fs/aufs/f_op.c linux-6.12.30/fs/aufs/f_op.c --- /dev/null -+++ linux-6.12.30/fs/aufs/f_op.c 2026-03-25 14:52:47.436035724 +0300 ++++ linux-6.12.30/fs/aufs/f_op.c 2026-06-20 18:11:10.323505257 +0300 @@ -0,0 +1,791 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -15240,8 +15240,8 @@ diff -Naur null/fs/aufs/f_op.c linux-6.12.30/fs/aufs/f_op.c +}; diff -Naur null/fs/aufs/fsctx.c linux-6.12.30/fs/aufs/fsctx.c --- /dev/null -+++ linux-6.12.30/fs/aufs/fsctx.c 2026-03-25 14:52:47.437035712 +0300 -@@ -0,0 +1,1244 @@ ++++ linux-6.12.30/fs/aufs/fsctx.c 2026-06-20 18:11:10.324505257 +0300 +@@ -0,0 +1,1245 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2022-2025 Junjiro R. Okajima @@ -16324,9 +16324,10 @@ diff -Naur null/fs/aufs/fsctx.c linux-6.12.30/fs/aufs/fsctx.c + */ +static inline unsigned int is_colonopt(char *str) +{ -+#define do_test(name) \ -+ if (!strncmp(str, name ":", sizeof(name))) \ -+ return sizeof(name) - 1 ++#define do_test(name) do { \ ++ if (!strncmp(str, name ":", sizeof(name))) \ ++ return sizeof(name) - 1; \ ++ } while (0) + do_test("br"); + do_test("add"); + do_test("ins"); @@ -16488,7 +16489,7 @@ diff -Naur null/fs/aufs/fsctx.c linux-6.12.30/fs/aufs/fsctx.c +} diff -Naur null/fs/aufs/fstype.h linux-6.12.30/fs/aufs/fstype.h --- /dev/null -+++ linux-6.12.30/fs/aufs/fstype.h 2026-03-25 14:52:47.437035712 +0300 ++++ linux-6.12.30/fs/aufs/fstype.h 2026-06-20 18:11:10.324505257 +0300 @@ -0,0 +1,419 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* @@ -16911,7 +16912,7 @@ diff -Naur null/fs/aufs/fstype.h linux-6.12.30/fs/aufs/fstype.h +#endif /* __AUFS_FSTYPE_H__ */ diff -Naur null/fs/aufs/hbl.h linux-6.12.30/fs/aufs/hbl.h --- /dev/null -+++ linux-6.12.30/fs/aufs/hbl.h 2026-03-25 14:52:47.437035712 +0300 ++++ linux-6.12.30/fs/aufs/hbl.h 2026-06-20 18:11:10.324505257 +0300 @@ -0,0 +1,65 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* @@ -16980,7 +16981,7 @@ diff -Naur null/fs/aufs/hbl.h linux-6.12.30/fs/aufs/hbl.h +#endif /* __AUFS_HBL_H__ */ diff -Naur null/fs/aufs/hfsnotify.c linux-6.12.30/fs/aufs/hfsnotify.c --- /dev/null -+++ linux-6.12.30/fs/aufs/hfsnotify.c 2026-03-25 14:52:47.438035699 +0300 ++++ linux-6.12.30/fs/aufs/hfsnotify.c 2026-06-20 18:11:10.324505257 +0300 @@ -0,0 +1,290 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -17274,7 +17275,7 @@ diff -Naur null/fs/aufs/hfsnotify.c linux-6.12.30/fs/aufs/hfsnotify.c +}; diff -Naur null/fs/aufs/hfsplus.c linux-6.12.30/fs/aufs/hfsplus.c --- /dev/null -+++ linux-6.12.30/fs/aufs/hfsplus.c 2026-03-25 14:52:47.438035699 +0300 ++++ linux-6.12.30/fs/aufs/hfsplus.c 2026-06-20 18:11:10.324505257 +0300 @@ -0,0 +1,60 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -17338,7 +17339,7 @@ diff -Naur null/fs/aufs/hfsplus.c linux-6.12.30/fs/aufs/hfsplus.c +} diff -Naur null/fs/aufs/hnotify.c linux-6.12.30/fs/aufs/hnotify.c --- /dev/null -+++ linux-6.12.30/fs/aufs/hnotify.c 2026-03-25 14:52:47.438035699 +0300 ++++ linux-6.12.30/fs/aufs/hnotify.c 2026-06-20 18:11:10.324505257 +0300 @@ -0,0 +1,715 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -18057,7 +18058,7 @@ diff -Naur null/fs/aufs/hnotify.c linux-6.12.30/fs/aufs/hnotify.c +} diff -Naur null/fs/aufs/iinfo.c linux-6.12.30/fs/aufs/iinfo.c --- /dev/null -+++ linux-6.12.30/fs/aufs/iinfo.c 2026-03-25 14:52:47.439035687 +0300 ++++ linux-6.12.30/fs/aufs/iinfo.c 2026-06-20 18:11:10.325505257 +0300 @@ -0,0 +1,288 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -18349,7 +18350,7 @@ diff -Naur null/fs/aufs/iinfo.c linux-6.12.30/fs/aufs/iinfo.c +} diff -Naur null/fs/aufs/inode.c linux-6.12.30/fs/aufs/inode.c --- /dev/null -+++ linux-6.12.30/fs/aufs/inode.c 2026-03-25 14:52:47.439035687 +0300 ++++ linux-6.12.30/fs/aufs/inode.c 2026-06-20 18:11:10.325505257 +0300 @@ -0,0 +1,532 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -18885,7 +18886,7 @@ diff -Naur null/fs/aufs/inode.c linux-6.12.30/fs/aufs/inode.c +} diff -Naur null/fs/aufs/inode.h linux-6.12.30/fs/aufs/inode.h --- /dev/null -+++ linux-6.12.30/fs/aufs/inode.h 2026-03-25 14:52:47.439035687 +0300 ++++ linux-6.12.30/fs/aufs/inode.h 2026-06-20 18:11:10.325505257 +0300 @@ -0,0 +1,728 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* @@ -19617,7 +19618,7 @@ diff -Naur null/fs/aufs/inode.h linux-6.12.30/fs/aufs/inode.h +#endif /* __AUFS_INODE_H__ */ diff -Naur null/fs/aufs/ioctl.c linux-6.12.30/fs/aufs/ioctl.c --- /dev/null -+++ linux-6.12.30/fs/aufs/ioctl.c 2026-03-25 14:52:47.439035687 +0300 ++++ linux-6.12.30/fs/aufs/ioctl.c 2026-06-20 18:11:10.326505257 +0300 @@ -0,0 +1,220 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -19841,7 +19842,7 @@ diff -Naur null/fs/aufs/ioctl.c linux-6.12.30/fs/aufs/ioctl.c +#endif diff -Naur null/fs/aufs/i_op_add.c linux-6.12.30/fs/aufs/i_op_add.c --- /dev/null -+++ linux-6.12.30/fs/aufs/i_op_add.c 2026-03-25 14:52:47.438035699 +0300 ++++ linux-6.12.30/fs/aufs/i_op_add.c 2026-06-20 18:11:10.325505257 +0300 @@ -0,0 +1,947 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -20792,7 +20793,7 @@ diff -Naur null/fs/aufs/i_op_add.c linux-6.12.30/fs/aufs/i_op_add.c +} diff -Naur null/fs/aufs/i_op.c linux-6.12.30/fs/aufs/i_op.c --- /dev/null -+++ linux-6.12.30/fs/aufs/i_op.c 2026-03-25 14:52:47.438035699 +0300 ++++ linux-6.12.30/fs/aufs/i_op.c 2026-06-20 18:11:10.324505257 +0300 @@ -0,0 +1,1522 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -22318,7 +22319,7 @@ diff -Naur null/fs/aufs/i_op.c linux-6.12.30/fs/aufs/i_op.c +}; diff -Naur null/fs/aufs/i_op_del.c linux-6.12.30/fs/aufs/i_op_del.c --- /dev/null -+++ linux-6.12.30/fs/aufs/i_op_del.c 2026-03-25 14:52:47.438035699 +0300 ++++ linux-6.12.30/fs/aufs/i_op_del.c 2026-06-20 18:11:10.325505257 +0300 @@ -0,0 +1,517 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -22839,7 +22840,7 @@ diff -Naur null/fs/aufs/i_op_del.c linux-6.12.30/fs/aufs/i_op_del.c +} diff -Naur null/fs/aufs/i_op_ren.c linux-6.12.30/fs/aufs/i_op_ren.c --- /dev/null -+++ linux-6.12.30/fs/aufs/i_op_ren.c 2026-03-25 14:52:47.439035687 +0300 ++++ linux-6.12.30/fs/aufs/i_op_ren.c 2026-06-20 18:11:10.325505257 +0300 @@ -0,0 +1,1242 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -24085,7 +24086,7 @@ diff -Naur null/fs/aufs/i_op_ren.c linux-6.12.30/fs/aufs/i_op_ren.c +} diff -Naur null/fs/aufs/Kconfig linux-6.12.30/fs/aufs/Kconfig --- /dev/null -+++ linux-6.12.30/fs/aufs/Kconfig 2026-03-25 14:52:47.434465972 +0300 ++++ linux-6.12.30/fs/aufs/Kconfig 2026-06-20 18:11:10.319505256 +0300 @@ -0,0 +1,201 @@ +# SPDX-License-Identifier: GPL-2.0 +config AUFS_FS @@ -24290,7 +24291,7 @@ diff -Naur null/fs/aufs/Kconfig linux-6.12.30/fs/aufs/Kconfig +endif diff -Naur null/fs/aufs/lcnt.h linux-6.12.30/fs/aufs/lcnt.h --- /dev/null -+++ linux-6.12.30/fs/aufs/lcnt.h 2026-03-25 14:52:47.439035687 +0300 ++++ linux-6.12.30/fs/aufs/lcnt.h 2026-06-20 18:11:10.326505257 +0300 @@ -0,0 +1,186 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* @@ -24480,8 +24481,8 @@ diff -Naur null/fs/aufs/lcnt.h linux-6.12.30/fs/aufs/lcnt.h +#endif /* __AUFS_LCNT_H__ */ diff -Naur null/fs/aufs/loop.c linux-6.12.30/fs/aufs/loop.c --- /dev/null -+++ linux-6.12.30/fs/aufs/loop.c 2026-03-25 14:52:47.439035687 +0300 -@@ -0,0 +1,148 @@ ++++ linux-6.12.30/fs/aufs/loop.c 2026-06-20 18:11:10.326505257 +0300 +@@ -0,0 +1,157 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2025 Junjiro R. Okajima @@ -24514,21 +24515,23 @@ diff -Naur null/fs/aufs/loop.c linux-6.12.30/fs/aufs/loop.c + */ +int au_test_loopback_overlap(struct super_block *sb, struct dentry *h_adding) +{ ++ int ret; + struct super_block *h_sb; + struct file *backing_file; + ++ ret = 0; + if (unlikely(!backing_file_func)) { + /* don't load "loop" module here */ + backing_file_func = symbol_get(loop_backing_file); + if (unlikely(!backing_file_func)) + /* "loop" module is not loaded */ -+ return 0; ++ goto out; + } + + h_sb = h_adding->d_sb; + backing_file = backing_file_func(h_sb); + if (!backing_file) -+ return 0; ++ goto out; + + h_adding = backing_file->f_path.dentry; + /* @@ -24536,8 +24539,15 @@ diff -Naur null/fs/aufs/loop.c linux-6.12.30/fs/aufs/loop.c + * in this case aufs cannot detect the loop. + */ + if (unlikely(h_adding->d_sb == sb)) -+ return 1; -+ return !!au_test_subdir(h_adding, sb->s_root); ++ ret = 1; ++ else ++ ret = !!au_test_subdir(h_adding, sb->s_root); ++ ++ /* correspond to get_file() in loop_backing_file() */ ++ fput(backing_file); ++ ++out: ++ return ret; +} + +/* true if a kernel thread named 'loop[0-9].*' accesses a file */ @@ -24632,7 +24642,7 @@ diff -Naur null/fs/aufs/loop.c linux-6.12.30/fs/aufs/loop.c +} diff -Naur null/fs/aufs/loop.h linux-6.12.30/fs/aufs/loop.h --- /dev/null -+++ linux-6.12.30/fs/aufs/loop.h 2026-03-25 14:52:47.439035687 +0300 ++++ linux-6.12.30/fs/aufs/loop.h 2026-06-20 18:11:10.326505257 +0300 @@ -0,0 +1,55 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* @@ -24691,7 +24701,7 @@ diff -Naur null/fs/aufs/loop.h linux-6.12.30/fs/aufs/loop.h +#endif /* __AUFS_LOOP_H__ */ diff -Naur null/fs/aufs/magic.mk linux-6.12.30/fs/aufs/magic.mk --- /dev/null -+++ linux-6.12.30/fs/aufs/magic.mk 2026-03-25 14:52:47.439035687 +0300 ++++ linux-6.12.30/fs/aufs/magic.mk 2026-06-20 18:11:10.326505257 +0300 @@ -0,0 +1,31 @@ +# SPDX-License-Identifier: GPL-2.0 + @@ -24726,7 +24736,7 @@ diff -Naur null/fs/aufs/magic.mk linux-6.12.30/fs/aufs/magic.mk +endif diff -Naur null/fs/aufs/Makefile linux-6.12.30/fs/aufs/Makefile --- /dev/null -+++ linux-6.12.30/fs/aufs/Makefile 2026-03-25 14:52:47.434610124 +0300 ++++ linux-6.12.30/fs/aufs/Makefile 2026-06-20 18:11:10.319505256 +0300 @@ -0,0 +1,46 @@ +# SPDX-License-Identifier: GPL-2.0 + @@ -24776,7 +24786,7 @@ diff -Naur null/fs/aufs/Makefile linux-6.12.30/fs/aufs/Makefile +aufs-$(CONFIG_AUFS_MAGIC_SYSRQ) += sysrq.o diff -Naur null/fs/aufs/mf.c linux-6.12.30/fs/aufs/mf.c --- /dev/null -+++ linux-6.12.30/fs/aufs/mf.c 2026-03-25 14:52:47.439035687 +0300 ++++ linux-6.12.30/fs/aufs/mf.c 2026-06-20 18:11:10.326505257 +0300 @@ -0,0 +1,119 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -24899,7 +24909,7 @@ diff -Naur null/fs/aufs/mf.c linux-6.12.30/fs/aufs/mf.c +EXPORT_SYMBOL_GPL(au_do_file_user_inode); diff -Naur null/fs/aufs/module.c linux-6.12.30/fs/aufs/module.c --- /dev/null -+++ linux-6.12.30/fs/aufs/module.c 2026-03-25 14:52:47.440035674 +0300 ++++ linux-6.12.30/fs/aufs/module.c 2026-06-20 18:11:10.326505257 +0300 @@ -0,0 +1,275 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -25178,7 +25188,7 @@ diff -Naur null/fs/aufs/module.c linux-6.12.30/fs/aufs/module.c +module_exit(aufs_exit); diff -Naur null/fs/aufs/module.h linux-6.12.30/fs/aufs/module.h --- /dev/null -+++ linux-6.12.30/fs/aufs/module.h 2026-03-25 14:52:47.440035674 +0300 ++++ linux-6.12.30/fs/aufs/module.h 2026-06-20 18:11:10.326505257 +0300 @@ -0,0 +1,180 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* @@ -25362,7 +25372,7 @@ diff -Naur null/fs/aufs/module.h linux-6.12.30/fs/aufs/module.h +#endif /* __AUFS_MODULE_H__ */ diff -Naur null/fs/aufs/mvdown.c linux-6.12.30/fs/aufs/mvdown.c --- /dev/null -+++ linux-6.12.30/fs/aufs/mvdown.c 2026-03-25 14:52:47.440035674 +0300 ++++ linux-6.12.30/fs/aufs/mvdown.c 2026-06-20 18:11:10.326505257 +0300 @@ -0,0 +1,700 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -26066,7 +26076,7 @@ diff -Naur null/fs/aufs/mvdown.c linux-6.12.30/fs/aufs/mvdown.c +} diff -Naur null/fs/aufs/opts.c linux-6.12.30/fs/aufs/opts.c --- /dev/null -+++ linux-6.12.30/fs/aufs/opts.c 2026-03-25 14:52:47.440035674 +0300 ++++ linux-6.12.30/fs/aufs/opts.c 2026-06-20 18:11:10.327505257 +0300 @@ -0,0 +1,1030 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -27100,7 +27110,7 @@ diff -Naur null/fs/aufs/opts.c linux-6.12.30/fs/aufs/opts.c +} diff -Naur null/fs/aufs/opts.h linux-6.12.30/fs/aufs/opts.h --- /dev/null -+++ linux-6.12.30/fs/aufs/opts.h 2026-03-25 14:52:47.440035674 +0300 ++++ linux-6.12.30/fs/aufs/opts.h 2026-06-20 18:11:10.327505257 +0300 @@ -0,0 +1,264 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* @@ -27368,7 +27378,7 @@ diff -Naur null/fs/aufs/opts.h linux-6.12.30/fs/aufs/opts.h +#endif /* __AUFS_OPTS_H__ */ diff -Naur null/fs/aufs/plink.c linux-6.12.30/fs/aufs/plink.c --- /dev/null -+++ linux-6.12.30/fs/aufs/plink.c 2026-03-25 14:52:47.440035674 +0300 ++++ linux-6.12.30/fs/aufs/plink.c 2026-06-20 18:11:10.327505257 +0300 @@ -0,0 +1,508 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -27880,7 +27890,7 @@ diff -Naur null/fs/aufs/plink.c linux-6.12.30/fs/aufs/plink.c +} diff -Naur null/fs/aufs/poll.c linux-6.12.30/fs/aufs/poll.c --- /dev/null -+++ linux-6.12.30/fs/aufs/poll.c 2026-03-25 14:52:47.440035674 +0300 ++++ linux-6.12.30/fs/aufs/poll.c 2026-06-20 18:11:10.327505257 +0300 @@ -0,0 +1,51 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -27935,7 +27945,7 @@ diff -Naur null/fs/aufs/poll.c linux-6.12.30/fs/aufs/poll.c +} diff -Naur null/fs/aufs/posix_acl.c linux-6.12.30/fs/aufs/posix_acl.c --- /dev/null -+++ linux-6.12.30/fs/aufs/posix_acl.c 2026-03-25 14:52:47.441035662 +0300 ++++ linux-6.12.30/fs/aufs/posix_acl.c 2026-06-20 18:11:10.327505257 +0300 @@ -0,0 +1,108 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -28047,7 +28057,7 @@ diff -Naur null/fs/aufs/posix_acl.c linux-6.12.30/fs/aufs/posix_acl.c +} diff -Naur null/fs/aufs/procfs.c linux-6.12.30/fs/aufs/procfs.c --- /dev/null -+++ linux-6.12.30/fs/aufs/procfs.c 2026-03-25 14:52:47.441035662 +0300 ++++ linux-6.12.30/fs/aufs/procfs.c 2026-06-20 18:11:10.327505257 +0300 @@ -0,0 +1,168 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -28219,7 +28229,7 @@ diff -Naur null/fs/aufs/procfs.c linux-6.12.30/fs/aufs/procfs.c +} diff -Naur null/fs/aufs/rdu.c linux-6.12.30/fs/aufs/rdu.c --- /dev/null -+++ linux-6.12.30/fs/aufs/rdu.c 2026-03-25 14:52:47.441035662 +0300 ++++ linux-6.12.30/fs/aufs/rdu.c 2026-06-20 18:11:10.327505257 +0300 @@ -0,0 +1,384 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -28607,7 +28617,7 @@ diff -Naur null/fs/aufs/rdu.c linux-6.12.30/fs/aufs/rdu.c +#endif diff -Naur null/fs/aufs/rwsem.h linux-6.12.30/fs/aufs/rwsem.h --- /dev/null -+++ linux-6.12.30/fs/aufs/rwsem.h 2026-03-25 14:52:47.441035662 +0300 ++++ linux-6.12.30/fs/aufs/rwsem.h 2026-06-20 18:11:10.327505257 +0300 @@ -0,0 +1,89 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* @@ -28700,7 +28710,7 @@ diff -Naur null/fs/aufs/rwsem.h linux-6.12.30/fs/aufs/rwsem.h +#endif /* __AUFS_RWSEM_H__ */ diff -Naur null/fs/aufs/sbinfo.c linux-6.12.30/fs/aufs/sbinfo.c --- /dev/null -+++ linux-6.12.30/fs/aufs/sbinfo.c 2026-03-25 14:52:47.441035662 +0300 ++++ linux-6.12.30/fs/aufs/sbinfo.c 2026-06-20 18:11:10.327505257 +0300 @@ -0,0 +1,316 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -29020,7 +29030,7 @@ diff -Naur null/fs/aufs/sbinfo.c linux-6.12.30/fs/aufs/sbinfo.c +} diff -Naur null/fs/aufs/super.c linux-6.12.30/fs/aufs/super.c --- /dev/null -+++ linux-6.12.30/fs/aufs/super.c 2026-03-25 14:52:47.441035662 +0300 ++++ linux-6.12.30/fs/aufs/super.c 2026-06-20 18:11:10.328505257 +0300 @@ -0,0 +1,871 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -29895,7 +29905,7 @@ diff -Naur null/fs/aufs/super.c linux-6.12.30/fs/aufs/super.c +}; diff -Naur null/fs/aufs/super.h linux-6.12.30/fs/aufs/super.h --- /dev/null -+++ linux-6.12.30/fs/aufs/super.h 2026-03-25 14:52:47.441035662 +0300 ++++ linux-6.12.30/fs/aufs/super.h 2026-06-20 18:11:10.328505257 +0300 @@ -0,0 +1,618 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* @@ -30517,7 +30527,7 @@ diff -Naur null/fs/aufs/super.h linux-6.12.30/fs/aufs/super.h +#endif /* __AUFS_SUPER_H__ */ diff -Naur null/fs/aufs/sysaufs.c linux-6.12.30/fs/aufs/sysaufs.c --- /dev/null -+++ linux-6.12.30/fs/aufs/sysaufs.c 2026-03-25 14:52:47.441035662 +0300 ++++ linux-6.12.30/fs/aufs/sysaufs.c 2026-06-20 18:11:10.328505257 +0300 @@ -0,0 +1,94 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -30615,7 +30625,7 @@ diff -Naur null/fs/aufs/sysaufs.c linux-6.12.30/fs/aufs/sysaufs.c +} diff -Naur null/fs/aufs/sysaufs.h linux-6.12.30/fs/aufs/sysaufs.h --- /dev/null -+++ linux-6.12.30/fs/aufs/sysaufs.h 2026-03-25 14:52:47.442035649 +0300 ++++ linux-6.12.30/fs/aufs/sysaufs.h 2026-06-20 18:11:10.328505257 +0300 @@ -0,0 +1,102 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* @@ -30721,7 +30731,7 @@ diff -Naur null/fs/aufs/sysaufs.h linux-6.12.30/fs/aufs/sysaufs.h +#endif /* __SYSAUFS_H__ */ diff -Naur null/fs/aufs/sysfs.c linux-6.12.30/fs/aufs/sysfs.c --- /dev/null -+++ linux-6.12.30/fs/aufs/sysfs.c 2026-03-25 14:52:47.442035649 +0300 ++++ linux-6.12.30/fs/aufs/sysfs.c 2026-06-20 18:11:10.328505257 +0300 @@ -0,0 +1,374 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -31099,7 +31109,7 @@ diff -Naur null/fs/aufs/sysfs.c linux-6.12.30/fs/aufs/sysfs.c +} diff -Naur null/fs/aufs/sysrq.c linux-6.12.30/fs/aufs/sysrq.c --- /dev/null -+++ linux-6.12.30/fs/aufs/sysrq.c 2026-03-25 14:52:47.442035649 +0300 ++++ linux-6.12.30/fs/aufs/sysrq.c 2026-06-20 18:11:10.328505257 +0300 @@ -0,0 +1,157 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -31260,7 +31270,7 @@ diff -Naur null/fs/aufs/sysrq.c linux-6.12.30/fs/aufs/sysrq.c +} diff -Naur null/fs/aufs/vdir.c linux-6.12.30/fs/aufs/vdir.c --- /dev/null -+++ linux-6.12.30/fs/aufs/vdir.c 2026-03-25 14:52:47.442035649 +0300 ++++ linux-6.12.30/fs/aufs/vdir.c 2026-06-20 18:11:10.328505257 +0300 @@ -0,0 +1,896 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -32160,7 +32170,7 @@ diff -Naur null/fs/aufs/vdir.c linux-6.12.30/fs/aufs/vdir.c +} diff -Naur null/fs/aufs/vfsub.c linux-6.12.30/fs/aufs/vfsub.c --- /dev/null -+++ linux-6.12.30/fs/aufs/vfsub.c 2026-03-25 14:52:47.442035649 +0300 ++++ linux-6.12.30/fs/aufs/vfsub.c 2026-06-20 18:11:10.329505257 +0300 @@ -0,0 +1,1005 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -33169,7 +33179,7 @@ diff -Naur null/fs/aufs/vfsub.c linux-6.12.30/fs/aufs/vfsub.c +} diff -Naur null/fs/aufs/vfsub.h linux-6.12.30/fs/aufs/vfsub.h --- /dev/null -+++ linux-6.12.30/fs/aufs/vfsub.h 2026-03-25 14:52:47.443035637 +0300 ++++ linux-6.12.30/fs/aufs/vfsub.h 2026-06-20 18:11:10.329505257 +0300 @@ -0,0 +1,436 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* @@ -33609,7 +33619,7 @@ diff -Naur null/fs/aufs/vfsub.h linux-6.12.30/fs/aufs/vfsub.h +#endif /* __AUFS_VFSUB_H__ */ diff -Naur null/fs/aufs/wbr_policy.c linux-6.12.30/fs/aufs/wbr_policy.c --- /dev/null -+++ linux-6.12.30/fs/aufs/wbr_policy.c 2026-03-25 14:52:47.443035637 +0300 ++++ linux-6.12.30/fs/aufs/wbr_policy.c 2026-06-20 18:11:10.329505257 +0300 @@ -0,0 +1,836 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -34449,7 +34459,7 @@ diff -Naur null/fs/aufs/wbr_policy.c linux-6.12.30/fs/aufs/wbr_policy.c +}; diff -Naur null/fs/aufs/whout.c linux-6.12.30/fs/aufs/whout.c --- /dev/null -+++ linux-6.12.30/fs/aufs/whout.c 2026-03-25 14:52:47.443035637 +0300 ++++ linux-6.12.30/fs/aufs/whout.c 2026-06-20 18:11:10.329505257 +0300 @@ -0,0 +1,1049 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -35502,7 +35512,7 @@ diff -Naur null/fs/aufs/whout.c linux-6.12.30/fs/aufs/whout.c +} diff -Naur null/fs/aufs/whout.h linux-6.12.30/fs/aufs/whout.h --- /dev/null -+++ linux-6.12.30/fs/aufs/whout.h 2026-03-25 14:52:47.443035637 +0300 ++++ linux-6.12.30/fs/aufs/whout.h 2026-06-20 18:11:10.329505257 +0300 @@ -0,0 +1,87 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* @@ -35593,7 +35603,7 @@ diff -Naur null/fs/aufs/whout.h linux-6.12.30/fs/aufs/whout.h +#endif /* __AUFS_WHOUT_H__ */ diff -Naur null/fs/aufs/wkq.c linux-6.12.30/fs/aufs/wkq.c --- /dev/null -+++ linux-6.12.30/fs/aufs/wkq.c 2026-03-25 14:52:47.443035637 +0300 ++++ linux-6.12.30/fs/aufs/wkq.c 2026-06-20 18:11:10.330505257 +0300 @@ -0,0 +1,370 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -35967,7 +35977,7 @@ diff -Naur null/fs/aufs/wkq.c linux-6.12.30/fs/aufs/wkq.c +} diff -Naur null/fs/aufs/wkq.h linux-6.12.30/fs/aufs/wkq.h --- /dev/null -+++ linux-6.12.30/fs/aufs/wkq.h 2026-03-25 14:52:47.443035637 +0300 ++++ linux-6.12.30/fs/aufs/wkq.h 2026-06-20 18:11:10.330505257 +0300 @@ -0,0 +1,89 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* @@ -36060,7 +36070,7 @@ diff -Naur null/fs/aufs/wkq.h linux-6.12.30/fs/aufs/wkq.h +#endif /* __AUFS_WKQ_H__ */ diff -Naur null/fs/aufs/xattr.c linux-6.12.30/fs/aufs/xattr.c --- /dev/null -+++ linux-6.12.30/fs/aufs/xattr.c 2026-03-25 14:52:47.444035624 +0300 ++++ linux-6.12.30/fs/aufs/xattr.c 2026-06-20 18:11:10.330505257 +0300 @@ -0,0 +1,360 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -36424,7 +36434,7 @@ diff -Naur null/fs/aufs/xattr.c linux-6.12.30/fs/aufs/xattr.c +} diff -Naur null/fs/aufs/xino.c linux-6.12.30/fs/aufs/xino.c --- /dev/null -+++ linux-6.12.30/fs/aufs/xino.c 2026-03-25 14:52:47.444035624 +0300 ++++ linux-6.12.30/fs/aufs/xino.c 2026-06-20 18:11:10.330505257 +0300 @@ -0,0 +1,1927 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -38355,7 +38365,7 @@ diff -Naur null/fs/aufs/xino.c linux-6.12.30/fs/aufs/xino.c +} diff -Naur null/include/uapi/linux/aufs_type.h linux-6.12.30/include/uapi/linux/aufs_type.h --- /dev/null -+++ linux-6.12.30/include/uapi/linux/aufs_type.h 2026-03-25 14:52:47.445565498 +0300 ++++ linux-6.12.30/include/uapi/linux/aufs_type.h 2026-06-20 18:11:10.330505257 +0300 @@ -0,0 +1,452 @@ +/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ +/* @@ -38399,7 +38409,7 @@ diff -Naur null/include/uapi/linux/aufs_type.h linux-6.12.30/include/uapi/linux/ +#include +#endif /* __KERNEL__ */ + -+#define AUFS_VERSION "6.12-20260223" ++#define AUFS_VERSION "6.12-20260525" + +/* todo? move this to linux-2.6.19/include/magic.h */ +#define AUFS_SUPER_MAGIC ('a' << 24 | 'u' << 16 | 'f' << 8 | 's') diff --git a/kernel/kernel/files/patches/aufs6/tmpfs-idr.patch b/kernel/kernel/files/patches/aufs6/tmpfs-idr.patch index 40cf01c2..d853524b 100644 --- a/kernel/kernel/files/patches/aufs6/tmpfs-idr.patch +++ b/kernel/kernel/files/patches/aufs6/tmpfs-idr.patch @@ -1,10 +1,10 @@ SPDX-License-Identifier: GPL-2.0 diff --git a/include/linux/shmem_fs.h b/include/linux/shmem_fs.h -index 515a9a6a3c6f..9de809dac3be 100644 +index 515a9a6a3c6f..b23b4b5a61dd 100644 --- a/include/linux/shmem_fs.h +++ b/include/linux/shmem_fs.h -@@ -55,10 +55,13 @@ struct shmem_quota_limits { +@@ -55,8 +55,12 @@ struct shmem_quota_limits { }; struct shmem_sb_info { @@ -13,32 +13,16 @@ index 515a9a6a3c6f..9de809dac3be 100644 + struct idr idr; /* manages inode-number */ unsigned long max_blocks; /* How many blocks are allowed */ struct percpu_counter used_blocks; /* How many are allocated */ -- unsigned long max_inodes; /* How many inodes are allowed */ -- unsigned long free_ispace; /* How much ispace left for allocation */ -+ int max_inodes; /* How many inodes are allowed */ -+ unsigned long free_ispace; /* How many are left for allocation */ ++ /* keep the type unchanged to reduce the size of tmpfs_idr.patch. */ + unsigned long max_inodes; /* How many inodes are allowed */ + unsigned long free_ispace; /* How much ispace left for allocation */ raw_spinlock_t stat_lock; /* Serialize shmem_sb_info changes */ - umode_t mode; /* Mount mode for root directory */ - unsigned char huge; /* Whether to try for hugepages */ diff --git a/mm/shmem.c b/mm/shmem.c -index 568bb290bdce..f8869230f782 100644 +index 568bb290bdce..ea14faf65e87 100644 --- a/mm/shmem.c +++ b/mm/shmem.c -@@ -112,7 +112,7 @@ struct shmem_falloc { - - struct shmem_options { - unsigned long long blocks; -- unsigned long long inodes; -+ int inodes; - struct mempolicy *mpol; - kuid_t uid; - kgid_t gid; -@@ -144,12 +144,14 @@ static unsigned long shmem_default_max_blocks(void) - return totalram_pages() / 2; - } - --static unsigned long shmem_default_max_inodes(void) -+static int shmem_default_max_inodes(void) +@@ -147,9 +147,11 @@ static unsigned long shmem_default_max_blocks(void) + static unsigned long shmem_default_max_inodes(void) { unsigned long nr_pages = totalram_pages(); + unsigned long ul; @@ -63,7 +47,7 @@ index 568bb290bdce..f8869230f782 100644 shmem_free_inode(inode->i_sb, freed); WARN_ON(inode->i_blocks); clear_inode(inode); -@@ -2854,6 +2861,25 @@ static struct inode *__shmem_get_inode(struct mnt_idmap *idmap, +@@ -2854,6 +2861,26 @@ static struct inode *__shmem_get_inode(struct mnt_idmap *idmap, break; } @@ -75,7 +59,8 @@ index 568bb290bdce..f8869230f782 100644 + if (ino > 0) { + inode->i_ino = ino; + mutex_unlock(&sbinfo->idr_lock); -+ __insert_inode_hash(inode, inode->i_ino); ++ /* postpone it as the original does */ ++ /* __insert_inode_hash(inode, inode->i_ino); */ + } else { + inode->i_ino = 0; + mutex_unlock(&sbinfo->idr_lock); @@ -89,69 +74,7 @@ index 568bb290bdce..f8869230f782 100644 lockdep_annotate_inode_mutex_key(inode); return inode; } -@@ -4098,8 +4124,7 @@ static struct dentry *shmem_get_parent(struct dentry *child) - static int shmem_match(struct inode *ino, void *vfh) - { - __u32 *fh = vfh; -- __u64 inum = fh[2]; -- inum = (inum << 32) | fh[1]; -+ __u64 inum = fh[1]; - return ino->i_ino == inum && fh[0] == ino->i_generation; - } - -@@ -4118,14 +4143,11 @@ static struct dentry *shmem_fh_to_dentry(struct super_block *sb, - struct dentry *dentry = NULL; - u64 inum; - -- if (fh_len < 3) -+ if (fh_len < 2) - return NULL; - -- inum = fid->raw[2]; -- inum = (inum << 32) | fid->raw[1]; -- -- inode = ilookup5(sb, (unsigned long)(inum + fid->raw[0]), -- shmem_match, fid->raw); -+ inum = fid->raw[1]; -+ inode = ilookup5(sb, inum, shmem_match, fid->raw); - if (inode) { - dentry = shmem_find_alias(inode); - iput(inode); -@@ -4137,30 +4159,15 @@ static struct dentry *shmem_fh_to_dentry(struct super_block *sb, - static int shmem_encode_fh(struct inode *inode, __u32 *fh, int *len, - struct inode *parent) - { -- if (*len < 3) { -- *len = 3; -+ if (*len < 2) { -+ *len = 2; - return FILEID_INVALID; - } - -- if (inode_unhashed(inode)) { -- /* Unfortunately insert_inode_hash is not idempotent, -- * so as we hash inodes here rather than at creation -- * time, we need a lock to ensure we only try -- * to do it once -- */ -- static DEFINE_SPINLOCK(lock); -- spin_lock(&lock); -- if (inode_unhashed(inode)) -- __insert_inode_hash(inode, -- inode->i_ino + inode->i_generation); -- spin_unlock(&lock); -- } -- - fh[0] = inode->i_generation; - fh[1] = inode->i_ino; -- fh[2] = ((__u64)inode->i_ino) >> 32; - -- *len = 3; -+ *len = 2; - return 1; - } - -@@ -4259,7 +4266,7 @@ static int shmem_parse_one(struct fs_context *fc, struct fs_parameter *param) +@@ -4259,7 +4286,7 @@ static int shmem_parse_one(struct fs_context *fc, struct fs_parameter *param) break; case Opt_nr_inodes: ctx->inodes = memparse(param->string, &rest); @@ -160,16 +83,7 @@ index 568bb290bdce..f8869230f782 100644 goto bad_value; ctx->seen |= SHMEM_SEEN_INODES; break; -@@ -4541,7 +4548,7 @@ static int shmem_show_options(struct seq_file *seq, struct dentry *root) - if (sbinfo->max_blocks != shmem_default_max_blocks()) - seq_printf(seq, ",size=%luk", K(sbinfo->max_blocks)); - if (sbinfo->max_inodes != shmem_default_max_inodes()) -- seq_printf(seq, ",nr_inodes=%lu", sbinfo->max_inodes); -+ seq_printf(seq, ",nr_inodes=%d", sbinfo->max_inodes); - if (sbinfo->mode != (0777 | S_ISVTX)) - seq_printf(seq, ",mode=%03ho", sbinfo->mode); - if (!uid_eq(sbinfo->uid, GLOBAL_ROOT_UID)) -@@ -4613,6 +4620,8 @@ static void shmem_put_super(struct super_block *sb) +@@ -4613,6 +4640,8 @@ static void shmem_put_super(struct super_block *sb) #ifdef CONFIG_TMPFS_QUOTA shmem_disable_quotas(sb); #endif @@ -178,7 +92,7 @@ index 568bb290bdce..f8869230f782 100644 free_percpu(sbinfo->ino_batch); percpu_counter_destroy(&sbinfo->used_blocks); mpol_put(sbinfo->mpol); -@@ -4657,9 +4666,11 @@ static int shmem_fill_super(struct super_block *sb, struct fs_context *fc) +@@ -4657,6 +4686,8 @@ static int shmem_fill_super(struct super_block *sb, struct fs_context *fc) #else sb->s_flags |= SB_NOUSER; #endif @@ -186,12 +100,8 @@ index 568bb290bdce..f8869230f782 100644 + idr_init(&sbinfo->idr); sbinfo->max_blocks = ctx->blocks; sbinfo->max_inodes = ctx->inodes; -- sbinfo->free_ispace = sbinfo->max_inodes * BOGO_INODE_SIZE; -+ sbinfo->free_ispace = (unsigned long)sbinfo->max_inodes * BOGO_INODE_SIZE; - if (sb->s_flags & SB_KERNMOUNT) { - sbinfo->ino_batch = alloc_percpu(ino_t); - if (!sbinfo->ino_batch) -@@ -4804,6 +4815,15 @@ static int shmem_error_remove_folio(struct address_space *mapping, + sbinfo->free_ispace = sbinfo->max_inodes * BOGO_INODE_SIZE; +@@ -4804,6 +4835,15 @@ static int shmem_error_remove_folio(struct address_space *mapping, return 0; } @@ -207,7 +117,7 @@ index 568bb290bdce..f8869230f782 100644 static const struct address_space_operations shmem_aops = { .writepage = shmem_writepage, .dirty_folio = noop_dirty_folio, -@@ -4968,6 +4988,7 @@ void __init shmem_init(void) +@@ -4968,6 +5008,7 @@ void __init shmem_init(void) pr_err("Could not kern_mount tmpfs\n"); goto out1; } diff --git a/kernel/kernel/files/patches/linux/patch-6.12.94.xz b/kernel/kernel/files/patches/linux/patch-6.12.94.xz new file mode 100644 index 00000000..c1f65071 Binary files /dev/null and b/kernel/kernel/files/patches/linux/patch-6.12.94.xz differ diff --git a/kernel/kernel/pspec.xml b/kernel/kernel/pspec.xml index 17ecbd17..422473a0 100644 --- a/kernel/kernel/pspec.xml +++ b/kernel/kernel/pspec.xml @@ -33,10 +33,10 @@ - patches/linux/patch-6.12.89.xz + patches/linux/patch-6.12.94.xz - patches/aufs6/aufs6.12-20260223.patch + patches/aufs6/aufs6.12-20260525.patch patches/aufs6/aufs6-base.patch patches/aufs6/aufs6-kbuild.patch @@ -145,6 +145,17 @@ + + 2026-06-20 + 6.12.94 + Version bump + security + + systemRestart + + Mustafa Cinasal + muscnsl@gmail.com + 2026-05-16 6.12.89