[packages/kernel] Up to 6.6.0
arekm
arekm at pld-linux.org
Tue Oct 31 11:14:27 CET 2023
commit 631230db6544ecf092f86ef1f8efa510c0cc9d12
Author: Arkadiusz Miśkiewicz <arekm at maven.pl>
Date: Tue Oct 31 10:06:10 2023 +0100
Up to 6.6.0
android-enable-building-binder-as-module.patch | 2 +-
kernel-aufs.patch | 304 +++++++++++++------------
kernel-multiarch.config | 63 +++++
kernel-x86.config | 1 +
kernel.spec | 6 +-
update-source.sh | 4 +-
6 files changed, 232 insertions(+), 148 deletions(-)
---
diff --git a/kernel.spec b/kernel.spec
index 5fa70036..0597c17c 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -66,8 +66,8 @@
%endif
%define rel 1
-%define basever 6.5
-%define postver .8
+%define basever 6.6
+%define postver .0
# define this to '-%{basever}' for longterm branch
%define versuffix %{nil}
@@ -118,7 +118,7 @@ Epoch: 3
License: GPL v2
Group: Base/Kernel
Source0: https://www.kernel.org/pub/linux/kernel/v6.x/linux-%{basever}.tar.xz
-# Source0-md5: 42c2796f9babe4a1be3f2001c817ff4a
+# Source0-md5: 452098d80ba925af3a4ab35998f3aef5
%if "%{postver}" != ".0"
Patch0: https://www.kernel.org/pub/linux/kernel/v6.x/patch-%{version}.xz
# Patch0-md5: 53c42a9f4eea5b08cc21f905a0c941b5
diff --git a/android-enable-building-binder-as-module.patch b/android-enable-building-binder-as-module.patch
index 4bf89517..5bbd029e 100644
--- a/android-enable-building-binder-as-module.patch
+++ b/android-enable-building-binder-as-module.patch
@@ -130,8 +130,8 @@
--- linux-6.3/mm/memory.c.orig 2023-04-23 21:02:52.000000000 +0200
+++ linux-6.3/mm/memory.c 2023-04-26 10:57:23.873394940 +0200
@@ -1728,6 +1728,7 @@
- mmu_notifier_invalidate_range_end(&range);
tlb_finish_mmu(&tlb);
+ hugetlb_zap_end(vma, details);
}
+EXPORT_SYMBOL_GPL(zap_page_range_single);
diff --git a/kernel-aufs.patch b/kernel-aufs.patch
index 7c6e49fd..a5dcb9a0 100644
--- a/kernel-aufs.patch
+++ b/kernel-aufs.patch
@@ -1,11 +1,11 @@
SPDX-License-Identifier: GPL-2.0
-aufs6.5 kbuild patch
+aufs6.x-rcN kbuild patch
diff --git a/fs/Kconfig b/fs/Kconfig
-index 18d034ec7953..3159bcb16918 100644
+index aa7e03cc1941..bf780967b6c4 100644
--- a/fs/Kconfig
+++ b/fs/Kconfig
-@@ -316,6 +316,7 @@ source "fs/sysv/Kconfig"
+@@ -331,6 +331,7 @@ source "fs/sysv/Kconfig"
source "fs/ufs/Kconfig"
source "fs/erofs/Kconfig"
source "fs/vboxsf/Kconfig"
@@ -14,7 +14,7 @@ index 18d034ec7953..3159bcb16918 100644
endif # MISC_FILESYSTEMS
diff --git a/fs/Makefile b/fs/Makefile
-index e513aaee0603..acdea5771285 100644
+index f9541f40be4e..3a0e13ee39e7 100644
--- a/fs/Makefile
+++ b/fs/Makefile
@@ -129,3 +129,4 @@ obj-$(CONFIG_EFIVAR_FS) += efivarfs/
@@ -23,13 +23,13 @@ index e513aaee0603..acdea5771285 100644
obj-$(CONFIG_ZONEFS_FS) += zonefs/
+obj-$(CONFIG_AUFS_FS) += aufs/
SPDX-License-Identifier: GPL-2.0
-aufs6.5 base patch
+aufs6.x-rcN base patch
diff --git a/MAINTAINERS b/MAINTAINERS
-index 4cc6bf79fdd8..5578e44ad7e2 100644
+index bf0f54c24f81..39b1844bce57 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
-@@ -3310,6 +3310,19 @@ F: include/uapi/linux/audit.h
+@@ -3316,6 +3316,19 @@ F: include/uapi/linux/audit.h
F: kernel/audit*
F: lib/*audit.c
@@ -50,7 +50,7 @@ index 4cc6bf79fdd8..5578e44ad7e2 100644
M: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
R: Dave Ertman <david.m.ertman at intel.com>
diff --git a/drivers/block/loop.c b/drivers/block/loop.c
-index 637c5bda2387..cbefd23beb44 100644
+index 9f2d412fc560..1fefc6a8d049 100644
--- a/drivers/block/loop.c
+++ b/drivers/block/loop.c
@@ -645,6 +645,24 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev,
@@ -79,7 +79,7 @@ index 637c5bda2387..cbefd23beb44 100644
static ssize_t loop_attr_show(struct device *dev, char *page,
diff --git a/fs/dcache.c b/fs/dcache.c
-index 52e6d5fdab6b..519321f32f95 100644
+index 25ac74d30bff..6c930ceed526 100644
--- a/fs/dcache.c
+++ b/fs/dcache.c
@@ -1345,7 +1345,7 @@ enum d_walk_ret {
@@ -92,19 +92,19 @@ index 52e6d5fdab6b..519321f32f95 100644
{
struct dentry *this_parent;
diff --git a/fs/fcntl.c b/fs/fcntl.c
-index b622be119706..9ea58b7bb580 100644
+index e871009f6c88..d62e114c1b1a 100644
--- a/fs/fcntl.c
+++ b/fs/fcntl.c
@@ -34,7 +34,7 @@
#define SETFL_MASK (O_APPEND | O_NONBLOCK | O_NDELAY | O_DIRECT | O_NOATIME)
--static int setfl(int fd, struct file * filp, unsigned long arg)
-+int setfl(int fd, struct file *filp, unsigned long arg)
+-static int setfl(int fd, struct file * filp, unsigned int arg)
++int setfl(int fd, struct file * filp, unsigned int arg)
{
struct inode * inode = file_inode(filp);
int error = 0;
-@@ -64,6 +64,8 @@ static int setfl(int fd, struct file * filp, unsigned long arg)
+@@ -64,6 +64,8 @@ static int setfl(int fd, struct file * filp, unsigned int arg)
if (filp->f_op->check_flags)
error = filp->f_op->check_flags(arg);
@@ -131,10 +131,10 @@ index e157efc54023..6c57487f126b 100644
* vfsmount lock must be held for write
*/
diff --git a/fs/splice.c b/fs/splice.c
-index 3e2a31e1ce6a..a724fe9ccb80 100644
+index d983d375ff11..7216ef993b5f 100644
--- a/fs/splice.c
+++ b/fs/splice.c
-@@ -928,8 +928,8 @@ static int warn_unsupported(struct file *file, const char *op)
+@@ -925,8 +925,8 @@ static int warn_unsupported(struct file *file, const char *op)
/*
* Attempt to initiate a splice from pipe to file.
*/
@@ -146,18 +146,18 @@ index 3e2a31e1ce6a..a724fe9ccb80 100644
if (unlikely(!out->f_op->splice_write))
return warn_unsupported(out, "write");
diff --git a/include/linux/fs.h b/include/linux/fs.h
-index 562f2623c9c9..5a2db7b8eca5 100644
+index 4aeb3fa11927..dd5871d0c429 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
-@@ -1068,6 +1068,7 @@ extern void fasync_free(struct fasync_struct *);
+@@ -1099,6 +1099,7 @@ extern void fasync_free(struct fasync_struct *);
/* can be called from interrupts */
extern void kill_fasync(struct fasync_struct **, int, int);
-+extern int setfl(int fd, struct file *filp, unsigned long arg);
++extern int setfl(int fd, struct file *filp, unsigned int arg);
extern void __f_setown(struct file *filp, struct pid *, enum pid_type, int force);
- extern int f_setown(struct file *filp, unsigned long arg, int force);
+ extern int f_setown(struct file *filp, int who, int force);
extern void f_delown(struct file *filp);
-@@ -1794,6 +1795,7 @@ struct file_operations {
+@@ -1901,6 +1902,7 @@ struct file_operations {
int (*lock) (struct file *, int, struct file_lock *);
unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long);
int (*check_flags)(int);
@@ -166,7 +166,7 @@ index 562f2623c9c9..5a2db7b8eca5 100644
ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, loff_t *, size_t, unsigned int);
ssize_t (*splice_read)(struct file *, loff_t *, struct pipe_inode_info *, size_t, unsigned int);
diff --git a/include/linux/lockdep.h b/include/linux/lockdep.h
-index 310f85903c91..46ff52c1a522 100644
+index dc2844b071c2..069ffb776c2c 100644
--- a/include/linux/lockdep.h
+++ b/include/linux/lockdep.h
@@ -249,6 +249,8 @@ static inline int lockdep_match_key(struct lockdep_map *lock,
@@ -214,7 +214,7 @@ index 6c461573434d..7416cf375ad1 100644
+ unsigned int flags);
#endif
diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c
-index 111607d91489..22af30abc781 100644
+index e85b5ad3e206..db4297f60bd3 100644
--- a/kernel/locking/lockdep.c
+++ b/kernel/locking/lockdep.c
@@ -218,7 +218,7 @@ unsigned long max_lock_class_idx;
@@ -235,10 +235,10 @@ index 111607d91489..22af30abc781 100644
#ifdef CONFIG_LOCK_STAT
static DEFINE_PER_CPU(struct lock_class_stats[MAX_LOCKDEP_KEYS], cpu_lock_stats);
SPDX-License-Identifier: GPL-2.0
-aufs6.5 mmap patch
+aufs6.x-rcN mmap patch
diff --git a/fs/proc/base.c b/fs/proc/base.c
-index 9df3f4839662..102a56aebeef 100644
+index ffd54617c354..29ec720c8038 100644
--- a/fs/proc/base.c
+++ b/fs/proc/base.c
@@ -2218,7 +2218,7 @@ static int map_files_get_link(struct dentry *dentry, struct path *path)
@@ -267,10 +267,10 @@ index 4d3493579458..42edd9a42c78 100644
ino = inode->i_ino;
}
diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c
-index fafff1bd34cd..4387f43addcd 100644
+index 3dd5be96691b..40d9d970b308 100644
--- a/fs/proc/task_mmu.c
+++ b/fs/proc/task_mmu.c
-@@ -285,7 +285,10 @@ show_map_vma(struct seq_file *m, struct vm_area_struct *vma)
+@@ -271,7 +271,10 @@ show_map_vma(struct seq_file *m, struct vm_area_struct *vma)
const char *name = NULL;
if (file) {
@@ -282,7 +282,7 @@ index fafff1bd34cd..4387f43addcd 100644
dev = inode->i_sb->s_dev;
ino = inode->i_ino;
pgoff = ((loff_t)vma->vm_pgoff) << PAGE_SHIFT;
-@@ -1950,7 +1953,7 @@ static int show_numa_map(struct seq_file *m, void *v)
+@@ -1943,7 +1946,7 @@ static int show_numa_map(struct seq_file *m, void *v)
struct proc_maps_private *proc_priv = &numa_priv->proc_maps;
struct vm_area_struct *vma = v;
struct numa_maps *md = &numa_priv->md;
@@ -292,10 +292,10 @@ index fafff1bd34cd..4387f43addcd 100644
struct mempolicy *pol;
char buffer[64];
diff --git a/fs/proc/task_nommu.c b/fs/proc/task_nommu.c
-index 2c8b62265981..9f65138246a8 100644
+index a8ac0dd8041e..9fca456e2259 100644
--- a/fs/proc/task_nommu.c
+++ b/fs/proc/task_nommu.c
-@@ -150,7 +150,10 @@ static int nommu_vma_show(struct seq_file *m, struct vm_area_struct *vma)
+@@ -137,7 +137,10 @@ static int nommu_vma_show(struct seq_file *m, struct vm_area_struct *vma)
file = vma->vm_file;
if (file) {
@@ -308,10 +308,10 @@ index 2c8b62265981..9f65138246a8 100644
ino = inode->i_ino;
pgoff = (loff_t)vma->vm_pgoff << PAGE_SHIFT;
diff --git a/include/linux/mm.h b/include/linux/mm.h
-index 34f9dba17c1a..0f01f02a3112 100644
+index bf5d0b1b16f4..94b956eff452 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
-@@ -2387,6 +2387,43 @@ static inline void unmap_shared_mapping_range(struct address_space *mapping,
+@@ -2409,6 +2409,43 @@ static inline void unmap_shared_mapping_range(struct address_space *mapping,
static inline struct vm_area_struct *vma_lookup(struct mm_struct *mm,
unsigned long addr);
@@ -356,10 +356,10 @@ index 34f9dba17c1a..0f01f02a3112 100644
void *buf, int len, unsigned int gup_flags);
extern int access_remote_vm(struct mm_struct *mm, unsigned long addr,
diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h
-index 7d30dc4ff0ff..5a712268b2d7 100644
+index 36c5b43999e6..ce93e97f76a6 100644
--- a/include/linux/mm_types.h
+++ b/include/linux/mm_types.h
-@@ -449,6 +449,9 @@ struct vm_region {
+@@ -524,6 +524,9 @@ struct vm_region {
unsigned long vm_top; /* region allocated to here */
unsigned long vm_pgoff; /* the offset in vm_file corresponding to vm_start */
struct file *vm_file; /* the backing file or NULL */
@@ -369,7 +369,7 @@ index 7d30dc4ff0ff..5a712268b2d7 100644
int vm_usage; /* region usage count (access under nommu_region_sem) */
bool vm_icache_flushed : 1; /* true if the icache has been flushed for
-@@ -562,6 +565,9 @@ struct vm_area_struct {
+@@ -637,6 +640,9 @@ struct vm_area_struct {
unsigned long vm_pgoff; /* Offset (within vm_file) in PAGE_SIZE
units */
struct file * vm_file; /* File we map to (can be NULL). */
@@ -380,7 +380,7 @@ index 7d30dc4ff0ff..5a712268b2d7 100644
#ifdef CONFIG_ANON_VMA_NAME
diff --git a/kernel/fork.c b/kernel/fork.c
-index d2e12b6d2b18..39da83472c1d 100644
+index 3b6d20dfb9a8..ccad0325cfa9 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -731,7 +731,7 @@ static __latent_entropy int dup_mmap(struct mm_struct *mm,
@@ -393,19 +393,19 @@ index d2e12b6d2b18..39da83472c1d 100644
if (tmp->vm_flags & VM_SHARED)
mapping_allow_writable(mapping);
diff --git a/mm/Makefile b/mm/Makefile
-index 678530a07326..ce3cbfef4a61 100644
+index ec65984e2ade..d59461647ccd 100644
--- a/mm/Makefile
+++ b/mm/Makefile
-@@ -139,3 +139,4 @@ obj-$(CONFIG_IO_MAPPING) += io-mapping.o
+@@ -138,3 +138,4 @@ obj-$(CONFIG_IO_MAPPING) += io-mapping.o
obj-$(CONFIG_HAVE_BOOTMEM_INFO_NODE) += bootmem_info.o
obj-$(CONFIG_GENERIC_IOREMAP) += ioremap.o
obj-$(CONFIG_SHRINKER_DEBUG) += shrinker_debug.o
+obj-y += prfile.o
diff --git a/mm/filemap.c b/mm/filemap.c
-index 9e44a49bbd74..334425b2903b 100644
+index 582f5317ff71..c024ebb30073 100644
--- a/mm/filemap.c
+++ b/mm/filemap.c
-@@ -3580,7 +3580,7 @@ vm_fault_t filemap_page_mkwrite(struct vm_fault *vmf)
+@@ -3599,7 +3599,7 @@ vm_fault_t filemap_page_mkwrite(struct vm_fault *vmf)
vm_fault_t ret = VM_FAULT_LOCKED;
sb_start_pagefault(mapping->host->i_sb);
@@ -415,7 +415,7 @@ index 9e44a49bbd74..334425b2903b 100644
if (folio->mapping != mapping) {
folio_unlock(folio);
diff --git a/mm/mmap.c b/mm/mmap.c
-index 3937479d0e07..db30d8a8cea3 100644
+index b56a7f0c9f85..5eb114409e07 100644
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -140,7 +140,7 @@ static void remove_vma(struct vm_area_struct *vma, bool unreachable)
@@ -427,7 +427,7 @@ index 3937479d0e07..db30d8a8cea3 100644
mpol_put(vma_policy(vma));
if (unreachable)
__vm_area_free(vma);
-@@ -575,7 +575,7 @@ static inline void vma_complete(struct vma_prepare *vp,
+@@ -554,7 +554,7 @@ static inline void vma_complete(struct vma_prepare *vp,
if (vp->file) {
uprobe_munmap(vp->remove, vp->remove->vm_start,
vp->remove->vm_end);
@@ -436,7 +436,7 @@ index 3937479d0e07..db30d8a8cea3 100644
}
if (vp->remove->anon_vma)
anon_vma_merge(vp->vma, vp->remove);
-@@ -2365,7 +2365,7 @@ int __split_vma(struct vma_iterator *vmi, struct vm_area_struct *vma,
+@@ -2364,7 +2364,7 @@ int __split_vma(struct vma_iterator *vmi, struct vm_area_struct *vma,
goto out_free_mpol;
if (new->vm_file)
@@ -445,7 +445,7 @@ index 3937479d0e07..db30d8a8cea3 100644
if (new->vm_ops && new->vm_ops->open)
new->vm_ops->open(new);
-@@ -2778,7 +2778,7 @@ unsigned long mmap_region(struct file *file, unsigned long addr,
+@@ -2781,7 +2781,7 @@ unsigned long mmap_region(struct file *file, unsigned long addr,
* and cause general protection fault
* ultimately.
*/
@@ -454,7 +454,7 @@ index 3937479d0e07..db30d8a8cea3 100644
vm_area_free(vma);
vma = merge;
/* Update vm_flags to pick up the change. */
-@@ -2875,7 +2875,7 @@ unsigned long mmap_region(struct file *file, unsigned long addr,
+@@ -2876,7 +2876,7 @@ unsigned long mmap_region(struct file *file, unsigned long addr,
if (file || vma->vm_file) {
unmap_and_free_vma:
@@ -462,8 +462,8 @@ index 3937479d0e07..db30d8a8cea3 100644
+ vma_fput(vma);
vma->vm_file = NULL;
- /* Undo any partial mapping done by a device driver. */
-@@ -2936,6 +2936,9 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size,
+ vma_iter_set(&vmi, vma->vm_end);
+@@ -2938,6 +2938,9 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size,
unsigned long populate = 0;
unsigned long ret = -EINVAL;
struct file *file;
@@ -473,7 +473,7 @@ index 3937479d0e07..db30d8a8cea3 100644
pr_warn_once("%s (%d) uses deprecated remap_file_pages() syscall. See Documentation/mm/remap_file_pages.rst.\n",
current->comm, current->pid);
-@@ -2994,10 +2997,34 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size,
+@@ -2996,10 +2999,34 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size,
if (vma->vm_flags & VM_LOCKED)
flags |= MAP_LOCKED;
@@ -482,7 +482,7 @@ index 3937479d0e07..db30d8a8cea3 100644
+ file = vma->vm_file;
+ prfile = vma->vm_prfile;
+ ret = do_mmap(vma->vm_file, start, size,
-+ prot, flags, pgoff, &populate, NULL);
++ prot, flags, /*vm_flags*/0, pgoff, &populate, NULL);
+ if (!IS_ERR_VALUE(ret) && file && prfile) {
+ struct vm_area_struct *new_vma;
+
@@ -502,13 +502,13 @@ index 3937479d0e07..db30d8a8cea3 100644
+#else
file = get_file(vma->vm_file);
ret = do_mmap(vma->vm_file, start, size,
- prot, flags, pgoff, &populate, NULL);
+ prot, flags, 0, pgoff, &populate, NULL);
fput(file);
+#endif /* CONFIG_AUFS_FS */
out:
mmap_write_unlock(mm);
if (populate)
-@@ -3342,7 +3369,7 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap,
+@@ -3350,7 +3377,7 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap,
if (anon_vma_clone(new_vma, vma))
goto out_free_mempol;
if (new_vma->vm_file)
@@ -516,8 +516,8 @@ index 3937479d0e07..db30d8a8cea3 100644
+ vma_get_file(new_vma);
if (new_vma->vm_ops && new_vma->vm_ops->open)
new_vma->vm_ops->open(new_vma);
- vma_start_write(new_vma);
-@@ -3358,7 +3385,7 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap,
+ if (vma_link(mm, new_vma))
+@@ -3364,7 +3391,7 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap,
new_vma->vm_ops->close(new_vma);
if (new_vma->vm_file)
@@ -527,7 +527,7 @@ index 3937479d0e07..db30d8a8cea3 100644
unlink_anon_vmas(new_vma);
out_free_mempol:
diff --git a/mm/nommu.c b/mm/nommu.c
-index c072a660ec2c..62e67267f79d 100644
+index 7f9e9e5a0e12..69663f2bd4c4 100644
--- a/mm/nommu.c
+++ b/mm/nommu.c
@@ -523,7 +523,7 @@ static void __put_nommu_region(struct vm_region *region)
@@ -539,7 +539,7 @@ index c072a660ec2c..62e67267f79d 100644
/* IO memory and memory shared directly out of the pagecache
* from ramfs/tmpfs mustn't be released here */
-@@ -602,7 +602,7 @@ static void delete_vma(struct mm_struct *mm, struct vm_area_struct *vma)
+@@ -603,7 +603,7 @@ static void delete_vma(struct mm_struct *mm, struct vm_area_struct *vma)
if (vma->vm_ops && vma->vm_ops->close)
vma->vm_ops->close(vma);
if (vma->vm_file)
@@ -548,7 +548,7 @@ index c072a660ec2c..62e67267f79d 100644
put_nommu_region(vma->vm_region);
vm_area_free(vma);
}
-@@ -1137,7 +1137,7 @@ unsigned long do_mmap(struct file *file,
+@@ -1135,7 +1135,7 @@ unsigned long do_mmap(struct file *file,
goto error_just_free;
}
}
@@ -557,7 +557,7 @@ index c072a660ec2c..62e67267f79d 100644
kmem_cache_free(vm_region_jar, region);
region = pregion;
result = start;
-@@ -1219,10 +1219,10 @@ unsigned long do_mmap(struct file *file,
+@@ -1221,10 +1221,10 @@ unsigned long do_mmap(struct file *file,
error:
vma_iter_free(&vmi);
if (region->vm_file)
@@ -663,10 +663,10 @@ index 000000000000..8f820a235364
+}
+#endif /* !CONFIG_MMU */
SPDX-License-Identifier: GPL-2.0
-aufs6.5 standalone patch
+aufs6.x-rcN standalone patch
diff --git a/fs/dcache.c b/fs/dcache.c
-index 519321f32f95..267e0c65914a 100644
+index 6c930ceed526..576ad162cdec 100644
--- a/fs/dcache.c
+++ b/fs/dcache.c
@@ -1450,6 +1450,7 @@ void d_walk(struct dentry *parent, void *data,
@@ -677,7 +677,7 @@ index 519321f32f95..267e0c65914a 100644
struct check_mount {
struct vfsmount *mnt;
-@@ -3052,6 +3053,7 @@ void d_exchange(struct dentry *dentry1, struct dentry *dentry2)
+@@ -3051,6 +3052,7 @@ void d_exchange(struct dentry *dentry1, struct dentry *dentry2)
write_sequnlock(&rename_lock);
}
@@ -686,7 +686,7 @@ index 519321f32f95..267e0c65914a 100644
/**
* d_ancestor - search for an ancestor
diff --git a/fs/exec.c b/fs/exec.c
-index 1a827d55ba94..d7b12f1e7af2 100644
+index 6518e33ea813..b67efac6a1ad 100644
--- a/fs/exec.c
+++ b/fs/exec.c
@@ -112,6 +112,7 @@ bool path_noexec(const struct path *path)
@@ -698,10 +698,10 @@ index 1a827d55ba94..d7b12f1e7af2 100644
#ifdef CONFIG_USELIB
/*
diff --git a/fs/fcntl.c b/fs/fcntl.c
-index 9ea58b7bb580..99fef189bcd6 100644
+index d62e114c1b1a..ceef001775bd 100644
--- a/fs/fcntl.c
+++ b/fs/fcntl.c
-@@ -87,6 +87,7 @@ int setfl(int fd, struct file *filp, unsigned long arg)
+@@ -87,6 +87,7 @@ int setfl(int fd, struct file * filp, unsigned int arg)
out:
return error;
}
@@ -710,7 +710,7 @@ index 9ea58b7bb580..99fef189bcd6 100644
static void f_modown(struct file *filp, struct pid *pid, enum pid_type type,
int force)
diff --git a/fs/file_table.c b/fs/file_table.c
-index fc7d677ff5ad..a2fbedb58c0a 100644
+index ee21b3da9d08..c45ac36795dd 100644
--- a/fs/file_table.c
+++ b/fs/file_table.c
@@ -225,6 +225,7 @@ struct file *alloc_empty_file(int flags, const struct cred *cred)
@@ -762,7 +762,7 @@ index 1de6631a3925..3008eb37a18d 100644
/*
* Drop a reference to a group. Free it if it's through.
diff --git a/fs/open.c b/fs/open.c
-index e6ead0f19964..1f4deda436ec 100644
+index 98f6601fbac6..8624e4ffa15b 100644
--- a/fs/open.c
+++ b/fs/open.c
@@ -67,6 +67,7 @@ int do_truncate(struct mnt_idmap *idmap, struct dentry *dentry,
@@ -774,7 +774,7 @@ index e6ead0f19964..1f4deda436ec 100644
long vfs_truncate(const struct path *path, loff_t length)
{
diff --git a/fs/read_write.c b/fs/read_write.c
-index b07de77ef126..e07fadb4afe2 100644
+index 4771701c896b..c79270aba792 100644
--- a/fs/read_write.c
+++ b/fs/read_write.c
@@ -477,6 +477,7 @@ ssize_t vfs_read(struct file *file, char __user *buf, size_t count, loff_t *pos)
@@ -794,10 +794,10 @@ index b07de77ef126..e07fadb4afe2 100644
/* file_ppos returns &file->f_pos or NULL if file is stream */
static inline loff_t *file_ppos(struct file *file)
diff --git a/fs/splice.c b/fs/splice.c
-index a724fe9ccb80..ebb2c4ceb598 100644
+index 7216ef993b5f..7ce1f1bc4268 100644
--- a/fs/splice.c
+++ b/fs/splice.c
-@@ -935,6 +935,7 @@ long do_splice_from(struct pipe_inode_info *pipe, struct file *out,
+@@ -932,6 +932,7 @@ long do_splice_from(struct pipe_inode_info *pipe, struct file *out,
return warn_unsupported(out, "write");
return out->f_op->splice_write(pipe, out, ppos, len, flags);
}
@@ -806,7 +806,7 @@ index a724fe9ccb80..ebb2c4ceb598 100644
/*
* Indicate to the caller that there was a premature EOF when reading from the
diff --git a/fs/xattr.c b/fs/xattr.c
-index e7bbb7f57557..edb0190da4d5 100644
+index efd4736bc94b..ce1a2c39ab23 100644
--- a/fs/xattr.c
+++ b/fs/xattr.c
@@ -406,6 +406,7 @@ vfs_getxattr_alloc(struct mnt_idmap *idmap, struct dentry *dentry,
@@ -818,7 +818,7 @@ index e7bbb7f57557..edb0190da4d5 100644
ssize_t
__vfs_getxattr(struct dentry *dentry, struct inode *inode, const char *name,
diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c
-index 22af30abc781..eaf4e02bcb4d 100644
+index db4297f60bd3..9aca18312afb 100644
--- a/kernel/locking/lockdep.c
+++ b/kernel/locking/lockdep.c
@@ -239,6 +239,7 @@ inline struct lock_class *lockdep_hlock_class(struct held_lock *hlock)
@@ -839,10 +839,10 @@ index 065e1ef8fc8d..c623c6f0c645 100644
}
+EXPORT_SYMBOL_GPL(task_work_run);
diff --git a/security/security.c b/security/security.c
-index b720424ca37d..635ee0582e05 100644
+index 23b129d482a7..fca4c5707a1c 100644
--- a/security/security.c
+++ b/security/security.c
-@@ -1711,6 +1711,7 @@ int security_path_rmdir(const struct path *dir, struct dentry *dentry)
+@@ -1750,6 +1750,7 @@ int security_path_rmdir(const struct path *dir, struct dentry *dentry)
return 0;
return call_int_hook(path_rmdir, 0, dir, dentry);
}
@@ -850,7 +850,7 @@ index b720424ca37d..635ee0582e05 100644
/**
* security_path_unlink() - Check if removing a hard link is allowed
-@@ -1746,6 +1747,7 @@ int security_path_symlink(const struct path *dir, struct dentry *dentry,
+@@ -1785,6 +1786,7 @@ int security_path_symlink(const struct path *dir, struct dentry *dentry,
return 0;
return call_int_hook(path_symlink, 0, dir, dentry, old_name);
}
@@ -858,7 +858,7 @@ index b720424ca37d..635ee0582e05 100644
/**
* security_path_link - Check if creating a hard link is allowed
-@@ -1764,6 +1766,7 @@ int security_path_link(struct dentry *old_dentry, const struct path *new_dir,
+@@ -1803,6 +1805,7 @@ int security_path_link(struct dentry *old_dentry, const struct path *new_dir,
return 0;
return call_int_hook(path_link, 0, old_dentry, new_dir, new_dentry);
}
@@ -866,7 +866,7 @@ index b720424ca37d..635ee0582e05 100644
/**
* security_path_rename() - Check if renaming a file is allowed
-@@ -1825,6 +1828,7 @@ int security_path_chmod(const struct path *path, umode_t mode)
+@@ -1864,6 +1867,7 @@ int security_path_chmod(const struct path *path, umode_t mode)
return 0;
return call_int_hook(path_chmod, 0, path, mode);
}
@@ -874,7 +874,7 @@ index b720424ca37d..635ee0582e05 100644
/**
* security_path_chown() - Check if changing the file's owner/group is allowed
-@@ -1842,6 +1846,7 @@ int security_path_chown(const struct path *path, kuid_t uid, kgid_t gid)
+@@ -1881,6 +1885,7 @@ int security_path_chown(const struct path *path, kuid_t uid, kgid_t gid)
return 0;
return call_int_hook(path_chown, 0, path, uid, gid);
}
@@ -882,7 +882,7 @@ index b720424ca37d..635ee0582e05 100644
/**
* security_path_chroot() - Check if changing the root directory is allowed
-@@ -2071,6 +2076,7 @@ int security_inode_permission(struct inode *inode, int mask)
+@@ -2110,6 +2115,7 @@ int security_inode_permission(struct inode *inode, int mask)
return 0;
return call_int_hook(inode_permission, 0, inode, mask);
}
@@ -890,7 +890,7 @@ index b720424ca37d..635ee0582e05 100644
/**
* security_inode_setattr() - Check if setting file attributes is allowed
-@@ -2549,6 +2555,7 @@ int security_file_permission(struct file *file, int mask)
+@@ -2588,6 +2594,7 @@ int security_file_permission(struct file *file, int mask)
return fsnotify_perm(file, mask);
}
@@ -898,7 +898,7 @@ index b720424ca37d..635ee0582e05 100644
/**
* security_file_alloc() - Allocate and init a file's LSM blob
-@@ -2815,6 +2822,7 @@ int security_file_truncate(struct file *file)
+@@ -2854,6 +2861,7 @@ int security_file_truncate(struct file *file)
{
return call_int_hook(file_truncate, 0, file);
}
@@ -4320,7 +4320,7 @@ diff -urN /usr/share/empty/fs/aufs/branch.c linux/fs/aufs/branch.c
+}
diff -urN /usr/share/empty/fs/aufs/branch.h linux/fs/aufs/branch.h
--- /usr/share/empty/fs/aufs/branch.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/branch.h 2023-09-03 02:21:58.856637674 +0200
++++ linux/fs/aufs/branch.h 2023-10-31 09:31:04.196547417 +0100
@@ -0,0 +1,375 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
@@ -4743,7 +4743,7 @@ diff -urN /usr/share/empty/fs/aufs/conf.mk linux/fs/aufs/conf.mk
+-include ${srctree}/${src}/conf_priv.mk
diff -urN /usr/share/empty/fs/aufs/cpup.c linux/fs/aufs/cpup.c
--- /usr/share/empty/fs/aufs/cpup.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/cpup.c 2023-09-03 02:21:58.859971007 +0200
++++ linux/fs/aufs/cpup.c 2023-10-31 09:31:04.196547417 +0100
@@ -0,0 +1,1459 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
@@ -6310,7 +6310,7 @@ diff -urN /usr/share/empty/fs/aufs/cpup.h linux/fs/aufs/cpup.h
+#endif /* __AUFS_CPUP_H__ */
diff -urN /usr/share/empty/fs/aufs/dbgaufs.c linux/fs/aufs/dbgaufs.c
--- /usr/share/empty/fs/aufs/dbgaufs.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/dbgaufs.c 2022-11-05 23:02:18.962555950 +0100
++++ linux/fs/aufs/dbgaufs.c 2023-10-10 22:51:18.033248030 +0200
@@ -0,0 +1,526 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
@@ -6478,7 +6478,7 @@ diff -urN /usr/share/empty/fs/aufs/dbgaufs.c linux/fs/aufs/dbgaufs.c
+ } else {
+#define str "1\n0\n0\n"
+ p->n = sizeof(str) - 1;
-+ strcpy(p->a, str);
++ strscpy(p->a, str, sizeof(str));
+#undef str
+ }
+ si_read_unlock(sb);
@@ -7267,8 +7267,8 @@ diff -urN /usr/share/empty/fs/aufs/dcsub.h linux/fs/aufs/dcsub.h
+#endif /* __AUFS_DCSUB_H__ */
diff -urN /usr/share/empty/fs/aufs/debug.c linux/fs/aufs/debug.c
--- /usr/share/empty/fs/aufs/debug.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/debug.c 2023-09-03 02:21:58.859971007 +0200
-@@ -0,0 +1,446 @@
++++ linux/fs/aufs/debug.c 2023-10-31 09:31:04.196547417 +0100
+@@ -0,0 +1,448 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2005-2022 Junjiro R. Okajima
@@ -7383,6 +7383,7 @@ diff -urN /usr/share/empty/fs/aufs/debug.c linux/fs/aufs/debug.c
+{
+ char *n = NULL;
+ int l = 0;
++ struct timespec64 ctime;
+
+ if (!inode || IS_ERR(inode)) {
+ dpri("i%d: err %ld\n", bindex, PTR_ERR(inode));
@@ -7397,6 +7398,7 @@ diff -urN /usr/share/empty/fs/aufs/debug.c linux/fs/aufs/debug.c
+ l = wh->d_name.len;
+ }
+
++ ctime = inode_get_ctime(inode);
+ dpri("i%d: %p, i%lu, %s, cnt %d, nl %u, 0%o, sz %llu, blk %llu,"
+ " acl %p, def_acl %p,"
+ " hn %d, ct %lld, np %lu, st 0x%lx, f 0x%x, v %llu, g %x%s%.*s\n",
@@ -7405,7 +7407,7 @@ diff -urN /usr/share/empty/fs/aufs/debug.c linux/fs/aufs/debug.c
+ atomic_read(&inode->i_count), inode->i_nlink, inode->i_mode,
+ i_size_read(inode), (unsigned long long)inode->i_blocks,
+ inode->i_acl, inode->i_default_acl,
-+ hn, (long long)timespec64_to_ns(&inode->i_ctime) & 0x0ffff,
++ hn, (long long)timespec64_to_ns(&ctime) & 0x0ffff,
+ inode->i_mapping ? inode->i_mapping->nrpages : 0,
+ inode->i_state, inode->i_flags, inode_peek_iversion(inode),
+ inode->i_generation,
@@ -7947,7 +7949,7 @@ diff -urN /usr/share/empty/fs/aufs/debug.h linux/fs/aufs/debug.h
+#endif /* __AUFS_DEBUG_H__ */
diff -urN /usr/share/empty/fs/aufs/dentry.c linux/fs/aufs/dentry.c
--- /usr/share/empty/fs/aufs/dentry.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/dentry.c 2023-09-03 02:21:58.859971007 +0200
++++ linux/fs/aufs/dentry.c 2023-10-31 09:31:04.196547417 +0100
@@ -0,0 +1,1168 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
@@ -9119,7 +9121,7 @@ diff -urN /usr/share/empty/fs/aufs/dentry.c linux/fs/aufs/dentry.c
+};
diff -urN /usr/share/empty/fs/aufs/dentry.h linux/fs/aufs/dentry.h
--- /usr/share/empty/fs/aufs/dentry.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/dentry.h 2023-09-03 02:21:58.859971007 +0200
++++ linux/fs/aufs/dentry.h 2023-10-31 09:31:04.196547417 +0100
@@ -0,0 +1,270 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
@@ -9952,7 +9954,7 @@ diff -urN /usr/share/empty/fs/aufs/dinfo.c linux/fs/aufs/dinfo.c
+}
diff -urN /usr/share/empty/fs/aufs/dir.c linux/fs/aufs/dir.c
--- /usr/share/empty/fs/aufs/dir.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/dir.c 2023-09-03 02:21:58.859971007 +0200
++++ linux/fs/aufs/dir.c 2023-10-31 09:31:04.196547417 +0100
@@ -0,0 +1,765 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
@@ -10859,7 +10861,7 @@ diff -urN /usr/share/empty/fs/aufs/dir.h linux/fs/aufs/dir.h
+#endif /* __AUFS_DIR_H__ */
diff -urN /usr/share/empty/fs/aufs/dirren.c linux/fs/aufs/dirren.c
--- /usr/share/empty/fs/aufs/dirren.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/dirren.c 2022-11-05 23:02:18.962555950 +0100
++++ linux/fs/aufs/dirren.c 2023-10-10 22:51:18.033248030 +0200
@@ -0,0 +1,1315 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
@@ -11598,7 +11600,7 @@ diff -urN /usr/share/empty/fs/aufs/dirren.c linux/fs/aufs/dirren.c
+
+ memset(w, 0, sizeof(*w));
+ w->allocated = roundup_pow_of_two(sizeof(*w->fdata) + 40);
-+ strcpy(w->whname, AUFS_WH_DR_INFO_PFX);
++ strscpy(w->whname, AUFS_WH_DR_INFO_PFX, sizeof(AUFS_WH_DR_INFO_PFX));
+ w->infoname = w->whname + sizeof(AUFS_WH_DR_INFO_PFX) - 1;
+ w->infonamelen = sizeof(w->whname) - sizeof(AUFS_WH_DR_INFO_PFX);
+ w->btgt = btgt;
@@ -14037,7 +14039,7 @@ diff -urN /usr/share/empty/fs/aufs/fhsm.c linux/fs/aufs/fhsm.c
+}
diff -urN /usr/share/empty/fs/aufs/file.c linux/fs/aufs/file.c
--- /usr/share/empty/fs/aufs/file.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/file.c 2023-09-04 13:39:55.763295607 +0200
++++ linux/fs/aufs/file.c 2023-10-31 09:31:04.199880750 +0100
@@ -0,0 +1,865 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
@@ -15405,8 +15407,8 @@ diff -urN /usr/share/empty/fs/aufs/finfo.c linux/fs/aufs/finfo.c
+}
diff -urN /usr/share/empty/fs/aufs/f_op.c linux/fs/aufs/f_op.c
--- /usr/share/empty/fs/aufs/f_op.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/f_op.c 2023-09-04 13:39:55.763295607 +0200
-@@ -0,0 +1,769 @@
++++ linux/fs/aufs/f_op.c 2023-10-31 09:31:04.196547417 +0100
+@@ -0,0 +1,771 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2005-2022 Junjiro R. Okajima
@@ -15632,6 +15634,7 @@ diff -urN /usr/share/empty/fs/aufs/f_op.c linux/fs/aufs/f_op.c
+ if (do_ready)
+ au_unpin(&pin);
+ di_read_unlock(dentry, /*flags*/0);
++ vfsub_file_start_write(h_file);
+
+out_fi:
+ fi_write_unlock(file);
@@ -15644,6 +15647,7 @@ diff -urN /usr/share/empty/fs/aufs/f_op.c linux/fs/aufs/f_op.c
+{
+ struct inode *h_inode;
+
++ vfsub_file_end_write(h_file);
+ au_cpup_attr_timesizes(inode);
+ AuDebugOn(au_ibtop(inode) != wpre->btop);
+ h_inode = file_inode(h_file);
@@ -19265,7 +19269,7 @@ diff -urN /usr/share/empty/fs/aufs/iinfo.c linux/fs/aufs/iinfo.c
+}
diff -urN /usr/share/empty/fs/aufs/inode.c linux/fs/aufs/inode.c
--- /usr/share/empty/fs/aufs/inode.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/inode.c 2023-09-03 02:21:58.863304341 +0200
++++ linux/fs/aufs/inode.c 2023-10-31 09:31:04.199880750 +0100
@@ -0,0 +1,531 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
@@ -19800,7 +19804,7 @@ diff -urN /usr/share/empty/fs/aufs/inode.c linux/fs/aufs/inode.c
+}
diff -urN /usr/share/empty/fs/aufs/inode.h linux/fs/aufs/inode.h
--- /usr/share/empty/fs/aufs/inode.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/inode.h 2023-09-03 02:21:58.863304341 +0200
++++ linux/fs/aufs/inode.h 2023-10-31 09:31:04.199880750 +0100
@@ -0,0 +1,707 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
@@ -20735,7 +20739,7 @@ diff -urN /usr/share/empty/fs/aufs/ioctl.c linux/fs/aufs/ioctl.c
+#endif
diff -urN /usr/share/empty/fs/aufs/i_op_add.c linux/fs/aufs/i_op_add.c
--- /usr/share/empty/fs/aufs/i_op_add.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/i_op_add.c 2023-09-04 13:39:55.763295607 +0200
++++ linux/fs/aufs/i_op_add.c 2023-10-31 09:31:04.199880750 +0100
@@ -0,0 +1,972 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
@@ -21563,7 +21567,7 @@ diff -urN /usr/share/empty/fs/aufs/i_op_add.c linux/fs/aufs/i_op_add.c
+ au_dir_ts(dir, a->bdst);
+ inode_inc_iversion(dir);
+ inc_nlink(inode);
-+ inode->i_ctime = dir->i_ctime;
++ inode_set_ctime_to_ts(inode, inode_get_ctime(dir));
+ d_instantiate(dentry, au_igrab(inode));
+ if (d_unhashed(a->h_path.dentry))
+ /* some filesystem calls d_drop() */
@@ -21711,8 +21715,8 @@ diff -urN /usr/share/empty/fs/aufs/i_op_add.c linux/fs/aufs/i_op_add.c
+}
diff -urN /usr/share/empty/fs/aufs/i_op.c linux/fs/aufs/i_op.c
--- /usr/share/empty/fs/aufs/i_op.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/i_op.c 2023-09-03 02:21:58.859971007 +0200
-@@ -0,0 +1,1517 @@
++++ linux/fs/aufs/i_op.c 2023-10-31 09:31:04.199880750 +0100
+@@ -0,0 +1,1516 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2005-2022 Junjiro R. Okajima
@@ -22884,7 +22888,7 @@ diff -urN /usr/share/empty/fs/aufs/i_op.c linux/fs/aufs/i_op.c
+ inode->i_gid = st->gid;
+ inode->i_atime = st->atime;
+ inode->i_mtime = st->mtime;
-+ inode->i_ctime = st->ctime;
++ inode_set_ctime_to_ts(inode, st->ctime);
+
+ au_cpup_attr_nlink(inode, /*force*/0);
+ if (S_ISDIR(inode->i_mode)) {
@@ -23021,7 +23025,7 @@ diff -urN /usr/share/empty/fs/aufs/i_op.c linux/fs/aufs/i_op.c
+ goto out_di;
+
+out_fill:
-+ generic_fillattr(idmap, inode, st);
++ generic_fillattr(idmap, request, inode, st);
+out_di:
+ di_read_unlock(dentry, AuLock_IR);
+out_si:
@@ -23103,8 +23107,7 @@ diff -urN /usr/share/empty/fs/aufs/i_op.c linux/fs/aufs/i_op.c
+ return (inode->i_mode & (S_IFBLK | S_IFCHR | S_IFIFO | S_IFSOCK));
+}
+
-+static int aufs_update_time(struct inode *inode, struct timespec64 *ts,
-+ int flags)
++static int aufs_update_time(struct inode *inode, int flags)
+{
+ int err;
+ aufs_bindex_t bindex;
@@ -23128,7 +23131,7 @@ diff -urN /usr/share/empty/fs/aufs/i_op.c linux/fs/aufs/i_op.c
+ h_mnt = au_sbr_mnt(sb, bindex);
+ err = vfsub_mnt_want_write(h_mnt);
+ if (!err) {
-+ err = vfsub_update_time(h_inode, ts, flags);
++ err = vfsub_update_time(h_inode, flags);
+ vfsub_mnt_drop_write(h_mnt);
+ }
+ } else if (au_is_special(h_inode)) {
@@ -23232,8 +23235,8 @@ diff -urN /usr/share/empty/fs/aufs/i_op.c linux/fs/aufs/i_op.c
+};
diff -urN /usr/share/empty/fs/aufs/i_op_del.c linux/fs/aufs/i_op_del.c
--- /usr/share/empty/fs/aufs/i_op_del.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/i_op_del.c 2023-09-03 02:21:58.859971007 +0200
-@@ -0,0 +1,522 @@
++++ linux/fs/aufs/i_op_del.c 2023-10-31 09:31:04.199880750 +0100
+@@ -0,0 +1,523 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2005-2022 Junjiro R. Okajima
@@ -23513,7 +23516,7 @@ diff -urN /usr/share/empty/fs/aufs/i_op_del.c linux/fs/aufs/i_op_del.c
+
+ inode = d_inode(dentry);
+ d_drop(dentry);
-+ inode->i_ctime = dir->i_ctime;
++ inode_set_ctime_to_ts(inode, inode_get_ctime(dir));
+
+ au_dir_ts(dir, bindex);
+ inode_inc_iversion(dir);
@@ -23549,7 +23552,7 @@ diff -urN /usr/share/empty/fs/aufs/i_op_del.c linux/fs/aufs/i_op_del.c
+{
+ int err;
+ aufs_bindex_t bwh, bindex, btop;
-+ struct inode *inode, *h_dir, *delegated;
++ struct inode *inode, *h_dir, *delegated, *h_inode;
+ struct dentry *parent, *wh_dentry;
+ /* to reduce stack size */
+ struct {
@@ -23615,10 +23618,11 @@ diff -urN /usr/share/empty/fs/aufs/i_op_del.c linux/fs/aufs/i_op_del.c
+ if (bindex == btop) {
+ vfsub_update_h_iattr(&a->h_path, /*did*/NULL);
+ /*ignore*/
-+ inode->i_ctime = d_inode(a->h_path.dentry)->i_ctime;
++ h_inode = d_inode(a->h_path.dentry);
++ inode_set_ctime_to_ts(inode, inode_get_ctime(h_inode));
+ } else
+ /* todo: this timestamp may be reverted later */
-+ inode->i_ctime = h_dir->i_ctime;
++ inode_set_ctime_to_ts(inode, inode_get_ctime(h_dir));
+ goto out_unpin; /* success */
+ }
+
@@ -23758,8 +23762,8 @@ diff -urN /usr/share/empty/fs/aufs/i_op_del.c linux/fs/aufs/i_op_del.c
+}
diff -urN /usr/share/empty/fs/aufs/i_op_ren.c linux/fs/aufs/i_op_ren.c
--- /usr/share/empty/fs/aufs/i_op_ren.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/i_op_ren.c 2023-09-03 02:21:58.863304341 +0200
-@@ -0,0 +1,1257 @@
++++ linux/fs/aufs/i_op_ren.c 2023-10-31 09:31:04.199880750 +0100
+@@ -0,0 +1,1260 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2005-2022 Junjiro R. Okajima
@@ -24128,6 +24132,7 @@ diff -urN /usr/share/empty/fs/aufs/i_op_ren.c linux/fs/aufs/i_op_ren.c
+{
+ int err;
+ struct dentry *d, *h_d;
++ struct inode *h_inode;
+
+ if (!a->exchange) {
+ /* prepare workqueue args for asynchronous rmdir */
@@ -24205,12 +24210,14 @@ diff -urN /usr/share/empty/fs/aufs/i_op_ren.c linux/fs/aufs/i_op_ren.c
+ AuDebugOn(au_dbtop(a->dst_dentry) != a->btgt);
+ a->h_path.dentry = au_h_dptr(a->dst_dentry, a->btgt);
+ vfsub_update_h_iattr(&a->h_path, /*did*/NULL); /*ignore*/
-+ a->dst_inode->i_ctime = d_inode(a->h_path.dentry)->i_ctime;
++ h_inode = d_inode(a->h_path.dentry);
++ inode_set_ctime_to_ts(a->dst_inode, inode_get_ctime(h_inode));
+ }
+ AuDebugOn(au_dbtop(a->src_dentry) != a->btgt);
+ a->h_path.dentry = au_h_dptr(a->src_dentry, a->btgt);
+ vfsub_update_h_iattr(&a->h_path, /*did*/NULL); /*ignore*/
-+ a->src_inode->i_ctime = d_inode(a->h_path.dentry)->i_ctime;
++ h_inode = d_inode(a->h_path.dentry);
++ inode_set_ctime_to_ts(a->src_inode, inode_get_ctime(h_inode));
+
+ if (!a->exchange) {
+ /* remove whiteout for dentry */
@@ -28757,7 +28764,7 @@ diff -urN /usr/share/empty/fs/aufs/poll.c linux/fs/aufs/poll.c
+}
diff -urN /usr/share/empty/fs/aufs/posix_acl.c linux/fs/aufs/posix_acl.c
--- /usr/share/empty/fs/aufs/posix_acl.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/posix_acl.c 2023-09-03 02:21:58.863304341 +0200
++++ linux/fs/aufs/posix_acl.c 2023-10-31 09:31:04.199880750 +0100
@@ -0,0 +1,108 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
@@ -29043,7 +29050,7 @@ diff -urN /usr/share/empty/fs/aufs/procfs.c linux/fs/aufs/procfs.c
+}
diff -urN /usr/share/empty/fs/aufs/rdu.c linux/fs/aufs/rdu.c
--- /usr/share/empty/fs/aufs/rdu.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/rdu.c 2023-09-04 13:39:55.763295607 +0200
++++ linux/fs/aufs/rdu.c 2023-10-31 09:31:04.199880750 +0100
@@ -0,0 +1,384 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
@@ -29840,7 +29847,7 @@ diff -urN /usr/share/empty/fs/aufs/sbinfo.c linux/fs/aufs/sbinfo.c
+}
diff -urN /usr/share/empty/fs/aufs/super.c linux/fs/aufs/super.c
--- /usr/share/empty/fs/aufs/super.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/super.c 2022-11-05 23:02:18.969222617 +0100
++++ linux/fs/aufs/super.c 2023-10-10 22:51:18.033248030 +0200
@@ -0,0 +1,871 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
@@ -29961,7 +29968,7 @@ diff -urN /usr/share/empty/fs/aufs/super.c linux/fs/aufs/super.c
+ return err;
+}
+
-+static void au_gen_fmt(char *fmt, int len __maybe_unused, const char *pat,
++static void au_gen_fmt(char *fmt, int len, const char *pat,
+ const char *append)
+{
+ char *p;
@@ -29970,7 +29977,7 @@ diff -urN /usr/share/empty/fs/aufs/super.c linux/fs/aufs/super.c
+ while (*pat != ':')
+ *p++ = *pat++;
+ *p++ = *pat++;
-+ strcpy(p, append);
++ strscpy(p, append, len - (p - fmt));
+ AuDebugOn(strlen(fmt) >= len);
+}
+
@@ -31311,7 +31318,7 @@ diff -urN /usr/share/empty/fs/aufs/super.h linux/fs/aufs/super.h
+#endif /* __AUFS_SUPER_H__ */
diff -urN /usr/share/empty/fs/aufs/sysaufs.c linux/fs/aufs/sysaufs.c
--- /usr/share/empty/fs/aufs/sysaufs.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/sysaufs.c 2022-11-05 23:02:18.969222617 +0100
++++ linux/fs/aufs/sysaufs.c 2023-10-10 22:51:18.033248030 +0200
@@ -0,0 +1,94 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
@@ -31358,7 +31365,7 @@ diff -urN /usr/share/empty/fs/aufs/sysaufs.c linux/fs/aufs/sysaufs.c
+ .show = sysaufs_si_show
+};
+
-+static struct kobj_type au_sbi_ktype = {
++static const struct kobj_type au_sbi_ktype = {
+ .release = au_si_free,
+ .sysfs_ops = &au_sbi_ops,
+ .default_groups = sysaufs_si_groups
@@ -31893,7 +31900,7 @@ diff -urN /usr/share/empty/fs/aufs/sysfs.c linux/fs/aufs/sysfs.c
+}
diff -urN /usr/share/empty/fs/aufs/sysrq.c linux/fs/aufs/sysrq.c
--- /usr/share/empty/fs/aufs/sysrq.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/sysrq.c 2022-11-05 23:02:18.969222617 +0100
++++ linux/fs/aufs/sysrq.c 2023-10-31 09:31:04.199880750 +0100
@@ -0,0 +1,149 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
@@ -32000,7 +32007,7 @@ diff -urN /usr/share/empty/fs/aufs/sysrq.c linux/fs/aufs/sysrq.c
+module_param_named(sysrq, aufs_sysrq_key, charp, 0444);
+MODULE_PARM_DESC(sysrq, "MagicSysRq key for " AUFS_NAME);
+
-+static void au_sysrq(int key __maybe_unused)
++static void au_sysrq(u8 key __maybe_unused)
+{
+ struct au_sbinfo *sbinfo;
+ struct hlist_bl_node *pos;
@@ -32946,7 +32953,7 @@ diff -urN /usr/share/empty/fs/aufs/vdir.c linux/fs/aufs/vdir.c
+}
diff -urN /usr/share/empty/fs/aufs/vfsub.c linux/fs/aufs/vfsub.c
--- /usr/share/empty/fs/aufs/vfsub.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/vfsub.c 2023-09-04 13:39:55.763295607 +0200
++++ linux/fs/aufs/vfsub.c 2023-10-31 09:31:04.199880750 +0100
@@ -0,0 +1,918 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
@@ -33868,8 +33875,8 @@ diff -urN /usr/share/empty/fs/aufs/vfsub.c linux/fs/aufs/vfsub.c
+}
diff -urN /usr/share/empty/fs/aufs/vfsub.h linux/fs/aufs/vfsub.h
--- /usr/share/empty/fs/aufs/vfsub.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/vfsub.h 2023-09-04 13:39:55.763295607 +0200
-@@ -0,0 +1,390 @@
++++ linux/fs/aufs/vfsub.h 2023-10-31 09:31:04.199880750 +0100
+@@ -0,0 +1,403 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Copyright (C) 2005-2022 Junjiro R. Okajima
@@ -34021,6 +34028,20 @@ diff -urN /usr/share/empty/fs/aufs/vfsub.h linux/fs/aufs/vfsub.h
+}
+#endif
+
++static inline void vfsub_file_start_write(struct file *file)
++{
++ lockdep_off();
++ file_start_write(file);
++ lockdep_on();
++}
++
++static inline void vfsub_file_end_write(struct file *file)
++{
++ lockdep_off();
++ file_end_write(file);
++ lockdep_on();
++}
++
+/* ---------------------------------------------------------------------- */
+
+struct au_hinode;
@@ -34098,10 +34119,9 @@ diff -urN /usr/share/empty/fs/aufs/vfsub.h linux/fs/aufs/vfsub.h
+}
+#endif
+
-+static inline int vfsub_update_time(struct inode *h_inode,
-+ struct timespec64 *ts, int flags)
++static inline int vfsub_update_time(struct inode *h_inode, int flags)
+{
-+ return inode_update_time(h_inode, ts, flags);
++ return inode_update_time(h_inode, flags);
+ /* no vfsub_update_h_iattr() since we don't have struct path */
+}
+
@@ -35096,7 +35116,7 @@ diff -urN /usr/share/empty/fs/aufs/wbr_policy.c linux/fs/aufs/wbr_policy.c
+};
diff -urN /usr/share/empty/fs/aufs/whout.c linux/fs/aufs/whout.c
--- /usr/share/empty/fs/aufs/whout.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/whout.c 2023-09-03 02:21:58.863304341 +0200
++++ linux/fs/aufs/whout.c 2023-10-31 09:31:04.199880750 +0100
@@ -0,0 +1,1072 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
@@ -36172,7 +36192,7 @@ diff -urN /usr/share/empty/fs/aufs/whout.c linux/fs/aufs/whout.c
+}
diff -urN /usr/share/empty/fs/aufs/whout.h linux/fs/aufs/whout.h
--- /usr/share/empty/fs/aufs/whout.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/whout.h 2023-09-03 02:21:58.863304341 +0200
++++ linux/fs/aufs/whout.h 2023-10-31 09:31:04.199880750 +0100
@@ -0,0 +1,87 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
@@ -36732,7 +36752,7 @@ diff -urN /usr/share/empty/fs/aufs/wkq.h linux/fs/aufs/wkq.h
+#endif /* __AUFS_WKQ_H__ */
diff -urN /usr/share/empty/fs/aufs/xattr.c linux/fs/aufs/xattr.c
--- /usr/share/empty/fs/aufs/xattr.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/xattr.c 2023-09-03 02:21:58.863304341 +0200
++++ linux/fs/aufs/xattr.c 2023-10-31 09:31:04.203214083 +0100
@@ -0,0 +1,360 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
@@ -37096,7 +37116,7 @@ diff -urN /usr/share/empty/fs/aufs/xattr.c linux/fs/aufs/xattr.c
+}
diff -urN /usr/share/empty/fs/aufs/xino.c linux/fs/aufs/xino.c
--- /usr/share/empty/fs/aufs/xino.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/xino.c 2023-09-03 02:21:58.863304341 +0200
++++ linux/fs/aufs/xino.c 2023-10-31 09:31:04.203214083 +0100
@@ -0,0 +1,1926 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
@@ -39026,7 +39046,7 @@ diff -urN /usr/share/empty/fs/aufs/xino.c linux/fs/aufs/xino.c
+}
diff -urN /usr/share/empty/include/uapi/linux/aufs_type.h linux/include/uapi/linux/aufs_type.h
--- /usr/share/empty/include/uapi/linux/aufs_type.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux/include/uapi/linux/aufs_type.h 2023-09-04 13:40:14.109962274 +0200
++++ linux/include/uapi/linux/aufs_type.h 2023-10-31 09:31:04.203214083 +0100
@@ -0,0 +1,452 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
+/*
@@ -39070,7 +39090,7 @@ diff -urN /usr/share/empty/include/uapi/linux/aufs_type.h linux/include/uapi/lin
+#include <limits.h>
+#endif /* __KERNEL__ */
+
-+#define AUFS_VERSION "6.5-20230904"
++#define AUFS_VERSION "6.x-rcN-20230925"
+
+/* todo? move this to linux-2.6.19/include/magic.h */
+#define AUFS_SUPER_MAGIC ('a' << 24 | 'u' << 16 | 'f' << 8 | 's')
@@ -39481,10 +39501,10 @@ diff -urN /usr/share/empty/include/uapi/linux/aufs_type.h linux/include/uapi/lin
+
+#endif /* __AUFS_TYPE_H__ */
SPDX-License-Identifier: GPL-2.0
-aufs6.5 loopback patch
+aufs6.x-rcN loopback patch
diff --git a/drivers/block/loop.c b/drivers/block/loop.c
-index cbefd23beb44..53b9f81161d4 100644
+index 1fefc6a8d049..86f1f66305d2 100644
--- a/drivers/block/loop.c
+++ b/drivers/block/loop.c
@@ -54,7 +54,7 @@ struct loop_device {
@@ -39631,10 +39651,10 @@ index cbefd23beb44..53b9f81161d4 100644
static int loop_clr_fd(struct loop_device *lo)
diff --git a/fs/aufs/f_op.c b/fs/aufs/f_op.c
-index 6b9cfc26b56b..e8878a13a0c8 100644
+index fa8a517ffd0c..c18f7bcef81b 100644
--- a/fs/aufs/f_op.c
+++ b/fs/aufs/f_op.c
-@@ -309,7 +309,7 @@ static ssize_t aufs_read_iter(struct kiocb *kio, struct iov_iter *iov_iter)
+@@ -311,7 +311,7 @@ static ssize_t aufs_read_iter(struct kiocb *kio, struct iov_iter *iov_iter)
if (IS_ERR(h_file))
goto out;
@@ -39690,7 +39710,7 @@ index 03d4908a6c03..34d356e181d5 100644
#endif /* __KERNEL__ */
diff --git a/fs/aufs/super.c b/fs/aufs/super.c
-index 81922d4faf54..c8a62c267d72 100644
+index 07d3412e950f..c4a00f620e57 100644
--- a/fs/aufs/super.c
+++ b/fs/aufs/super.c
@@ -758,7 +758,10 @@ const struct super_operations aufs_sop = {
@@ -39706,10 +39726,10 @@ index 81922d4faf54..c8a62c267d72 100644
/* ---------------------------------------------------------------------- */
diff --git a/include/linux/fs.h b/include/linux/fs.h
-index 5a2db7b8eca5..fc74b8e852c3 100644
+index dd5871d0c429..748091221f2d 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
-@@ -1944,6 +1944,11 @@ struct super_operations {
+@@ -2056,6 +2056,11 @@ struct super_operations {
long (*free_cached_objects)(struct super_block *,
struct shrink_control *);
void (*shutdown)(struct super_block *sb);
diff --git a/kernel-multiarch.config b/kernel-multiarch.config
index 6477fd06..9d39e18b 100644
--- a/kernel-multiarch.config
+++ b/kernel-multiarch.config
@@ -16025,3 +16025,66 @@ SND_RPI_SIMPLE_SOUNDCARD arm=m arm64=m
SND_RPI_WM8804_SOUNDCARD arm=m arm64=m
VIDEO_STK1160_COMMON all=m
YOGABOOK_WMI all=m
+RANDOM_KMALLOC_CACHES all=y
+MD_BITMAP_FILE all=y
+NETCONSOLE_EXTENDED_LOG all=y
+NETCONSOLE_PREPEND_RELEASE all=y
+MLX5_MACSEC all=y
+MARVELL_88Q2XXX_PHY all=m
+TOUCHSCREEN_IQS7211 all=m
+PTP_1588_CLOCK_MOCK all=m
+GPIO_DS4520 all=m
+SENSORS_HS3001 all=m
+SENSORS_MP2975_REGULATOR all=y
+MFD_CS42L43_I2C all=m
+MFD_CS42L43_SDW all=m
+REGULATOR_AW37503 all=m
+REGULATOR_MAX77857 all=m
+REGULATOR_RTQ2208 all=m
+INTEL_VSC all=m
+IPU_BRIDGE all=m
+VIDEO_DW9719 all=m
+DRM_LOONGSON all=m
+FB_DEVICE all=y
+SND_HDA_SCODEC_CS35L56_I2C all=m
+SND_HDA_SCODEC_CS35L56_SPI all=m
+SND_HDA_SCODEC_TAS2781_I2C all=m
+SND_SOC_INTEL_AVS_MACH_ES8336 all=m
+SND_SOC_INTEL_AVS_MACH_RT5663 all=m
+SND_SOC_SOF_AMD_VANGOGH all=m
+SND_SOC_SOF_LUNARLAKE all=m
+SND_SOC_AUDIO_IIO_AUX all=m
+SND_SOC_AW88261 all=m
+SND_SOC_CS42L43 all=m
+SND_SOC_CS42L43_SDW all=m
+SND_SOC_RT1017_SDCA_SDW all=m
+HID_GOOGLE_STADIA_FF all=m
+USB_CONFIGFS_F_MIDI2 all=y
+LEDS_PCA995X all=m
+LEDS_SIEMENS_SIMATIC_IPC_ELKHARTLAKE all=m
+XILINX_DMA all=m
+VFIO_DEVICE_CDEV all=y
+VFIO_GROUP all=y
+PDS_VFIO_PCI all=m
+XEN_PRIVCMD_IRQFD all=y
+HP_BIOSCFG all=m
+SIEMENS_SIMATIC_IPC_BATT all=m
+SIEMENS_SIMATIC_IPC_BATT_APOLLOLAKE all=m
+SIEMENS_SIMATIC_IPC_BATT_ELKHARTLAKE all=m
+SIEMENS_SIMATIC_IPC_BATT_F7188X all=m
+SEL3350_PLATFORM all=m
+MCP4728 all=m
+IRSD200 all=m
+XFS_ONLINE_SCRUB_STATS all=y
+XFS_ASSERT_FATAL all=y
+OVERLAY_FS_DEBUG all=n
+TMPFS_QUOTA all=y
+PSTORE_COMPRESS all=y
+EROFS_FS_ZIP_DEFLATE all=y
+SECURITY_SELINUX_DEBUG all=n
+LIST_HARDENED all=y
+SWIOTLB_DYNAMIC all=y
+DMA_NUMA_CMA all=y
+PINCTRL_CS42L43 all=m
+SPI_CS42L43 all=m
+
diff --git a/kernel-x86.config b/kernel-x86.config
index 176a5b30..ff87a25b 100644
--- a/kernel-x86.config
+++ b/kernel-x86.config
@@ -262,3 +262,4 @@ X86_SPEEDSTEP_RELAXED_CAP_CHECK i386=y
#-
BOOTPARAM_HOTPLUG_CPU0 all=n
DEBUG_HOTPLUG_CPU0 all=n
+X86_USER_SHADOW_STACK all=y
diff --git a/update-source.sh b/update-source.sh
index 14ba0556..cf43b047 100755
--- a/update-source.sh
+++ b/update-source.sh
@@ -1,8 +1,8 @@
#!/bin/sh
set -xe
-BRANCH=aufs6.5
-#BRANCH=aufs6.x-rcN
+#BRANCH=aufs6.5
+BRANCH=aufs6.x-rcN
# aufs6
[ -d aufs-standalone ] || git clone https://github.com/sfjro/aufs-standalone.git
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/kernel.git/commitdiff/631230db6544ecf092f86ef1f8efa510c0cc9d12
More information about the pld-cvs-commit
mailing list