[packages/kernel] Up to 5.15.0.
arekm
arekm at pld-linux.org
Tue Nov 2 11:18:09 CET 2021
commit 758e9dad9651b5d1bad74f209dd0633e7a713660
Author: Arkadiusz Miśkiewicz <arekm at maven.pl>
Date: Tue Nov 2 11:16:28 2021 +0100
Up to 5.15.0.
kernel-aufs5.patch | 683 +++++++++++++++++++++++++-----------------------
kernel-multiarch.config | 230 +++++++++++-----
kernel.spec | 6 +-
update-source.sh | 2 +-
4 files changed, 529 insertions(+), 392 deletions(-)
---
diff --git a/kernel.spec b/kernel.spec
index 215f814e..6042637b 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -66,8 +66,8 @@
%endif
%define rel 1
-%define basever 5.14
-%define postver .15
+%define basever 5.15
+%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/v5.x/linux-%{basever}.tar.xz
-# Source0-md5: a082ef5748b813abca0649dab8be5f52
+# Source0-md5: 071d49ff4e020d58c04f9f3f76d3b594
%if "%{postver}" != ".0"
Patch0: https://www.kernel.org/pub/linux/kernel/v5.x/patch-%{version}.xz
# Patch0-md5: 6e3c6ac02a1f625f5057a2eb6b15565e
diff --git a/kernel-aufs5.patch b/kernel-aufs5.patch
index 7725c4da..968a4006 100644
--- a/kernel-aufs5.patch
+++ b/kernel-aufs5.patch
@@ -1,11 +1,11 @@
SPDX-License-Identifier: GPL-2.0
-aufs5.14 kbuild patch
+aufs5.x-rcN kbuild patch
diff --git a/fs/Kconfig b/fs/Kconfig
-index a7749c126b8e2..12fd57d4aa57e 100644
+index a6313a969bc5f..aca4b89d41a14 100644
--- a/fs/Kconfig
+++ b/fs/Kconfig
-@@ -307,6 +307,7 @@ source "fs/sysv/Kconfig"
+@@ -312,6 +312,7 @@ source "fs/sysv/Kconfig"
source "fs/ufs/Kconfig"
source "fs/erofs/Kconfig"
source "fs/vboxsf/Kconfig"
@@ -14,22 +14,22 @@ index a7749c126b8e2..12fd57d4aa57e 100644
endif # MISC_FILESYSTEMS
diff --git a/fs/Makefile b/fs/Makefile
-index f98f3e691c376..5e9aaa284700e 100644
+index 84c5e4cdfee5a..b4fcdad8412ed 100644
--- a/fs/Makefile
+++ b/fs/Makefile
-@@ -135,3 +135,4 @@ obj-$(CONFIG_EFIVAR_FS) += efivarfs/
+@@ -138,3 +138,4 @@ obj-$(CONFIG_EFIVAR_FS) += efivarfs/
obj-$(CONFIG_EROFS_FS) += erofs/
obj-$(CONFIG_VBOXSF_FS) += vboxsf/
obj-$(CONFIG_ZONEFS_FS) += zonefs/
+obj-$(CONFIG_AUFS_FS) += aufs/
SPDX-License-Identifier: GPL-2.0
-aufs5.14 base patch
+aufs5.x-rcN base patch
diff --git a/MAINTAINERS b/MAINTAINERS
-index d7b4f32875a94..6c23696108031 100644
+index a4a0c2baaf274..cc2119bc60fd1 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
-@@ -3089,6 +3089,19 @@ F: include/uapi/linux/audit.h
+@@ -3122,6 +3122,19 @@ F: include/uapi/linux/audit.h
F: kernel/audit*
F: lib/*audit.c
@@ -50,10 +50,10 @@ index d7b4f32875a94..6c23696108031 100644
M: Miguel Ojeda <ojeda at kernel.org>
S: Maintained
diff --git a/drivers/block/loop.c b/drivers/block/loop.c
-index f0cdff0c5fbf4..e65f941a4181a 100644
+index 7bf4686af774e..a62b132cbd551 100644
--- a/drivers/block/loop.c
+++ b/drivers/block/loop.c
-@@ -810,6 +810,24 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev,
+@@ -811,6 +811,24 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev,
return error;
}
@@ -92,7 +92,7 @@ index cf871a81f4fdc..bc5095b734f58 100644
{
struct dentry *this_parent;
diff --git a/fs/fcntl.c b/fs/fcntl.c
-index f946bec8f1f1b..a44da05bcb9a6 100644
+index 9c6c6a3e2de51..02382fa9bd341 100644
--- a/fs/fcntl.c
+++ b/fs/fcntl.c
@@ -33,7 +33,7 @@
@@ -114,10 +114,10 @@ index f946bec8f1f1b..a44da05bcb9a6 100644
return error;
diff --git a/fs/inode.c b/fs/inode.c
-index c93500d84264d..f24d21236ad01 100644
+index ed0cab8a32db1..7e53985e62e5e 100644
--- a/fs/inode.c
+++ b/fs/inode.c
-@@ -1778,7 +1778,7 @@ EXPORT_SYMBOL(generic_update_time);
+@@ -1782,7 +1782,7 @@ EXPORT_SYMBOL(generic_update_time);
* This does the actual work of updating an inodes time or version. Must have
* had called mnt_want_write() before calling this.
*/
@@ -127,10 +127,10 @@ index c93500d84264d..f24d21236ad01 100644
if (inode->i_op->update_time)
return inode->i_op->update_time(inode, time, flags);
diff --git a/fs/namespace.c b/fs/namespace.c
-index 97adcb5ab5d55..4f543907c8200 100644
+index 659a8f39c61af..1283670737826 100644
--- a/fs/namespace.c
+++ b/fs/namespace.c
-@@ -807,6 +807,12 @@ static inline int check_mnt(struct mount *mnt)
+@@ -808,6 +808,12 @@ static inline int check_mnt(struct mount *mnt)
return mnt->mnt_ns == current->nsproxy->mnt_ns;
}
@@ -185,10 +185,10 @@ index 1373a610dc784..b7b5a0a0df6ff 100644
if (wait)
sync_inodes_sb(sb);
diff --git a/include/linux/fs.h b/include/linux/fs.h
-index 640574294216c..ffeed3ccd2d62 100644
+index e7a633353fd20..376ddf1965aa2 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
-@@ -1335,6 +1335,7 @@ extern void fasync_free(struct fasync_struct *);
+@@ -1381,6 +1381,7 @@ extern void fasync_free(struct fasync_struct *);
/* can be called from interrupts */
extern void kill_fasync(struct fasync_struct **, int, int);
@@ -196,7 +196,7 @@ index 640574294216c..ffeed3ccd2d62 100644
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 void f_delown(struct file *filp);
-@@ -2043,6 +2044,7 @@ struct file_operations {
+@@ -2092,6 +2093,7 @@ struct file_operations {
ssize_t (*sendpage) (struct file *, struct page *, int, size_t, loff_t *, int);
unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long);
int (*check_flags)(int);
@@ -204,7 +204,7 @@ index 640574294216c..ffeed3ccd2d62 100644
int (*flock) (struct file *, int, struct file_lock *);
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);
-@@ -2564,6 +2566,7 @@ extern int current_umask(void);
+@@ -2613,6 +2615,7 @@ extern int current_umask(void);
extern void ihold(struct inode * inode);
extern void iput(struct inode *);
extern int generic_update_time(struct inode *, struct timespec64 *, int);
@@ -212,7 +212,7 @@ index 640574294216c..ffeed3ccd2d62 100644
/* /sys/fs */
extern struct kobject *fs_kobj;
-@@ -2810,6 +2813,7 @@ static inline bool sb_is_blkdev_sb(struct super_block *sb)
+@@ -2776,6 +2779,7 @@ static inline bool sb_is_blkdev_sb(struct super_block *sb)
}
void emergency_thaw_all(void);
@@ -221,7 +221,7 @@ index 640574294216c..ffeed3ccd2d62 100644
extern const struct file_operations def_blk_fops;
extern const struct file_operations def_chr_fops;
diff --git a/include/linux/lockdep.h b/include/linux/lockdep.h
-index 5cf3878137549..59b65e1a9e85c 100644
+index 9fe165beb0f9e..e47f7e15eeaf7 100644
--- a/include/linux/lockdep.h
+++ b/include/linux/lockdep.h
@@ -248,6 +248,8 @@ static inline int lockdep_match_key(struct lockdep_map *lock,
@@ -290,13 +290,13 @@ index bf1c00c881e48..e0aaf34974df5 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
-aufs5.14 mmap patch
+aufs5.x-rcN mmap patch
diff --git a/fs/proc/base.c b/fs/proc/base.c
-index e5b5f7709d48f..4394d8c1bdad8 100644
+index 533d5836eb9a4..f5de60c5327f5 100644
--- a/fs/proc/base.c
+++ b/fs/proc/base.c
-@@ -2183,7 +2183,7 @@ static int map_files_get_link(struct dentry *dentry, struct path *path)
+@@ -2186,7 +2186,7 @@ static int map_files_get_link(struct dentry *dentry, struct path *path)
rc = -ENOENT;
vma = find_exact_vma(mm, vm_start, vm_end);
if (vma && vma->vm_file) {
@@ -322,7 +322,7 @@ index 13452b32e2bd5..38acccfef9d49 100644
ino = inode->i_ino;
}
diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c
-index eb97468dfe4ca..570f1003a7dc6 100644
+index cf25be3e03212..70af1c25ffa22 100644
--- a/fs/proc/task_mmu.c
+++ b/fs/proc/task_mmu.c
@@ -280,7 +280,10 @@ show_map_vma(struct seq_file *m, struct vm_area_struct *vma)
@@ -337,7 +337,7 @@ index eb97468dfe4ca..570f1003a7dc6 100644
dev = inode->i_sb->s_dev;
ino = inode->i_ino;
pgoff = ((loff_t)vma->vm_pgoff) << PAGE_SHIFT;
-@@ -1866,7 +1869,7 @@ static int show_numa_map(struct seq_file *m, void *v)
+@@ -1865,7 +1868,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;
@@ -363,10 +363,10 @@ index a6d21fc0033c6..02c2de31196e0 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 7ca22e6e694a8..c7c40fd7f65a6 100644
+index 73a52aba448f9..5dd42acf0707b 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
-@@ -1805,6 +1805,28 @@ static inline void unmap_shared_mapping_range(struct address_space *mapping,
+@@ -1806,6 +1806,28 @@ static inline void unmap_shared_mapping_range(struct address_space *mapping,
unmap_mapping_range(mapping, holebegin, holelen, 0);
}
@@ -396,10 +396,10 @@ index 7ca22e6e694a8..c7c40fd7f65a6 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 52bbd2b7cb465..aeb888d448055 100644
+index 7f8ee09c711f4..3a9a798a4ae1f 100644
--- a/include/linux/mm_types.h
+++ b/include/linux/mm_types.h
-@@ -286,6 +286,7 @@ struct vm_region {
+@@ -294,6 +294,7 @@ 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 */
@@ -407,7 +407,7 @@ index 52bbd2b7cb465..aeb888d448055 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
-@@ -365,6 +366,7 @@ struct vm_area_struct {
+@@ -373,6 +374,7 @@ 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). */
@@ -416,20 +416,20 @@ index 52bbd2b7cb465..aeb888d448055 100644
#ifdef CONFIG_SWAP
diff --git a/kernel/fork.c b/kernel/fork.c
-index 44f4c2d83763f..dc1b528f962ce 100644
+index 38681ad44c76b..95de8e9843192 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
-@@ -559,7 +559,7 @@ static __latent_entropy int dup_mmap(struct mm_struct *mm,
- struct inode *inode = file_inode(file);
+@@ -573,7 +573,7 @@ static __latent_entropy int dup_mmap(struct mm_struct *mm,
+ if (file) {
struct address_space *mapping = file->f_mapping;
- get_file(file);
+ vma_get_file(tmp);
- if (tmp->vm_flags & VM_DENYWRITE)
- put_write_access(inode);
i_mmap_lock_write(mapping);
+ if (tmp->vm_flags & VM_SHARED)
+ mapping_allow_writable(mapping);
diff --git a/mm/Makefile b/mm/Makefile
-index e3436741d5391..0d1dc7789d640 100644
+index fc60a40ce954b..c715b0138237b 100644
--- a/mm/Makefile
+++ b/mm/Makefile
@@ -52,7 +52,7 @@ obj-y := filemap.o mempool.o oom_kill.o fadvise.o \
@@ -442,10 +442,10 @@ index e3436741d5391..0d1dc7789d640 100644
# Give 'page_alloc' its own module-parameter namespace
page-alloc-y := page_alloc.o
diff --git a/mm/filemap.c b/mm/filemap.c
-index d1458ecf2f51e..6ab6b7d72466e 100644
+index dae481293b5d9..52bf3bf87b757 100644
--- a/mm/filemap.c
+++ b/mm/filemap.c
-@@ -3240,7 +3240,7 @@ vm_fault_t filemap_page_mkwrite(struct vm_fault *vmf)
+@@ -3350,7 +3350,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);
@@ -455,10 +455,10 @@ index d1458ecf2f51e..6ab6b7d72466e 100644
if (page->mapping != mapping) {
unlock_page(page);
diff --git a/mm/mmap.c b/mm/mmap.c
-index ca54d36d203ae..43a69a77914f5 100644
+index 88dcc5c252255..6c276614ca962 100644
--- a/mm/mmap.c
+++ b/mm/mmap.c
-@@ -185,7 +185,7 @@ static struct vm_area_struct *remove_vma(struct vm_area_struct *vma)
+@@ -183,7 +183,7 @@ static struct vm_area_struct *remove_vma(struct vm_area_struct *vma)
if (vma->vm_ops && vma->vm_ops->close)
vma->vm_ops->close(vma);
if (vma->vm_file)
@@ -467,7 +467,7 @@ index ca54d36d203ae..43a69a77914f5 100644
mpol_put(vma_policy(vma));
vm_area_free(vma);
return next;
-@@ -955,7 +955,7 @@ int __vma_adjust(struct vm_area_struct *vma, unsigned long start,
+@@ -952,7 +952,7 @@ int __vma_adjust(struct vm_area_struct *vma, unsigned long start,
if (remove_next) {
if (file) {
uprobe_munmap(next, next->vm_start, next->vm_end);
@@ -476,7 +476,7 @@ index ca54d36d203ae..43a69a77914f5 100644
}
if (next->anon_vma)
anon_vma_merge(vma, next);
-@@ -1898,7 +1898,7 @@ unsigned long mmap_region(struct file *file, unsigned long addr,
+@@ -1873,7 +1873,7 @@ unsigned long mmap_region(struct file *file, unsigned long addr,
return addr;
unmap_and_free_vma:
@@ -485,7 +485,7 @@ index ca54d36d203ae..43a69a77914f5 100644
vma->vm_file = NULL;
/* Undo any partial mapping done by a device driver. */
-@@ -2758,7 +2758,7 @@ int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
+@@ -2731,7 +2731,7 @@ int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
goto out_free_mpol;
if (new->vm_file)
@@ -494,7 +494,7 @@ index ca54d36d203ae..43a69a77914f5 100644
if (new->vm_ops && new->vm_ops->open)
new->vm_ops->open(new);
-@@ -2777,7 +2777,7 @@ int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
+@@ -2750,7 +2750,7 @@ int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
if (new->vm_ops && new->vm_ops->close)
new->vm_ops->close(new);
if (new->vm_file)
@@ -503,7 +503,7 @@ index ca54d36d203ae..43a69a77914f5 100644
unlink_anon_vmas(new);
out_free_mpol:
mpol_put(vma_policy(new));
-@@ -2972,7 +2972,7 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size,
+@@ -2945,7 +2945,7 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size,
struct vm_area_struct *vma;
unsigned long populate = 0;
unsigned long ret = -EINVAL;
@@ -512,7 +512,7 @@ index ca54d36d203ae..43a69a77914f5 100644
pr_warn_once("%s (%d) uses deprecated remap_file_pages() syscall. See Documentation/vm/remap_file_pages.rst.\n",
current->comm, current->pid);
-@@ -3031,10 +3031,27 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size,
+@@ -3001,10 +3001,27 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size,
if (vma->vm_flags & VM_LOCKED)
flags |= MAP_LOCKED;
@@ -541,7 +541,7 @@ index ca54d36d203ae..43a69a77914f5 100644
out:
mmap_write_unlock(mm);
if (populate)
-@@ -3315,7 +3332,7 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap,
+@@ -3285,7 +3302,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)
@@ -551,7 +551,7 @@ index ca54d36d203ae..43a69a77914f5 100644
new_vma->vm_ops->open(new_vma);
vma_link(mm, new_vma, prev, rb_link, rb_parent);
diff --git a/mm/nommu.c b/mm/nommu.c
-index 3a93d40548104..501a874fedcb0 100644
+index 02d2427b8f9e8..a7419302ab4ed 100644
--- a/mm/nommu.c
+++ b/mm/nommu.c
@@ -523,7 +523,7 @@ static void __put_nommu_region(struct vm_region *region)
@@ -572,7 +572,7 @@ index 3a93d40548104..501a874fedcb0 100644
put_nommu_region(vma->vm_region);
vm_area_free(vma);
}
-@@ -1178,7 +1178,7 @@ unsigned long do_mmap(struct file *file,
+@@ -1175,7 +1175,7 @@ unsigned long do_mmap(struct file *file,
goto error_just_free;
}
}
@@ -581,7 +581,7 @@ index 3a93d40548104..501a874fedcb0 100644
kmem_cache_free(vm_region_jar, region);
region = pregion;
result = start;
-@@ -1255,10 +1255,10 @@ unsigned long do_mmap(struct file *file,
+@@ -1252,10 +1252,10 @@ unsigned long do_mmap(struct file *file,
up_write(&nommu_region_sem);
error:
if (region->vm_file)
@@ -687,7 +687,7 @@ index 0000000000000..511543ab1b418
+}
+#endif /* !CONFIG_MMU */
SPDX-License-Identifier: GPL-2.0
-aufs5.14 standalone patch
+aufs5.x-rcN standalone patch
diff --git a/fs/dcache.c b/fs/dcache.c
index bc5095b734f58..9508bd57a3bc0 100644
@@ -710,7 +710,7 @@ index bc5095b734f58..9508bd57a3bc0 100644
/**
* d_ancestor - search for an ancestor
diff --git a/fs/exec.c b/fs/exec.c
-index 38f63451b9282..7710637ed0bc9 100644
+index a098c133d8d74..7b6a249fd4778 100644
--- a/fs/exec.c
+++ b/fs/exec.c
@@ -111,6 +111,7 @@ bool path_noexec(const struct path *path)
@@ -722,7 +722,7 @@ index 38f63451b9282..7710637ed0bc9 100644
#ifdef CONFIG_USELIB
/*
diff --git a/fs/fcntl.c b/fs/fcntl.c
-index a44da05bcb9a6..a9cf3ad532923 100644
+index 02382fa9bd341..3418c60b90146 100644
--- a/fs/fcntl.c
+++ b/fs/fcntl.c
@@ -86,6 +86,7 @@ int setfl(int fd, struct file *filp, unsigned long arg)
@@ -754,10 +754,10 @@ index 45437f8e1003e..786af52904fcf 100644
void __init files_init(void)
{
diff --git a/fs/inode.c b/fs/inode.c
-index f24d21236ad01..78de5b5dc0840 100644
+index 7e53985e62e5e..e36c5b2f96df7 100644
--- a/fs/inode.c
+++ b/fs/inode.c
-@@ -1784,6 +1784,7 @@ int update_time(struct inode *inode, struct timespec64 *time, int flags)
+@@ -1788,6 +1788,7 @@ int update_time(struct inode *inode, struct timespec64 *time, int flags)
return inode->i_op->update_time(inode, time, flags);
return generic_update_time(inode, time, flags);
}
@@ -766,10 +766,10 @@ index f24d21236ad01..78de5b5dc0840 100644
/**
* atime_needs_update - update the access time
diff --git a/fs/namespace.c b/fs/namespace.c
-index 4f543907c8200..74d756a79cb72 100644
+index 1283670737826..db99365620118 100644
--- a/fs/namespace.c
+++ b/fs/namespace.c
-@@ -438,6 +438,7 @@ void __mnt_drop_write(struct vfsmount *mnt)
+@@ -439,6 +439,7 @@ void __mnt_drop_write(struct vfsmount *mnt)
mnt_dec_writers(real_mount(mnt));
preempt_enable();
}
@@ -777,7 +777,7 @@ index 4f543907c8200..74d756a79cb72 100644
/**
* mnt_drop_write - give up write access to a mount
-@@ -812,6 +813,7 @@ int is_current_mnt_ns(struct vfsmount *mnt)
+@@ -813,6 +814,7 @@ int is_current_mnt_ns(struct vfsmount *mnt)
{
return check_mnt(real_mount(mnt));
}
@@ -785,7 +785,7 @@ index 4f543907c8200..74d756a79cb72 100644
/*
* vfsmount lock must be held for write
-@@ -2018,6 +2020,7 @@ int iterate_mounts(int (*f)(struct vfsmount *, void *), void *arg,
+@@ -2011,6 +2013,7 @@ int iterate_mounts(int (*f)(struct vfsmount *, void *), void *arg,
}
return 0;
}
@@ -806,7 +806,7 @@ index fb89c351295d6..460ad19c2570a 100644
/*
* Drop a reference to a group. Free it if it's through.
diff --git a/fs/open.c b/fs/open.c
-index 94bef26ff1b61..33412587d76dd 100644
+index daa324606a41f..0d8bb2f1922a3 100644
--- a/fs/open.c
+++ b/fs/open.c
@@ -65,6 +65,7 @@ int do_truncate(struct user_namespace *mnt_userns, struct dentry *dentry,
@@ -818,10 +818,10 @@ index 94bef26ff1b61..33412587d76dd 100644
long vfs_truncate(const struct path *path, loff_t length)
{
diff --git a/fs/read_write.c b/fs/read_write.c
-index 9db7adf160d20..8dc93a57a933f 100644
+index af057c57bdc64..76017f8331fbf 100644
--- a/fs/read_write.c
+++ b/fs/read_write.c
-@@ -503,6 +503,7 @@ ssize_t vfs_read(struct file *file, char __user *buf, size_t count, loff_t *pos)
+@@ -492,6 +492,7 @@ ssize_t vfs_read(struct file *file, char __user *buf, size_t count, loff_t *pos)
inc_syscr(current);
return ret;
}
@@ -829,7 +829,7 @@ index 9db7adf160d20..8dc93a57a933f 100644
static ssize_t new_sync_write(struct file *filp, const char __user *buf, size_t len, loff_t *ppos)
{
-@@ -613,6 +614,7 @@ ssize_t vfs_write(struct file *file, const char __user *buf, size_t count, loff_
+@@ -602,6 +603,7 @@ ssize_t vfs_write(struct file *file, const char __user *buf, size_t count, loff_
file_end_write(file);
return ret;
}
@@ -972,7 +972,7 @@ index 9ffa9e9c5c554..83b533a3fb8e8 100644
{
diff -urN /usr/share/empty/Documentation/ABI/testing/debugfs-aufs linux/Documentation/ABI/testing/debugfs-aufs
--- /usr/share/empty/Documentation/ABI/testing/debugfs-aufs 1970-01-01 01:00:00.000000000 +0100
-+++ linux/Documentation/ABI/testing/debugfs-aufs 2021-05-02 20:15:14.666670785 +0200
++++ linux/Documentation/ABI/testing/debugfs-aufs 2021-11-01 23:48:34.199692595 +0100
@@ -0,0 +1,55 @@
+What: /debug/aufs/si_<id>/
+Date: March 2009
@@ -1031,7 +1031,7 @@ diff -urN /usr/share/empty/Documentation/ABI/testing/debugfs-aufs linux/Document
+ will be empty. About XINO files, see the aufs manual.
diff -urN /usr/share/empty/Documentation/ABI/testing/sysfs-aufs linux/Documentation/ABI/testing/sysfs-aufs
--- /usr/share/empty/Documentation/ABI/testing/sysfs-aufs 1970-01-01 01:00:00.000000000 +0100
-+++ linux/Documentation/ABI/testing/sysfs-aufs 2021-05-02 20:15:14.666670785 +0200
++++ linux/Documentation/ABI/testing/sysfs-aufs 2021-11-01 23:48:34.199692595 +0100
@@ -0,0 +1,31 @@
+What: /sys/fs/aufs/si_<id>/
+Date: March 2009
@@ -1066,7 +1066,7 @@ diff -urN /usr/share/empty/Documentation/ABI/testing/sysfs-aufs linux/Documentat
+ will be empty. About XINO files, see the aufs manual.
diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/01intro.txt linux/Documentation/filesystems/aufs/design/01intro.txt
--- /usr/share/empty/Documentation/filesystems/aufs/design/01intro.txt 1970-01-01 01:00:00.000000000 +0100
-+++ linux/Documentation/filesystems/aufs/design/01intro.txt 2021-09-06 21:02:45.273492232 +0200
++++ linux/Documentation/filesystems/aufs/design/01intro.txt 2021-11-01 23:48:34.199692595 +0100
@@ -0,0 +1,171 @@
+
+# Copyright (C) 2005-2021 Junjiro R. Okajima
@@ -1241,7 +1241,7 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/01intro.txt lin
+about it. But currently I have implemented it in kernel space.
diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/02struct.txt linux/Documentation/filesystems/aufs/design/02struct.txt
--- /usr/share/empty/Documentation/filesystems/aufs/design/02struct.txt 1970-01-01 01:00:00.000000000 +0100
-+++ linux/Documentation/filesystems/aufs/design/02struct.txt 2021-09-06 21:02:45.273492232 +0200
++++ linux/Documentation/filesystems/aufs/design/02struct.txt 2021-11-01 23:48:34.199692595 +0100
@@ -0,0 +1,258 @@
+
+# Copyright (C) 2005-2021 Junjiro R. Okajima
@@ -1503,7 +1503,7 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/02struct.txt li
+For this purpose, use "aumvdown" command in aufs-util.git.
diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/03atomic_open.txt linux/Documentation/filesystems/aufs/design/03atomic_open.txt
--- /usr/share/empty/Documentation/filesystems/aufs/design/03atomic_open.txt 1970-01-01 01:00:00.000000000 +0100
-+++ linux/Documentation/filesystems/aufs/design/03atomic_open.txt 2021-09-06 21:02:45.273492232 +0200
++++ linux/Documentation/filesystems/aufs/design/03atomic_open.txt 2021-11-01 23:48:34.203025928 +0100
@@ -0,0 +1,85 @@
+
+# Copyright (C) 2015-2021 Junjiro R. Okajima
@@ -1592,7 +1592,7 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/03atomic_open.t
+ be implemented in aufs, but not all I am afraid.
diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/03lookup.txt linux/Documentation/filesystems/aufs/design/03lookup.txt
--- /usr/share/empty/Documentation/filesystems/aufs/design/03lookup.txt 1970-01-01 01:00:00.000000000 +0100
-+++ linux/Documentation/filesystems/aufs/design/03lookup.txt 2021-09-06 21:02:45.273492232 +0200
++++ linux/Documentation/filesystems/aufs/design/03lookup.txt 2021-11-01 23:48:34.203025928 +0100
@@ -0,0 +1,113 @@
+
+# Copyright (C) 2005-2021 Junjiro R. Okajima
@@ -1709,7 +1709,7 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/03lookup.txt li
+ by over-mounting something (or another method).
diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/04branch.txt linux/Documentation/filesystems/aufs/design/04branch.txt
--- /usr/share/empty/Documentation/filesystems/aufs/design/04branch.txt 1970-01-01 01:00:00.000000000 +0100
-+++ linux/Documentation/filesystems/aufs/design/04branch.txt 2021-09-06 21:02:45.273492232 +0200
++++ linux/Documentation/filesystems/aufs/design/04branch.txt 2021-11-01 23:48:34.203025928 +0100
@@ -0,0 +1,74 @@
+
+# Copyright (C) 2005-2021 Junjiro R. Okajima
@@ -1787,7 +1787,7 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/04branch.txt li
+ same named entry on the upper branch.
diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/05wbr_policy.txt linux/Documentation/filesystems/aufs/design/05wbr_policy.txt
--- /usr/share/empty/Documentation/filesystems/aufs/design/05wbr_policy.txt 1970-01-01 01:00:00.000000000 +0100
-+++ linux/Documentation/filesystems/aufs/design/05wbr_policy.txt 2021-09-06 21:02:45.273492232 +0200
++++ linux/Documentation/filesystems/aufs/design/05wbr_policy.txt 2021-11-01 23:48:34.203025928 +0100
@@ -0,0 +1,64 @@
+
+# Copyright (C) 2005-2021 Junjiro R. Okajima
@@ -1855,7 +1855,7 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/05wbr_policy.tx
+ copyup policy.
diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/06dirren.dot linux/Documentation/filesystems/aufs/design/06dirren.dot
--- /usr/share/empty/Documentation/filesystems/aufs/design/06dirren.dot 1970-01-01 01:00:00.000000000 +0100
-+++ linux/Documentation/filesystems/aufs/design/06dirren.dot 2021-05-02 20:15:14.670004120 +0200
++++ linux/Documentation/filesystems/aufs/design/06dirren.dot 2021-11-01 23:48:34.203025928 +0100
@@ -0,0 +1,31 @@
+
+// to view this graph, run dot(1) command in GRAPHVIZ.
@@ -1890,7 +1890,7 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/06dirren.dot li
+}
diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/06dirren.txt linux/Documentation/filesystems/aufs/design/06dirren.txt
--- /usr/share/empty/Documentation/filesystems/aufs/design/06dirren.txt 1970-01-01 01:00:00.000000000 +0100
-+++ linux/Documentation/filesystems/aufs/design/06dirren.txt 2021-09-06 21:02:45.273492232 +0200
++++ linux/Documentation/filesystems/aufs/design/06dirren.txt 2021-11-01 23:48:34.203025928 +0100
@@ -0,0 +1,102 @@
+
+# Copyright (C) 2017-2021 Junjiro R. Okajima
@@ -1996,7 +1996,7 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/06dirren.txt li
+equivalen to udba=reval case.
diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/06fhsm.txt linux/Documentation/filesystems/aufs/design/06fhsm.txt
--- /usr/share/empty/Documentation/filesystems/aufs/design/06fhsm.txt 1970-01-01 01:00:00.000000000 +0100
-+++ linux/Documentation/filesystems/aufs/design/06fhsm.txt 2021-09-06 21:02:45.273492232 +0200
++++ linux/Documentation/filesystems/aufs/design/06fhsm.txt 2021-11-01 23:48:34.203025928 +0100
@@ -0,0 +1,120 @@
+
+# Copyright (C) 2011-2021 Junjiro R. Okajima
@@ -2120,7 +2120,7 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/06fhsm.txt linu
+should restore the original file state after an error happens.
diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/06mmap.txt linux/Documentation/filesystems/aufs/design/06mmap.txt
--- /usr/share/empty/Documentation/filesystems/aufs/design/06mmap.txt 1970-01-01 01:00:00.000000000 +0100
-+++ linux/Documentation/filesystems/aufs/design/06mmap.txt 2021-09-06 21:02:45.273492232 +0200
++++ linux/Documentation/filesystems/aufs/design/06mmap.txt 2021-11-01 23:48:34.203025928 +0100
@@ -0,0 +1,72 @@
+
+# Copyright (C) 2005-2021 Junjiro R. Okajima
@@ -2196,7 +2196,7 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/06mmap.txt linu
+I have to give up this "looks-smater" approach.
diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/06xattr.txt linux/Documentation/filesystems/aufs/design/06xattr.txt
--- /usr/share/empty/Documentation/filesystems/aufs/design/06xattr.txt 1970-01-01 01:00:00.000000000 +0100
-+++ linux/Documentation/filesystems/aufs/design/06xattr.txt 2021-09-06 21:02:45.273492232 +0200
++++ linux/Documentation/filesystems/aufs/design/06xattr.txt 2021-11-01 23:48:34.203025928 +0100
@@ -0,0 +1,96 @@
+
+# Copyright (C) 2014-2021 Junjiro R. Okajima
@@ -2296,7 +2296,7 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/06xattr.txt lin
+now, aufs implements the branch attributes to ignore the error.
diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/07export.txt linux/Documentation/filesystems/aufs/design/07export.txt
--- /usr/share/empty/Documentation/filesystems/aufs/design/07export.txt 1970-01-01 01:00:00.000000000 +0100
-+++ linux/Documentation/filesystems/aufs/design/07export.txt 2021-09-06 21:02:45.273492232 +0200
++++ linux/Documentation/filesystems/aufs/design/07export.txt 2021-11-01 23:48:34.203025928 +0100
@@ -0,0 +1,58 @@
+
+# Copyright (C) 2005-2021 Junjiro R. Okajima
@@ -2358,7 +2358,7 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/07export.txt li
+ lookup_one_len(), vfs_getattr(), encode_fh() and others.
diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/08shwh.txt linux/Documentation/filesystems/aufs/design/08shwh.txt
--- /usr/share/empty/Documentation/filesystems/aufs/design/08shwh.txt 1970-01-01 01:00:00.000000000 +0100
-+++ linux/Documentation/filesystems/aufs/design/08shwh.txt 2021-09-06 21:02:45.273492232 +0200
++++ linux/Documentation/filesystems/aufs/design/08shwh.txt 2021-11-01 23:48:34.203025928 +0100
@@ -0,0 +1,52 @@
+
+# Copyright (C) 2005-2021 Junjiro R. Okajima
@@ -2414,7 +2414,7 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/08shwh.txt linu
+initramfs will use it to replace the old one at the next boot.
diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/10dynop.txt linux/Documentation/filesystems/aufs/design/10dynop.txt
--- /usr/share/empty/Documentation/filesystems/aufs/design/10dynop.txt 1970-01-01 01:00:00.000000000 +0100
-+++ linux/Documentation/filesystems/aufs/design/10dynop.txt 2021-09-06 21:02:45.273492232 +0200
++++ linux/Documentation/filesystems/aufs/design/10dynop.txt 2021-11-01 23:48:34.203025928 +0100
@@ -0,0 +1,47 @@
+
+# Copyright (C) 2010-2021 Junjiro R. Okajima
@@ -2465,7 +2465,7 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/10dynop.txt lin
+regular files only.
diff -urN /usr/share/empty/Documentation/filesystems/aufs/README linux/Documentation/filesystems/aufs/README
--- /usr/share/empty/Documentation/filesystems/aufs/README 1970-01-01 01:00:00.000000000 +0100
-+++ linux/Documentation/filesystems/aufs/README 2021-08-24 09:59:43.048691434 +0200
++++ linux/Documentation/filesystems/aufs/README 2021-11-01 23:48:34.199692595 +0100
@@ -0,0 +1,396 @@
+
+Aufs5 -- advanced multi layered unification filesystem version 5.x
@@ -2865,7 +2865,7 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/README linux/Documenta
+# End: ;
diff -urN /usr/share/empty/fs/aufs/aufs.h linux/fs/aufs/aufs.h
--- /usr/share/empty/fs/aufs/aufs.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/aufs.h 2021-09-06 21:02:45.273492232 +0200
++++ linux/fs/aufs/aufs.h 2021-11-01 23:48:34.203025928 +0100
@@ -0,0 +1,62 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
@@ -2931,7 +2931,7 @@ diff -urN /usr/share/empty/fs/aufs/aufs.h linux/fs/aufs/aufs.h
+#endif /* __AUFS_H__ */
diff -urN /usr/share/empty/fs/aufs/branch.c linux/fs/aufs/branch.c
--- /usr/share/empty/fs/aufs/branch.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/branch.c 2021-09-06 21:02:45.273492232 +0200
++++ linux/fs/aufs/branch.c 2021-11-01 23:48:34.203025928 +0100
@@ -0,0 +1,1427 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
@@ -4362,7 +4362,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 2021-09-06 21:02:45.273492232 +0200
++++ linux/fs/aufs/branch.h 2021-11-01 23:48:34.203025928 +0100
@@ -0,0 +1,375 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
@@ -4741,7 +4741,7 @@ diff -urN /usr/share/empty/fs/aufs/branch.h linux/fs/aufs/branch.h
+#endif /* __AUFS_BRANCH_H__ */
diff -urN /usr/share/empty/fs/aufs/conf.mk linux/fs/aufs/conf.mk
--- /usr/share/empty/fs/aufs/conf.mk 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/conf.mk 2021-05-02 20:15:14.670004120 +0200
++++ linux/fs/aufs/conf.mk 2021-11-01 23:48:34.203025928 +0100
@@ -0,0 +1,40 @@
+# SPDX-License-Identifier: GPL-2.0
+
@@ -4785,8 +4785,8 @@ 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 2021-09-06 21:02:45.273492232 +0200
-@@ -0,0 +1,1457 @@
++++ linux/fs/aufs/cpup.c 2021-11-01 23:48:34.203025928 +0100
+@@ -0,0 +1,1459 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2005-2021 Junjiro R. Okajima
@@ -5534,11 +5534,13 @@ diff -urN /usr/share/empty/fs/aufs/cpup.c linux/fs/aufs/cpup.c
+{
+ int err;
+ struct dentry *dentry, *h_dentry, *h_parent, *parent;
++ struct path h_ppath;
+ struct inode *h_dir;
+ aufs_bindex_t bdst;
+
+ dentry = cpg->dentry;
+ bdst = cpg->bdst;
++ h_ppath.mnt = au_sbr_mnt(dentry->d_sb, bdst);
+ h_dentry = au_h_dptr(dentry, bdst);
+ if (!au_ftest_cpup(cpg->flags, OVERWRITE)) {
+ dget(h_dentry);
@@ -5550,9 +5552,9 @@ diff -urN /usr/share/empty/fs/aufs/cpup.c linux/fs/aufs/cpup.c
+ } else {
+ err = 0;
+ parent = dget_parent(dentry);
-+ h_parent = au_h_dptr(parent, bdst);
++ h_ppath.dentry = au_h_dptr(parent, bdst);
+ dput(parent);
-+ h_path->dentry = vfsub_lkup_one(&dentry->d_name, h_parent);
++ h_path->dentry = vfsub_lkup_one(&dentry->d_name, &h_ppath);
+ if (IS_ERR(h_path->dentry))
+ err = PTR_ERR(h_path->dentry);
+ }
@@ -6246,7 +6248,7 @@ diff -urN /usr/share/empty/fs/aufs/cpup.c linux/fs/aufs/cpup.c
+}
diff -urN /usr/share/empty/fs/aufs/cpup.h linux/fs/aufs/cpup.h
--- /usr/share/empty/fs/aufs/cpup.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/cpup.h 2021-09-06 21:02:45.273492232 +0200
++++ linux/fs/aufs/cpup.h 2021-11-01 23:48:34.203025928 +0100
@@ -0,0 +1,100 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
@@ -6350,7 +6352,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 2021-09-06 21:02:45.273492232 +0200
++++ linux/fs/aufs/dbgaufs.c 2021-11-01 23:48:34.203025928 +0100
@@ -0,0 +1,526 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
@@ -6880,7 +6882,7 @@ diff -urN /usr/share/empty/fs/aufs/dbgaufs.c linux/fs/aufs/dbgaufs.c
+}
diff -urN /usr/share/empty/fs/aufs/dbgaufs.h linux/fs/aufs/dbgaufs.h
--- /usr/share/empty/fs/aufs/dbgaufs.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/dbgaufs.h 2021-09-06 21:02:45.273492232 +0200
++++ linux/fs/aufs/dbgaufs.h 2021-11-01 23:48:34.203025928 +0100
@@ -0,0 +1,53 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
@@ -6937,7 +6939,7 @@ diff -urN /usr/share/empty/fs/aufs/dbgaufs.h linux/fs/aufs/dbgaufs.h
+#endif /* __DBGAUFS_H__ */
diff -urN /usr/share/empty/fs/aufs/dcsub.c linux/fs/aufs/dcsub.c
--- /usr/share/empty/fs/aufs/dcsub.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/dcsub.c 2021-09-06 21:02:45.273492232 +0200
++++ linux/fs/aufs/dcsub.c 2021-11-01 23:48:34.206359262 +0100
@@ -0,0 +1,225 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
@@ -7166,7 +7168,7 @@ diff -urN /usr/share/empty/fs/aufs/dcsub.c linux/fs/aufs/dcsub.c
+}
diff -urN /usr/share/empty/fs/aufs/dcsub.h linux/fs/aufs/dcsub.h
--- /usr/share/empty/fs/aufs/dcsub.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/dcsub.h 2021-09-06 21:02:45.273492232 +0200
++++ linux/fs/aufs/dcsub.h 2021-11-01 23:48:34.206359262 +0100
@@ -0,0 +1,137 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
@@ -7307,8 +7309,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 2021-09-06 21:02:45.273492232 +0200
-@@ -0,0 +1,441 @@
++++ linux/fs/aufs/debug.c 2021-11-01 23:48:34.206359262 +0100
+@@ -0,0 +1,444 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2005-2021 Junjiro R. Okajima
@@ -7694,7 +7696,10 @@ diff -urN /usr/share/empty/fs/aufs/debug.c linux/fs/aufs/debug.c
+ AuDbgDentry(dentry);
+ AuDbgInode(inode);
+ au_debug_off();
-+ BUG();
++ if (au_test_fuse(h_inode->i_sb))
++ WARN_ON_ONCE(1);
++ else
++ BUG();
+ }
+ }
+}
@@ -7752,7 +7757,7 @@ diff -urN /usr/share/empty/fs/aufs/debug.c linux/fs/aufs/debug.c
+}
diff -urN /usr/share/empty/fs/aufs/debug.h linux/fs/aufs/debug.h
--- /usr/share/empty/fs/aufs/debug.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/debug.h 2021-09-06 21:02:45.273492232 +0200
++++ linux/fs/aufs/debug.h 2021-11-01 23:48:34.206359262 +0100
@@ -0,0 +1,226 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
@@ -7982,8 +7987,8 @@ 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 2021-09-06 21:02:45.273492232 +0200
-@@ -0,0 +1,1160 @@
++++ linux/fs/aufs/dentry.c 2021-11-01 23:48:34.206359262 +0100
+@@ -0,0 +1,1169 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2005-2021 Junjiro R. Okajima
@@ -8022,6 +8027,7 @@ diff -urN /usr/share/empty/fs/aufs/dentry.c linux/fs/aufs/dentry.c
+ struct inode *h_inode;
+ struct au_branch *br;
+ struct user_namespace *h_userns;
++ struct path h_path;
+ int wh_found, opq;
+ unsigned char wh_able;
+ const unsigned char allow_neg = !!au_ftest_lkup(args->flags, ALLOW_NEG);
@@ -8030,10 +8036,12 @@ diff -urN /usr/share/empty/fs/aufs/dentry.c linux/fs/aufs/dentry.c
+
+ wh_found = 0;
+ br = au_sbr(dentry->d_sb, bindex);
++ h_path.dentry = h_parent;
++ h_path.mnt = au_br_mnt(br);
+ h_userns = au_br_userns(br);
+ wh_able = !!au_br_whable(br->br_perm);
+ if (wh_able)
-+ wh_found = au_wh_test(h_userns, h_parent, &args->whname,
++ wh_found = au_wh_test(h_userns, &h_path, &args->whname,
+ ignore_perm);
+ h_dentry = ERR_PTR(wh_found);
+ if (!wh_found)
@@ -8049,9 +8057,9 @@ diff -urN /usr/share/empty/fs/aufs/dentry.c linux/fs/aufs/dentry.c
+
+real_lookup:
+ if (!ignore_perm)
-+ h_dentry = vfsub_lkup_one(args->name, h_parent);
++ h_dentry = vfsub_lkup_one(args->name, &h_path);
+ else
-+ h_dentry = au_sio_lkup_one(h_userns, args->name, h_parent);
++ h_dentry = au_sio_lkup_one(h_userns, args->name, &h_path);
+ if (IS_ERR(h_dentry)) {
+ if (PTR_ERR(h_dentry) == -ENAMETOOLONG
+ && !allow_neg)
@@ -8085,8 +8093,9 @@ diff -urN /usr/share/empty/fs/aufs/dentry.c linux/fs/aufs/dentry.c
+ || (d_really_is_positive(dentry) && !d_is_dir(dentry)))
+ goto out; /* success */
+
++ h_path.dentry = h_dentry;
+ inode_lock_shared_nested(h_inode, AuLsc_I_CHILD);
-+ opq = au_diropq_test(h_userns, h_dentry);
++ opq = au_diropq_test(h_userns, &h_path);
+ inode_unlock_shared(h_inode);
+ if (opq > 0)
+ au_set_dbdiropq(dentry, bindex);
@@ -8232,18 +8241,18 @@ diff -urN /usr/share/empty/fs/aufs/dentry.c linux/fs/aufs/dentry.c
+}
+
+struct dentry *au_sio_lkup_one(struct user_namespace *userns, struct qstr *name,
-+ struct dentry *parent)
++ struct path *ppath)
+{
+ struct dentry *dentry;
+ int wkq_err;
+
-+ if (!au_test_h_perm_sio(userns, d_inode(parent), MAY_EXEC))
-+ dentry = vfsub_lkup_one(name, parent);
++ if (!au_test_h_perm_sio(userns, d_inode(ppath->dentry), MAY_EXEC))
++ dentry = vfsub_lkup_one(name, ppath);
+ else {
+ struct vfsub_lkup_one_args args = {
+ .errp = &dentry,
+ .name = name,
-+ .parent = parent
++ .ppath = ppath
+ };
+
+ wkq_err = au_wkq_wait(vfsub_call_lkup_one, &args);
@@ -8260,18 +8269,20 @@ diff -urN /usr/share/empty/fs/aufs/dentry.c linux/fs/aufs/dentry.c
+int au_lkup_neg(struct dentry *dentry, aufs_bindex_t bindex, int wh)
+{
+ int err;
-+ struct dentry *parent, *h_parent, *h_dentry;
++ struct dentry *parent, *h_dentry;
+ struct au_branch *br;
+ struct user_namespace *h_userns;
++ struct path h_ppath;
+
+ parent = dget_parent(dentry);
-+ h_parent = au_h_dptr(parent, bindex);
+ br = au_sbr(dentry->d_sb, bindex);
++ h_ppath.dentry = au_h_dptr(parent, bindex);
++ h_ppath.mnt = au_br_mnt(br);
+ h_userns = au_br_userns(br);
+ if (wh)
-+ h_dentry = au_whtmp_lkup(h_parent, br, &dentry->d_name);
++ h_dentry = au_whtmp_lkup(h_ppath.dentry, br, &dentry->d_name);
+ else
-+ h_dentry = au_sio_lkup_one(h_userns, &dentry->d_name, h_parent);
++ h_dentry = au_sio_lkup_one(h_userns, &dentry->d_name, &h_ppath);
+ err = PTR_ERR(h_dentry);
+ if (IS_ERR(h_dentry))
+ goto out;
@@ -8346,6 +8357,7 @@ diff -urN /usr/share/empty/fs/aufs/dentry.c linux/fs/aufs/dentry.c
+ struct inode *h_inode;
+ struct dentry *h_d;
+ struct super_block *h_sb;
++ struct path h_ppath;
+
+ err = 0;
+ memset(&ia, -1, sizeof(ia));
@@ -8360,7 +8372,9 @@ diff -urN /usr/share/empty/fs/aufs/dentry.c linux/fs/aufs/dentry.c
+ goto out;
+
+ /* main purpose is namei.c:cached_lookup() and d_revalidate */
-+ h_d = vfsub_lkup_one(&h_dentry->d_name, h_parent);
++ h_ppath.dentry = h_parent;
++ h_ppath.mnt = au_br_mnt(br);
++ h_d = vfsub_lkup_one(&h_dentry->d_name, &h_ppath);
+ err = PTR_ERR(h_d);
+ if (IS_ERR(h_d))
+ goto out;
@@ -9146,7 +9160,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 2021-09-06 21:02:45.276825587 +0200
++++ linux/fs/aufs/dentry.h 2021-11-01 23:48:34.206359262 +0100
@@ -0,0 +1,269 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
@@ -9224,7 +9238,7 @@ diff -urN /usr/share/empty/fs/aufs/dentry.h linux/fs/aufs/dentry.h
+extern const struct dentry_operations aufs_dop, aufs_dop_noreval;
+struct au_branch;
+struct dentry *au_sio_lkup_one(struct user_namespace *userns, struct qstr *name,
-+ struct dentry *parent);
++ struct path *ppath);
+int au_h_verify(struct dentry *h_dentry, unsigned int udba, struct inode *h_dir,
+ struct dentry *h_parent, struct au_branch *br);
+
@@ -9419,7 +9433,7 @@ diff -urN /usr/share/empty/fs/aufs/dentry.h linux/fs/aufs/dentry.h
+#endif /* __AUFS_DENTRY_H__ */
diff -urN /usr/share/empty/fs/aufs/dinfo.c linux/fs/aufs/dinfo.c
--- /usr/share/empty/fs/aufs/dinfo.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/dinfo.c 2021-09-06 21:02:45.276825587 +0200
++++ linux/fs/aufs/dinfo.c 2021-11-01 23:48:34.206359262 +0100
@@ -0,0 +1,554 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
@@ -9977,7 +9991,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 2021-09-06 21:02:45.276825587 +0200
++++ linux/fs/aufs/dir.c 2021-11-01 23:48:34.206359262 +0100
@@ -0,0 +1,765 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
@@ -10746,7 +10760,7 @@ diff -urN /usr/share/empty/fs/aufs/dir.c linux/fs/aufs/dir.c
+};
diff -urN /usr/share/empty/fs/aufs/dir.h linux/fs/aufs/dir.h
--- /usr/share/empty/fs/aufs/dir.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/dir.h 2021-09-06 21:02:45.276825587 +0200
++++ linux/fs/aufs/dir.h 2021-11-01 23:48:34.206359262 +0100
@@ -0,0 +1,134 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
@@ -10884,8 +10898,8 @@ 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 2021-09-06 21:02:45.276825587 +0200
-@@ -0,0 +1,1316 @@
++++ linux/fs/aufs/dirren.c 2021-11-01 23:48:34.206359262 +0100
+@@ -0,0 +1,1315 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2017-2021 Junjiro R. Okajima
@@ -11151,11 +11165,11 @@ diff -urN /usr/share/empty/fs/aufs/dirren.c linux/fs/aufs/dirren.c
+ dir = d_inode(path->dentry);
+ inode_lock_nested(dir, AuLsc_I_CHILD);
+ }
-+ hinopath.dentry = vfsub_lkup_one(&hinoname, path->dentry);
++ hinopath.mnt = path->mnt;
++ hinopath.dentry = vfsub_lkup_one(&hinoname, (struct path *)path);
+ err = PTR_ERR(hinopath.dentry);
+ if (IS_ERR(hinopath.dentry))
+ goto out_unlock;
-+ hinopath.mnt = path->mnt;
+
+ err = 0;
+ flags = O_RDONLY;
@@ -11507,7 +11521,7 @@ diff -urN /usr/share/empty/fs/aufs/dirren.c linux/fs/aufs/dirren.c
+ AuDebugOn(elm
+ && memcmp(elm, page_address(ZERO_PAGE(0)), sizeof(*elm)));
+
-+ infopath.dentry = vfsub_lookup_one_len(w->whname, w->h_ppath.dentry,
++ infopath.dentry = vfsub_lookup_one_len(w->whname, &w->h_ppath,
+ w->whnamelen);
+ AuTraceErrPtr(infopath.dentry);
+ if (IS_ERR(infopath.dentry)) {
@@ -11891,8 +11905,7 @@ diff -urN /usr/share/empty/fs/aufs/dirren.c linux/fs/aufs/dirren.c
+ unlocked = 0;
+ h_dir = d_inode(h_ppath->dentry);
+ inode_lock_shared_nested(h_dir, AuLsc_I_PARENT);
-+ infopath.dentry = vfsub_lookup_one_len(whname, h_ppath->dentry,
-+ whnamelen);
++ infopath.dentry = vfsub_lookup_one_len(whname, h_ppath, whnamelen);
+ if (IS_ERR(infopath.dentry)) {
+ drinfo = (void *)infopath.dentry;
+ goto out;
@@ -12204,7 +12217,7 @@ diff -urN /usr/share/empty/fs/aufs/dirren.c linux/fs/aufs/dirren.c
+}
diff -urN /usr/share/empty/fs/aufs/dirren.h linux/fs/aufs/dirren.h
--- /usr/share/empty/fs/aufs/dirren.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/dirren.h 2021-09-06 21:02:45.276825587 +0200
++++ linux/fs/aufs/dirren.h 2021-11-01 23:48:34.206359262 +0100
@@ -0,0 +1,140 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
@@ -12348,7 +12361,7 @@ diff -urN /usr/share/empty/fs/aufs/dirren.h linux/fs/aufs/dirren.h
+#endif /* __AUFS_DIRREN_H__ */
diff -urN /usr/share/empty/fs/aufs/dynop.c linux/fs/aufs/dynop.c
--- /usr/share/empty/fs/aufs/dynop.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/dynop.c 2021-09-06 21:02:45.276825587 +0200
++++ linux/fs/aufs/dynop.c 2021-11-01 23:48:34.206359262 +0100
@@ -0,0 +1,368 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
@@ -12720,7 +12733,7 @@ diff -urN /usr/share/empty/fs/aufs/dynop.c linux/fs/aufs/dynop.c
+}
diff -urN /usr/share/empty/fs/aufs/dynop.h linux/fs/aufs/dynop.h
--- /usr/share/empty/fs/aufs/dynop.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/dynop.h 2021-09-06 21:02:45.276825587 +0200
++++ linux/fs/aufs/dynop.h 2021-11-01 23:48:34.206359262 +0100
@@ -0,0 +1,77 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
@@ -12801,8 +12814,8 @@ diff -urN /usr/share/empty/fs/aufs/dynop.h linux/fs/aufs/dynop.h
+#endif /* __AUFS_DYNOP_H__ */
diff -urN /usr/share/empty/fs/aufs/export.c linux/fs/aufs/export.c
--- /usr/share/empty/fs/aufs/export.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/export.c 2021-09-06 21:02:45.276825587 +0200
-@@ -0,0 +1,837 @@
++++ linux/fs/aufs/export.c 2021-11-01 23:48:34.206359262 +0100
+@@ -0,0 +1,831 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2005-2021 Junjiro R. Okajima
@@ -13211,7 +13224,7 @@ diff -urN /usr/share/empty/fs/aufs/export.c linux/fs/aufs/export.c
+
+ /* do not call vfsub_lkup_one() */
+ dir = d_inode(parent);
-+ dentry = vfsub_lookup_one_len_unlocked(arg.name, parent, arg.namelen);
++ dentry = vfsub_lookup_one_len_unlocked(arg.name, path, arg.namelen);
+ AuTraceErrPtr(dentry);
+ if (IS_ERR(dentry))
+ goto out_name;
@@ -13599,14 +13612,8 @@ diff -urN /usr/share/empty/fs/aufs/export.c linux/fs/aufs/export.c
+ f = h_inode->i_sb->s_export_op->commit_metadata;
+ if (f)
+ err = f(h_inode);
-+ else {
-+ struct writeback_control wbc = {
-+ .sync_mode = WB_SYNC_ALL,
-+ .nr_to_write = 0 /* metadata only */
-+ };
-+
-+ err = sync_inode(h_inode, &wbc);
-+ }
++ else
++ err = sync_inode_metadata(h_inode, /*wait*/1);
+
+ au_cpup_attr_timesizes(inode);
+ ii_write_unlock(inode);
@@ -13642,7 +13649,7 @@ diff -urN /usr/share/empty/fs/aufs/export.c linux/fs/aufs/export.c
+}
diff -urN /usr/share/empty/fs/aufs/fhsm.c linux/fs/aufs/fhsm.c
--- /usr/share/empty/fs/aufs/fhsm.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/fhsm.c 2021-09-06 21:02:45.276825587 +0200
++++ linux/fs/aufs/fhsm.c 2021-11-01 23:48:34.206359262 +0100
@@ -0,0 +1,427 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
@@ -14073,7 +14080,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 2021-09-06 21:02:45.276825587 +0200
++++ linux/fs/aufs/file.c 2021-11-01 23:48:34.206359262 +0100
@@ -0,0 +1,863 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
@@ -14940,7 +14947,7 @@ diff -urN /usr/share/empty/fs/aufs/file.c linux/fs/aufs/file.c
+};
diff -urN /usr/share/empty/fs/aufs/file.h linux/fs/aufs/file.h
--- /usr/share/empty/fs/aufs/file.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/file.h 2021-09-06 21:02:45.276825587 +0200
++++ linux/fs/aufs/file.h 2021-11-01 23:48:34.206359262 +0100
@@ -0,0 +1,342 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
@@ -15286,7 +15293,7 @@ diff -urN /usr/share/empty/fs/aufs/file.h linux/fs/aufs/file.h
+#endif /* __AUFS_FILE_H__ */
diff -urN /usr/share/empty/fs/aufs/finfo.c linux/fs/aufs/finfo.c
--- /usr/share/empty/fs/aufs/finfo.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/finfo.c 2021-09-06 21:02:45.276825587 +0200
++++ linux/fs/aufs/finfo.c 2021-11-01 23:48:34.206359262 +0100
@@ -0,0 +1,149 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
@@ -15439,7 +15446,7 @@ 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 2021-09-06 21:02:45.276825587 +0200
++++ linux/fs/aufs/f_op.c 2021-11-01 23:48:34.206359262 +0100
@@ -0,0 +1,771 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
@@ -16214,7 +16221,7 @@ diff -urN /usr/share/empty/fs/aufs/f_op.c linux/fs/aufs/f_op.c
+};
diff -urN /usr/share/empty/fs/aufs/fstype.h linux/fs/aufs/fstype.h
--- /usr/share/empty/fs/aufs/fstype.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/fstype.h 2021-09-06 21:02:45.276825587 +0200
++++ linux/fs/aufs/fstype.h 2021-11-01 23:48:34.206359262 +0100
@@ -0,0 +1,401 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
@@ -16619,7 +16626,7 @@ diff -urN /usr/share/empty/fs/aufs/fstype.h linux/fs/aufs/fstype.h
+#endif /* __AUFS_FSTYPE_H__ */
diff -urN /usr/share/empty/fs/aufs/hbl.h linux/fs/aufs/hbl.h
--- /usr/share/empty/fs/aufs/hbl.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/hbl.h 2021-09-06 21:02:45.276825587 +0200
++++ linux/fs/aufs/hbl.h 2021-11-01 23:48:34.206359262 +0100
@@ -0,0 +1,65 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
@@ -16688,7 +16695,7 @@ diff -urN /usr/share/empty/fs/aufs/hbl.h linux/fs/aufs/hbl.h
+#endif /* __AUFS_HBL_H__ */
diff -urN /usr/share/empty/fs/aufs/hfsnotify.c linux/fs/aufs/hfsnotify.c
--- /usr/share/empty/fs/aufs/hfsnotify.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/hfsnotify.c 2021-09-06 21:02:45.276825587 +0200
++++ linux/fs/aufs/hfsnotify.c 2021-11-01 23:48:34.206359262 +0100
@@ -0,0 +1,288 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
@@ -16980,7 +16987,7 @@ diff -urN /usr/share/empty/fs/aufs/hfsnotify.c linux/fs/aufs/hfsnotify.c
+};
diff -urN /usr/share/empty/fs/aufs/hfsplus.c linux/fs/aufs/hfsplus.c
--- /usr/share/empty/fs/aufs/hfsplus.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/hfsplus.c 2021-09-06 21:02:45.276825587 +0200
++++ linux/fs/aufs/hfsplus.c 2021-11-01 23:48:34.206359262 +0100
@@ -0,0 +1,60 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
@@ -17044,7 +17051,7 @@ diff -urN /usr/share/empty/fs/aufs/hfsplus.c linux/fs/aufs/hfsplus.c
+}
diff -urN /usr/share/empty/fs/aufs/hnotify.c linux/fs/aufs/hnotify.c
--- /usr/share/empty/fs/aufs/hnotify.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/hnotify.c 2021-09-06 21:02:45.276825587 +0200
++++ linux/fs/aufs/hnotify.c 2021-11-01 23:48:34.209692595 +0100
@@ -0,0 +1,715 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
@@ -17763,7 +17770,7 @@ diff -urN /usr/share/empty/fs/aufs/hnotify.c linux/fs/aufs/hnotify.c
+}
diff -urN /usr/share/empty/fs/aufs/iinfo.c linux/fs/aufs/iinfo.c
--- /usr/share/empty/fs/aufs/iinfo.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/iinfo.c 2021-09-06 21:02:45.276825587 +0200
++++ linux/fs/aufs/iinfo.c 2021-11-01 23:48:34.209692595 +0100
@@ -0,0 +1,286 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
@@ -18053,7 +18060,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 2021-09-06 21:02:45.276825587 +0200
++++ linux/fs/aufs/inode.c 2021-11-01 23:48:34.209692595 +0100
@@ -0,0 +1,531 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
@@ -18588,7 +18595,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 2021-09-06 21:02:45.276825587 +0200
++++ linux/fs/aufs/inode.h 2021-11-01 23:48:34.209692595 +0100
@@ -0,0 +1,705 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
@@ -18916,7 +18923,7 @@ diff -urN /usr/share/empty/fs/aufs/inode.h linux/fs/aufs/inode.h
+#endif
+
+#ifdef CONFIG_FS_POSIX_ACL
-+struct posix_acl *aufs_get_acl(struct inode *inode, int type);
++struct posix_acl *aufs_get_acl(struct inode *inode, int type, bool rcu);
+int aufs_set_acl(struct user_namespace *userns, struct inode *inode,
+ struct posix_acl *acl, int type);
+#endif
@@ -19297,7 +19304,7 @@ diff -urN /usr/share/empty/fs/aufs/inode.h linux/fs/aufs/inode.h
+#endif /* __AUFS_INODE_H__ */
diff -urN /usr/share/empty/fs/aufs/ioctl.c linux/fs/aufs/ioctl.c
--- /usr/share/empty/fs/aufs/ioctl.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/ioctl.c 2021-09-06 21:02:45.276825587 +0200
++++ linux/fs/aufs/ioctl.c 2021-11-01 23:48:34.209692595 +0100
@@ -0,0 +1,220 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
@@ -19521,7 +19528,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 2021-09-06 21:02:45.276825587 +0200
++++ linux/fs/aufs/i_op_add.c 2021-11-01 23:48:34.209692595 +0100
@@ -0,0 +1,941 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
@@ -20466,7 +20473,7 @@ 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 2021-09-06 21:02:45.276825587 +0200
++++ linux/fs/aufs/i_op.c 2021-11-01 23:48:34.209692595 +0100
@@ -0,0 +1,1513 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
@@ -21983,8 +21990,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 2021-09-06 21:02:45.276825587 +0200
-@@ -0,0 +1,515 @@
++++ linux/fs/aufs/i_op_del.c 2021-11-01 23:48:34.209692595 +0100
+@@ -0,0 +1,522 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2005-2021 Junjiro R. Okajima
@@ -22081,6 +22088,9 @@ diff -urN /usr/share/empty/fs/aufs/i_op_del.c linux/fs/aufs/i_op_del.c
+ umode_t h_mode;
+ struct dentry *h_dentry, *h_latest;
+ struct inode *h_inode;
++ struct path h_ppath;
++ struct super_block *sb;
++ struct au_branch *br;
+ struct user_namespace *h_userns;
+
+ h_dentry = au_h_dptr(dentry, bindex);
@@ -22119,13 +22129,17 @@ diff -urN /usr/share/empty/fs/aufs/i_op_del.c linux/fs/aufs/i_op_del.c
+ * let's try heavy test.
+ */
+ err = -EACCES;
-+ h_userns = au_sbr_userns(dentry->d_sb, bindex);
-+ if (unlikely(!au_opt_test(au_mntflags(dentry->d_sb), DIRPERM1)
++ sb = dentry->d_sb;
++ br = au_sbr(sb, bindex);
++ h_userns = au_br_userns(br);
++ if (unlikely(!au_opt_test(au_mntflags(sb), DIRPERM1)
+ && au_test_h_perm(h_userns, d_inode(h_parent),
+ MAY_EXEC | MAY_WRITE)))
+ goto out;
+
-+ h_latest = au_sio_lkup_one(h_userns, &dentry->d_name, h_parent);
++ h_ppath.dentry = h_parent;
++ h_ppath.mnt = au_br_mnt(br);
++ h_latest = au_sio_lkup_one(h_userns, &dentry->d_name, &h_ppath);
+ err = -EIO;
+ if (IS_ERR(h_latest))
+ goto out;
@@ -22502,8 +22516,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 2021-09-06 21:02:45.276825587 +0200
-@@ -0,0 +1,1251 @@
++++ linux/fs/aufs/i_op_ren.c 2021-11-01 23:48:34.209692595 +0100
+@@ -0,0 +1,1257 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2005-2021 Junjiro R. Okajima
@@ -22656,9 +22670,12 @@ diff -urN /usr/share/empty/fs/aufs/i_op_ren.c linux/fs/aufs/i_op_ren.c
+{
+ int rerr;
+ struct inode *delegated;
++ struct path h_ppath = {
++ .dentry = a->src_h_parent,
++ .mnt = a->h_path.mnt
++ };
+
-+ a->h_path.dentry = vfsub_lkup_one(&a->src_dentry->d_name,
-+ a->src_h_parent);
++ a->h_path.dentry = vfsub_lkup_one(&a->src_dentry->d_name, &h_ppath);
+ rerr = PTR_ERR(a->h_path.dentry);
+ if (IS_ERR(a->h_path.dentry)) {
+ RevertFailure("lkup one %pd", a->src_dentry);
@@ -22685,9 +22702,12 @@ diff -urN /usr/share/empty/fs/aufs/i_op_ren.c linux/fs/aufs/i_op_ren.c
+{
+ int rerr;
+ struct inode *delegated;
++ struct path h_ppath = {
++ .dentry = a->dst_h_parent,
++ .mnt = a->h_path.mnt
++ };
+
-+ a->h_path.dentry = vfsub_lkup_one(&a->dst_dentry->d_name,
-+ a->dst_h_parent);
++ a->h_path.dentry = vfsub_lkup_one(&a->dst_dentry->d_name, &h_ppath);
+ rerr = PTR_ERR(a->h_path.dentry);
+ if (IS_ERR(a->h_path.dentry)) {
+ RevertFailure("lkup one %pd", a->dst_dentry);
@@ -23757,7 +23777,7 @@ diff -urN /usr/share/empty/fs/aufs/i_op_ren.c linux/fs/aufs/i_op_ren.c
+}
diff -urN /usr/share/empty/fs/aufs/Kconfig linux/fs/aufs/Kconfig
--- /usr/share/empty/fs/aufs/Kconfig 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/Kconfig 2021-05-02 20:15:14.670004120 +0200
++++ linux/fs/aufs/Kconfig 2021-11-01 23:48:34.203025928 +0100
@@ -0,0 +1,199 @@
+# SPDX-License-Identifier: GPL-2.0
+config AUFS_FS
@@ -23960,7 +23980,7 @@ diff -urN /usr/share/empty/fs/aufs/Kconfig linux/fs/aufs/Kconfig
+endif
diff -urN /usr/share/empty/fs/aufs/lcnt.h linux/fs/aufs/lcnt.h
--- /usr/share/empty/fs/aufs/lcnt.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/lcnt.h 2021-09-06 21:02:45.276825587 +0200
++++ linux/fs/aufs/lcnt.h 2021-11-01 23:48:34.209692595 +0100
@@ -0,0 +1,186 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
@@ -24150,7 +24170,7 @@ diff -urN /usr/share/empty/fs/aufs/lcnt.h linux/fs/aufs/lcnt.h
+#endif /* __AUFS_LCNT_H__ */
diff -urN /usr/share/empty/fs/aufs/loop.c linux/fs/aufs/loop.c
--- /usr/share/empty/fs/aufs/loop.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/loop.c 2021-09-06 21:02:45.276825587 +0200
++++ linux/fs/aufs/loop.c 2021-11-01 23:48:34.209692595 +0100
@@ -0,0 +1,148 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
@@ -24302,7 +24322,7 @@ diff -urN /usr/share/empty/fs/aufs/loop.c linux/fs/aufs/loop.c
+}
diff -urN /usr/share/empty/fs/aufs/loop.h linux/fs/aufs/loop.h
--- /usr/share/empty/fs/aufs/loop.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/loop.h 2021-09-06 21:02:45.276825587 +0200
++++ linux/fs/aufs/loop.h 2021-11-01 23:48:34.209692595 +0100
@@ -0,0 +1,55 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
@@ -24361,7 +24381,7 @@ diff -urN /usr/share/empty/fs/aufs/loop.h linux/fs/aufs/loop.h
+#endif /* __AUFS_LOOP_H__ */
diff -urN /usr/share/empty/fs/aufs/magic.mk linux/fs/aufs/magic.mk
--- /usr/share/empty/fs/aufs/magic.mk 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/magic.mk 2021-05-02 20:15:14.673337458 +0200
++++ linux/fs/aufs/magic.mk 2021-11-01 23:48:34.209692595 +0100
@@ -0,0 +1,31 @@
+# SPDX-License-Identifier: GPL-2.0
+
@@ -24396,7 +24416,7 @@ diff -urN /usr/share/empty/fs/aufs/magic.mk linux/fs/aufs/magic.mk
+endif
diff -urN /usr/share/empty/fs/aufs/Makefile linux/fs/aufs/Makefile
--- /usr/share/empty/fs/aufs/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/Makefile 2021-05-02 20:15:14.670004120 +0200
++++ linux/fs/aufs/Makefile 2021-11-01 23:48:34.203025928 +0100
@@ -0,0 +1,46 @@
+# SPDX-License-Identifier: GPL-2.0
+
@@ -24446,7 +24466,7 @@ diff -urN /usr/share/empty/fs/aufs/Makefile linux/fs/aufs/Makefile
+aufs-$(CONFIG_AUFS_MAGIC_SYSRQ) += sysrq.o
diff -urN /usr/share/empty/fs/aufs/module.c linux/fs/aufs/module.c
--- /usr/share/empty/fs/aufs/module.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/module.c 2021-09-06 21:02:45.280158943 +0200
++++ linux/fs/aufs/module.c 2021-11-01 23:48:34.209692595 +0100
@@ -0,0 +1,273 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
@@ -24723,7 +24743,7 @@ diff -urN /usr/share/empty/fs/aufs/module.c linux/fs/aufs/module.c
+module_exit(aufs_exit);
diff -urN /usr/share/empty/fs/aufs/module.h linux/fs/aufs/module.h
--- /usr/share/empty/fs/aufs/module.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/module.h 2021-09-06 21:06:28.017703615 +0200
++++ linux/fs/aufs/module.h 2021-11-01 23:48:34.209692595 +0100
@@ -0,0 +1,166 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
@@ -24893,7 +24913,7 @@ diff -urN /usr/share/empty/fs/aufs/module.h linux/fs/aufs/module.h
+#endif /* __AUFS_MODULE_H__ */
diff -urN /usr/share/empty/fs/aufs/mvdown.c linux/fs/aufs/mvdown.c
--- /usr/share/empty/fs/aufs/mvdown.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/mvdown.c 2021-09-06 21:02:45.280158943 +0200
++++ linux/fs/aufs/mvdown.c 2021-11-01 23:48:34.209692595 +0100
@@ -0,0 +1,706 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
@@ -25603,7 +25623,7 @@ diff -urN /usr/share/empty/fs/aufs/mvdown.c linux/fs/aufs/mvdown.c
+}
diff -urN /usr/share/empty/fs/aufs/opts.c linux/fs/aufs/opts.c
--- /usr/share/empty/fs/aufs/opts.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/opts.c 2021-09-06 21:02:45.280158943 +0200
++++ linux/fs/aufs/opts.c 2021-11-01 23:48:34.209692595 +0100
@@ -0,0 +1,1880 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
@@ -27487,7 +27507,7 @@ diff -urN /usr/share/empty/fs/aufs/opts.c linux/fs/aufs/opts.c
+}
diff -urN /usr/share/empty/fs/aufs/opts.h linux/fs/aufs/opts.h
--- /usr/share/empty/fs/aufs/opts.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/opts.h 2021-09-06 21:02:45.280158943 +0200
++++ linux/fs/aufs/opts.h 2021-11-01 23:48:34.209692595 +0100
@@ -0,0 +1,225 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
@@ -27716,7 +27736,7 @@ diff -urN /usr/share/empty/fs/aufs/opts.h linux/fs/aufs/opts.h
+#endif /* __AUFS_OPTS_H__ */
diff -urN /usr/share/empty/fs/aufs/plink.c linux/fs/aufs/plink.c
--- /usr/share/empty/fs/aufs/plink.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/plink.c 2021-09-06 21:02:45.280158943 +0200
++++ linux/fs/aufs/plink.c 2021-11-01 23:48:34.209692595 +0100
@@ -0,0 +1,516 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
@@ -27926,35 +27946,35 @@ diff -urN /usr/share/empty/fs/aufs/plink.c linux/fs/aufs/plink.c
+struct au_do_plink_lkup_args {
+ struct dentry **errp;
+ struct qstr *tgtname;
-+ struct dentry *h_parent;
-+ struct au_branch *br;
++ struct path *h_ppath;
+};
+
+static struct dentry *au_do_plink_lkup(struct qstr *tgtname,
-+ struct dentry *h_parent,
-+ struct au_branch *br)
++ struct path *h_ppath)
+{
+ struct dentry *h_dentry;
+ struct inode *h_inode;
+
-+ h_inode = d_inode(h_parent);
++ h_inode = d_inode(h_ppath->dentry);
+ inode_lock_shared_nested(h_inode, AuLsc_I_CHILD2);
-+ h_dentry = vfsub_lkup_one(tgtname, h_parent);
++ h_dentry = vfsub_lkup_one(tgtname, h_ppath);
+ inode_unlock_shared(h_inode);
++
+ return h_dentry;
+}
+
+static void au_call_do_plink_lkup(void *args)
+{
+ struct au_do_plink_lkup_args *a = args;
-+ *a->errp = au_do_plink_lkup(a->tgtname, a->h_parent, a->br);
++ *a->errp = au_do_plink_lkup(a->tgtname, a->h_ppath);
+}
+
+/* lookup the plink-ed @inode under the branch at @bindex */
+struct dentry *au_plink_lkup(struct inode *inode, aufs_bindex_t bindex)
+{
-+ struct dentry *h_dentry, *h_parent;
++ struct dentry *h_dentry;
+ struct au_branch *br;
++ struct path h_ppath;
+ int wkq_err;
+ char a[PLINK_NAME_LEN];
+ struct qstr tgtname = QSTR_INIT(a, 0);
@@ -27962,40 +27982,39 @@ diff -urN /usr/share/empty/fs/aufs/plink.c linux/fs/aufs/plink.c
+ AuDebugOn(au_plink_maint(inode->i_sb, AuLock_NOPLM));
+
+ br = au_sbr(inode->i_sb, bindex);
-+ h_parent = br->br_wbr->wbr_plink;
++ h_ppath.dentry = br->br_wbr->wbr_plink;
++ h_ppath.mnt = au_br_mnt(br);
+ tgtname.len = plink_name(a, sizeof(a), inode, bindex);
+
+ if (!uid_eq(current_fsuid(), GLOBAL_ROOT_UID)) {
+ struct au_do_plink_lkup_args args = {
+ .errp = &h_dentry,
+ .tgtname = &tgtname,
-+ .h_parent = h_parent,
-+ .br = br
++ .h_ppath = &h_ppath
+ };
+
+ wkq_err = au_wkq_wait(au_call_do_plink_lkup, &args);
+ if (unlikely(wkq_err))
+ h_dentry = ERR_PTR(wkq_err);
+ } else
-+ h_dentry = au_do_plink_lkup(&tgtname, h_parent, br);
++ h_dentry = au_do_plink_lkup(&tgtname, &h_ppath);
+
+ return h_dentry;
+}
+
+/* create a pseudo-link */
-+static int do_whplink(struct qstr *tgt, struct dentry *h_parent,
-+ struct dentry *h_dentry, struct au_branch *br)
++static int do_whplink(struct qstr *tgt, struct path *h_ppath,
++ struct dentry *h_dentry)
+{
+ int err;
-+ struct path h_path = {
-+ .mnt = au_br_mnt(br)
-+ };
++ struct path h_path;
+ struct inode *h_dir, *delegated;
+
-+ h_dir = d_inode(h_parent);
++ h_dir = d_inode(h_ppath->dentry);
+ inode_lock_nested(h_dir, AuLsc_I_CHILD2);
++ h_path.mnt = h_ppath->mnt;
+again:
-+ h_path.dentry = vfsub_lkup_one(tgt, h_parent);
++ h_path.dentry = vfsub_lkup_one(tgt, h_ppath);
+ err = PTR_ERR(h_path.dentry);
+ if (IS_ERR(h_path.dentry))
+ goto out;
@@ -28036,28 +28055,30 @@ diff -urN /usr/share/empty/fs/aufs/plink.c linux/fs/aufs/plink.c
+struct do_whplink_args {
+ int *errp;
+ struct qstr *tgt;
-+ struct dentry *h_parent;
++ struct path *h_ppath;
+ struct dentry *h_dentry;
-+ struct au_branch *br;
+};
+
+static void call_do_whplink(void *args)
+{
+ struct do_whplink_args *a = args;
-+ *a->errp = do_whplink(a->tgt, a->h_parent, a->h_dentry, a->br);
++ *a->errp = do_whplink(a->tgt, a->h_ppath, a->h_dentry);
+}
+
+static int whplink(struct dentry *h_dentry, struct inode *inode,
-+ aufs_bindex_t bindex, struct au_branch *br)
++ aufs_bindex_t bindex)
+{
+ int err, wkq_err;
++ struct au_branch *br;
+ struct au_wbr *wbr;
-+ struct dentry *h_parent;
++ struct path h_ppath;
+ char a[PLINK_NAME_LEN];
+ struct qstr tgtname = QSTR_INIT(a, 0);
+
-+ wbr = au_sbr(inode->i_sb, bindex)->br_wbr;
-+ h_parent = wbr->wbr_plink;
++ br = au_sbr(inode->i_sb, bindex);
++ wbr = br->br_wbr;
++ h_ppath.dentry = wbr->wbr_plink;
++ h_ppath.mnt = au_br_mnt(br);
+ tgtname.len = plink_name(a, sizeof(a), inode, bindex);
+
+ /* always superio. */
@@ -28065,15 +28086,14 @@ diff -urN /usr/share/empty/fs/aufs/plink.c linux/fs/aufs/plink.c
+ struct do_whplink_args args = {
+ .errp = &err,
+ .tgt = &tgtname,
-+ .h_parent = h_parent,
-+ .h_dentry = h_dentry,
-+ .br = br
++ .h_ppath = &h_ppath,
++ .h_dentry = h_dentry
+ };
+ wkq_err = au_wkq_wait(call_do_whplink, &args);
+ if (unlikely(wkq_err))
+ err = wkq_err;
+ } else
-+ err = do_whplink(&tgtname, h_parent, h_dentry, br);
++ err = do_whplink(&tgtname, &h_ppath, h_dentry);
+
+ return err;
+}
@@ -28123,7 +28143,7 @@ diff -urN /usr/share/empty/fs/aufs/plink.c linux/fs/aufs/plink.c
+ if (cnt > AUFS_PLINK_WARN)
+ AuWarn1(msg ", %d\n", cnt);
+#undef msg
-+ err = whplink(h_dentry, inode, bindex, au_sbr(sb, bindex));
++ err = whplink(h_dentry, inode, bindex);
+ if (unlikely(err)) {
+ pr_warn("err %d, damaged pseudo link.\n", err);
+ au_hbl_del(&icntnr->plink, hbl);
@@ -28236,7 +28256,7 @@ diff -urN /usr/share/empty/fs/aufs/plink.c linux/fs/aufs/plink.c
+}
diff -urN /usr/share/empty/fs/aufs/poll.c linux/fs/aufs/poll.c
--- /usr/share/empty/fs/aufs/poll.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/poll.c 2021-09-06 21:02:45.280158943 +0200
++++ linux/fs/aufs/poll.c 2021-11-01 23:48:34.209692595 +0100
@@ -0,0 +1,51 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
@@ -28291,8 +28311,8 @@ 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 2021-09-06 21:02:45.280158943 +0200
-@@ -0,0 +1,106 @@
++++ linux/fs/aufs/posix_acl.c 2021-11-01 23:48:34.209692595 +0100
+@@ -0,0 +1,111 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2014-2021 Junjiro R. Okajima
@@ -28318,7 +28338,7 @@ diff -urN /usr/share/empty/fs/aufs/posix_acl.c linux/fs/aufs/posix_acl.c
+#include <linux/fs.h>
+#include "aufs.h"
+
-+struct posix_acl *aufs_get_acl(struct inode *inode, int type)
++struct posix_acl *aufs_get_acl(struct inode *inode, int type, bool rcu)
+{
+ struct posix_acl *acl;
+ int err;
@@ -28326,12 +28346,16 @@ diff -urN /usr/share/empty/fs/aufs/posix_acl.c linux/fs/aufs/posix_acl.c
+ struct inode *h_inode;
+ struct super_block *sb;
+
++ acl = ERR_PTR(-ECHILD);
++ if (rcu)
++ goto out;
++
+ acl = NULL;
+ sb = inode->i_sb;
+ si_read_lock(sb, AuLock_FLUSH);
+ ii_read_lock_child(inode);
+ if (!(sb->s_flags & SB_POSIXACL))
-+ goto out;
++ goto unlock;
+
+ bindex = au_ibtop(inode);
+ h_inode = au_h_iptr(inode, bindex);
@@ -28340,7 +28364,7 @@ diff -urN /usr/share/empty/fs/aufs/posix_acl.c linux/fs/aufs/posix_acl.c
+ != (inode->i_mode & S_IFMT)))) {
+ err = au_busy_or_stale();
+ acl = ERR_PTR(err);
-+ goto out;
++ goto unlock;
+ }
+
+ /* always topmost only */
@@ -28350,10 +28374,11 @@ diff -urN /usr/share/empty/fs/aufs/posix_acl.c linux/fs/aufs/posix_acl.c
+ else
+ set_cached_acl(inode, type, acl);
+
-+out:
++unlock:
+ ii_read_unlock(inode);
+ si_read_unlock(sb);
+
++out:
+ AuTraceErrPtr(acl);
+ return acl;
+}
@@ -28401,7 +28426,7 @@ diff -urN /usr/share/empty/fs/aufs/posix_acl.c linux/fs/aufs/posix_acl.c
+}
diff -urN /usr/share/empty/fs/aufs/procfs.c linux/fs/aufs/procfs.c
--- /usr/share/empty/fs/aufs/procfs.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/procfs.c 2021-09-06 21:02:45.280158943 +0200
++++ linux/fs/aufs/procfs.c 2021-11-01 23:48:34.209692595 +0100
@@ -0,0 +1,170 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
@@ -28575,7 +28600,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 2021-09-06 21:02:45.280158943 +0200
++++ linux/fs/aufs/rdu.c 2021-11-01 23:48:34.209692595 +0100
@@ -0,0 +1,384 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
@@ -28963,7 +28988,7 @@ diff -urN /usr/share/empty/fs/aufs/rdu.c linux/fs/aufs/rdu.c
+#endif
diff -urN /usr/share/empty/fs/aufs/rwsem.h linux/fs/aufs/rwsem.h
--- /usr/share/empty/fs/aufs/rwsem.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/rwsem.h 2021-09-06 21:02:45.280158943 +0200
++++ linux/fs/aufs/rwsem.h 2021-11-01 23:48:34.209692595 +0100
@@ -0,0 +1,85 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
@@ -29052,7 +29077,7 @@ diff -urN /usr/share/empty/fs/aufs/rwsem.h linux/fs/aufs/rwsem.h
+#endif /* __AUFS_RWSEM_H__ */
diff -urN /usr/share/empty/fs/aufs/sbinfo.c linux/fs/aufs/sbinfo.c
--- /usr/share/empty/fs/aufs/sbinfo.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/sbinfo.c 2021-09-06 21:02:45.280158943 +0200
++++ linux/fs/aufs/sbinfo.c 2021-11-01 23:48:34.213025928 +0100
@@ -0,0 +1,314 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
@@ -29370,7 +29395,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 2021-09-06 21:02:45.280158943 +0200
++++ linux/fs/aufs/super.c 2021-11-01 23:48:34.213025928 +0100
@@ -0,0 +1,1050 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
@@ -30424,7 +30449,7 @@ diff -urN /usr/share/empty/fs/aufs/super.c linux/fs/aufs/super.c
+};
diff -urN /usr/share/empty/fs/aufs/super.h linux/fs/aufs/super.h
--- /usr/share/empty/fs/aufs/super.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/super.h 2021-09-06 21:02:45.280158943 +0200
++++ linux/fs/aufs/super.h 2021-11-01 23:48:34.213025928 +0100
@@ -0,0 +1,587 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
@@ -31015,7 +31040,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 2021-09-06 21:02:45.280158943 +0200
++++ linux/fs/aufs/sysaufs.c 2021-11-01 23:48:34.213025928 +0100
@@ -0,0 +1,93 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
@@ -31112,7 +31137,7 @@ diff -urN /usr/share/empty/fs/aufs/sysaufs.c linux/fs/aufs/sysaufs.c
+}
diff -urN /usr/share/empty/fs/aufs/sysaufs.h linux/fs/aufs/sysaufs.h
--- /usr/share/empty/fs/aufs/sysaufs.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/sysaufs.h 2021-09-06 21:02:45.280158943 +0200
++++ linux/fs/aufs/sysaufs.h 2021-11-01 23:48:34.213025928 +0100
@@ -0,0 +1,102 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
@@ -31218,7 +31243,7 @@ diff -urN /usr/share/empty/fs/aufs/sysaufs.h linux/fs/aufs/sysaufs.h
+#endif /* __SYSAUFS_H__ */
diff -urN /usr/share/empty/fs/aufs/sysfs.c linux/fs/aufs/sysfs.c
--- /usr/share/empty/fs/aufs/sysfs.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/sysfs.c 2021-09-06 21:02:45.280158943 +0200
++++ linux/fs/aufs/sysfs.c 2021-11-01 23:48:34.213025928 +0100
@@ -0,0 +1,374 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
@@ -31596,7 +31621,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 2021-09-06 21:02:45.280158943 +0200
++++ linux/fs/aufs/sysrq.c 2021-11-01 23:48:34.213025928 +0100
@@ -0,0 +1,149 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
@@ -31749,7 +31774,7 @@ diff -urN /usr/share/empty/fs/aufs/sysrq.c linux/fs/aufs/sysrq.c
+}
diff -urN /usr/share/empty/fs/aufs/vdir.c linux/fs/aufs/vdir.c
--- /usr/share/empty/fs/aufs/vdir.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/vdir.c 2021-09-06 21:02:45.280158943 +0200
++++ linux/fs/aufs/vdir.c 2021-11-01 23:48:34.213025928 +0100
@@ -0,0 +1,896 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
@@ -32649,8 +32674,8 @@ 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 2021-09-06 21:02:45.280158943 +0200
-@@ -0,0 +1,916 @@
++++ linux/fs/aufs/vfsub.c 2021-11-01 23:48:34.213025928 +0100
+@@ -0,0 +1,919 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2005-2021 Junjiro R. Okajima
@@ -32711,6 +32736,11 @@ diff -urN /usr/share/empty/fs/aufs/vfsub.c linux/fs/aufs/vfsub.c
+ struct kstat st;
+ struct super_block *h_sb;
+
++ /*
++ * Always needs h_path->mnt for LSM or FUSE branch.
++ */
++ AuDebugOn(!h_path->mnt);
++
+ /* for remote fs, leave work for its getattr or d_revalidate */
+ /* for bad i_attr fs, handle them in aufs_getattr() */
+ /* still some fs may acquire i_mutex. we need to skip them */
@@ -32819,38 +32849,38 @@ diff -urN /usr/share/empty/fs/aufs/vfsub.c linux/fs/aufs/vfsub.c
+}
+
+struct dentry *vfsub_lookup_one_len_unlocked(const char *name,
-+ struct dentry *parent, int len)
++ struct path *ppath, int len)
+{
-+ struct path path = {
-+ .mnt = NULL
-+ };
++ struct path path;
+
-+ path.dentry = lookup_one_len_unlocked(name, parent, len);
++ path.dentry = lookup_one_len_unlocked(name, ppath->dentry, len);
+ if (IS_ERR(path.dentry))
+ goto out;
-+ if (d_is_positive(path.dentry))
++ if (d_is_positive(path.dentry)) {
++ path.mnt = ppath->mnt;
+ vfsub_update_h_iattr(&path, /*did*/NULL); /*ignore*/
++ }
+
+out:
+ AuTraceErrPtr(path.dentry);
+ return path.dentry;
+}
+
-+struct dentry *vfsub_lookup_one_len(const char *name, struct dentry *parent,
++struct dentry *vfsub_lookup_one_len(const char *name, struct path *ppath,
+ int len)
+{
-+ struct path path = {
-+ .mnt = NULL
-+ };
++ struct path path;
+
+ /* VFS checks it too, but by WARN_ON_ONCE() */
-+ IMustLock(d_inode(parent));
++ IMustLock(d_inode(ppath->dentry));
+
-+ path.dentry = lookup_one_len(name, parent, len);
++ path.dentry = lookup_one_len(name, ppath->dentry, len);
+ if (IS_ERR(path.dentry))
+ goto out;
-+ if (d_is_positive(path.dentry))
++ if (d_is_positive(path.dentry)) {
++ path.mnt = ppath->mnt;
+ vfsub_update_h_iattr(&path, /*did*/NULL); /*ignore*/
++ }
+
+out:
+ AuTraceErrPtr(path.dentry);
@@ -32860,7 +32890,7 @@ diff -urN /usr/share/empty/fs/aufs/vfsub.c linux/fs/aufs/vfsub.c
+void vfsub_call_lkup_one(void *args)
+{
+ struct vfsub_lkup_one_args *a = args;
-+ *a->errp = vfsub_lkup_one(a->name, a->parent);
++ *a->errp = vfsub_lkup_one(a->name, a->ppath);
+}
+
+/* ---------------------------------------------------------------------- */
@@ -33325,9 +33355,7 @@ diff -urN /usr/share/empty/fs/aufs/vfsub.c linux/fs/aufs/vfsub.c
+ lockdep_off();
+ sb_start_write(h_sb);
+ lockdep_on();
-+ err = locks_verify_truncate(h_inode, h_file, length);
-+ if (!err)
-+ err = security_path_truncate(h_path);
++ err = security_path_truncate(h_path);
+ if (!err) {
+ h_userns = mnt_user_ns(h_path->mnt);
+ lockdep_off();
@@ -33569,7 +33597,7 @@ 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 2021-09-06 21:02:45.280158943 +0200
++++ linux/fs/aufs/vfsub.h 2021-11-01 23:48:34.213025928 +0100
@@ -0,0 +1,358 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
@@ -33676,20 +33704,20 @@ diff -urN /usr/share/empty/fs/aufs/vfsub.h linux/fs/aufs/vfsub.h
+int vfsub_kern_path(const char *name, unsigned int flags, struct path *path);
+
+struct dentry *vfsub_lookup_one_len_unlocked(const char *name,
-+ struct dentry *parent, int len);
-+struct dentry *vfsub_lookup_one_len(const char *name, struct dentry *parent,
++ struct path *ppath, int len);
++struct dentry *vfsub_lookup_one_len(const char *name, struct path *ppath,
+ int len);
+
+struct vfsub_lkup_one_args {
+ struct dentry **errp;
+ struct qstr *name;
-+ struct dentry *parent;
++ struct path *ppath;
+};
+
+static inline struct dentry *vfsub_lkup_one(struct qstr *name,
-+ struct dentry *parent)
++ struct path *ppath)
+{
-+ return vfsub_lookup_one_len(name->name, parent, name->len);
++ return vfsub_lookup_one_len(name->name, ppath, name->len);
+}
+
+void vfsub_call_lkup_one(void *args);
@@ -33931,7 +33959,7 @@ diff -urN /usr/share/empty/fs/aufs/vfsub.h linux/fs/aufs/vfsub.h
+#endif /* __AUFS_VFSUB_H__ */
diff -urN /usr/share/empty/fs/aufs/wbr_policy.c linux/fs/aufs/wbr_policy.c
--- /usr/share/empty/fs/aufs/wbr_policy.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/wbr_policy.c 2021-09-06 21:02:45.280158943 +0200
++++ linux/fs/aufs/wbr_policy.c 2021-11-01 23:48:34.213025928 +0100
@@ -0,0 +1,830 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
@@ -34765,8 +34793,8 @@ 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 2021-09-06 21:02:45.280158943 +0200
-@@ -0,0 +1,1070 @@
++++ linux/fs/aufs/whout.c 2021-11-01 23:48:34.213025928 +0100
+@@ -0,0 +1,1072 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2005-2021 Junjiro R. Okajima
@@ -34830,19 +34858,19 @@ diff -urN /usr/share/empty/fs/aufs/whout.c linux/fs/aufs/whout.c
+/* ---------------------------------------------------------------------- */
+
+/*
-+ * test if the @wh_name exists under @h_parent.
++ * test if the @wh_name exists under @h_ppath.
+ * @try_sio specifies the necessary of super-io.
+ */
-+int au_wh_test(struct user_namespace *h_userns, struct dentry *h_parent,
++int au_wh_test(struct user_namespace *h_userns, struct path *h_ppath,
+ struct qstr *wh_name, int try_sio)
+{
+ int err;
+ struct dentry *wh_dentry;
+
+ if (!try_sio)
-+ wh_dentry = vfsub_lkup_one(wh_name, h_parent);
++ wh_dentry = vfsub_lkup_one(wh_name, h_ppath);
+ else
-+ wh_dentry = au_sio_lkup_one(h_userns, wh_name, h_parent);
++ wh_dentry = au_sio_lkup_one(h_userns, wh_name, h_ppath);
+ err = PTR_ERR(wh_dentry);
+ if (IS_ERR(wh_dentry)) {
+ if (err == -ENAMETOOLONG)
@@ -34869,15 +34897,15 @@ diff -urN /usr/share/empty/fs/aufs/whout.c linux/fs/aufs/whout.c
+}
+
+/*
-+ * test if the @h_dentry sets opaque or not.
++ * test if the @h_path->dentry sets opaque or not.
+ */
-+int au_diropq_test(struct user_namespace *h_userns, struct dentry *h_dentry)
++int au_diropq_test(struct user_namespace *h_userns, struct path *h_path)
+{
+ int err;
+ struct inode *h_dir;
+
-+ h_dir = d_inode(h_dentry);
-+ err = au_wh_test(h_userns, h_dentry, &diropq_name,
++ h_dir = d_inode(h_path->dentry);
++ err = au_wh_test(h_userns, h_path, &diropq_name,
+ au_test_h_perm_sio(h_userns, h_dir, MAY_EXEC));
+ return err;
+}
@@ -34895,6 +34923,7 @@ diff -urN /usr/share/empty/fs/aufs/whout.c linux/fs/aufs/whout.c
+ /* strict atomic_t is unnecessary here */
+ static unsigned short cnt;
+ struct qstr qs;
++ struct path h_ppath;
+ struct user_namespace *h_userns;
+
+ BUILD_BUG_ON(sizeof(cnt) * 2 > AUFS_WH_TMP_LEN);
@@ -34919,11 +34948,13 @@ diff -urN /usr/share/empty/fs/aufs/whout.c linux/fs/aufs/whout.c
+ *p++ = '.';
+ AuDebugOn(name + qs.len + 1 - p <= AUFS_WH_TMP_LEN);
+
++ h_ppath.dentry = h_parent;
++ h_ppath.mnt = au_br_mnt(br);
+ h_userns = au_br_userns(br);
+ qs.name = name;
+ for (i = 0; i < 3; i++) {
+ sprintf(p, "%.*x", AUFS_WH_TMP_LEN, cnt++);
-+ dentry = au_sio_lkup_one(h_userns, &qs, h_parent);
++ dentry = au_sio_lkup_one(h_userns, &qs, &h_ppath);
+ if (IS_ERR(dentry) || d_is_negative(dentry))
+ goto out_name;
+ dput(dentry);
@@ -35017,21 +35048,20 @@ diff -urN /usr/share/empty/fs/aufs/whout.c linux/fs/aufs/whout.c
+ return err;
+}
+
-+static int unlink_wh_name(struct dentry *h_parent, struct qstr *wh,
-+ struct au_branch *br)
++static int unlink_wh_name(struct path *h_ppath, struct qstr *wh)
+{
+ int err;
-+ struct path h_path = {
-+ .mnt = au_br_mnt(br)
-+ };
++ struct path h_path;
+
+ err = 0;
-+ h_path.dentry = vfsub_lkup_one(wh, h_parent);
++ h_path.dentry = vfsub_lkup_one(wh, h_ppath);
+ if (IS_ERR(h_path.dentry))
+ err = PTR_ERR(h_path.dentry);
+ else {
-+ if (d_is_reg(h_path.dentry))
-+ err = do_unlink_wh(d_inode(h_parent), &h_path);
++ if (d_is_reg(h_path.dentry)) {
++ h_path.mnt = h_ppath->mnt;
++ err = do_unlink_wh(d_inode(h_ppath->dentry), &h_path);
++ }
+ dput(h_path.dentry);
+ }
+
@@ -35471,15 +35501,17 @@ diff -urN /usr/share/empty/fs/aufs/whout.c linux/fs/aufs/whout.c
+static struct dentry *do_diropq(struct dentry *dentry, aufs_bindex_t bindex,
+ unsigned int flags)
+{
-+ struct dentry *opq_dentry, *h_dentry;
++ struct dentry *opq_dentry;
+ struct super_block *sb;
+ struct au_branch *br;
++ struct path h_path;
+ int err;
+
+ sb = dentry->d_sb;
+ br = au_sbr(sb, bindex);
-+ h_dentry = au_h_dptr(dentry, bindex);
-+ opq_dentry = vfsub_lkup_one(&diropq_name, h_dentry);
++ h_path.dentry = au_h_dptr(dentry, bindex);
++ h_path.mnt = au_br_mnt(br);
++ opq_dentry = vfsub_lkup_one(&diropq_name, &h_path);
+ if (IS_ERR(opq_dentry))
+ goto out;
+
@@ -35490,11 +35522,8 @@ diff -urN /usr/share/empty/fs/aufs/whout.c linux/fs/aufs/whout.c
+ goto out; /* success */
+ }
+ } else {
-+ struct path tmp = {
-+ .dentry = opq_dentry,
-+ .mnt = au_br_mnt(br)
-+ };
-+ err = do_unlink_wh(au_h_iptr(d_inode(dentry), bindex), &tmp);
++ h_path.dentry = opq_dentry;
++ err = do_unlink_wh(au_h_iptr(d_inode(dentry), bindex), &h_path);
+ if (!err)
+ au_set_dbdiropq(dentry, -1);
+ }
@@ -35560,11 +35589,14 @@ diff -urN /usr/share/empty/fs/aufs/whout.c linux/fs/aufs/whout.c
+ int err;
+ struct qstr wh_name;
+ struct dentry *wh_dentry;
++ struct path h_path;
+
+ err = au_wh_name_alloc(&wh_name, base_name);
+ wh_dentry = ERR_PTR(err);
+ if (!err) {
-+ wh_dentry = vfsub_lkup_one(&wh_name, h_parent);
++ h_path.dentry = h_parent;
++ h_path.mnt = au_br_mnt(br);
++ wh_dentry = vfsub_lkup_one(&wh_name, &h_path);
+ au_kfree_try_rcu(wh_name.name);
+ }
+ return wh_dentry;
@@ -35599,8 +35631,8 @@ diff -urN /usr/share/empty/fs/aufs/whout.c linux/fs/aufs/whout.c
+/* ---------------------------------------------------------------------- */
+
+/* Delete all whiteouts in this directory on branch bindex. */
-+static int del_wh_children(struct dentry *h_dentry, struct au_nhash *whlist,
-+ aufs_bindex_t bindex, struct au_branch *br)
++static int del_wh_children(struct path *h_path, struct au_nhash *whlist,
++ aufs_bindex_t bindex)
+{
+ int err;
+ unsigned long ul, n;
@@ -35630,7 +35662,7 @@ diff -urN /usr/share/empty/fs/aufs/whout.c linux/fs/aufs/whout.c
+ if (str->len + AUFS_WH_PFX_LEN <= PATH_MAX) {
+ memcpy(p, str->name, str->len);
+ wh_name.len = AUFS_WH_PFX_LEN + str->len;
-+ err = unlink_wh_name(h_dentry, &wh_name, br);
++ err = unlink_wh_name(h_path, &wh_name);
+ if (!err)
+ continue;
+ break;
@@ -35649,16 +35681,15 @@ diff -urN /usr/share/empty/fs/aufs/whout.c linux/fs/aufs/whout.c
+
+struct del_wh_children_args {
+ int *errp;
-+ struct dentry *h_dentry;
++ struct path *h_path;
+ struct au_nhash *whlist;
+ aufs_bindex_t bindex;
-+ struct au_branch *br;
+};
+
+static void call_del_wh_children(void *args)
+{
+ struct del_wh_children_args *a = args;
-+ *a->errp = del_wh_children(a->h_dentry, a->whlist, a->bindex, a->br);
++ *a->errp = del_wh_children(a->h_path, a->whlist, a->bindex);
+}
+
+/* ---------------------------------------------------------------------- */
@@ -35710,7 +35741,7 @@ diff -urN /usr/share/empty/fs/aufs/whout.c linux/fs/aufs/whout.c
+{
+ int err;
+ unsigned int h_nlink;
-+ struct path h_tmp;
++ struct path wh_path;
+ struct inode *wh_inode, *h_dir;
+ struct au_branch *br;
+ struct user_namespace *h_userns;
@@ -35719,6 +35750,8 @@ diff -urN /usr/share/empty/fs/aufs/whout.c linux/fs/aufs/whout.c
+ IMustLock(h_dir);
+
+ br = au_sbr(dir->i_sb, bindex);
++ wh_path.dentry = wh_dentry;
++ wh_path.mnt = au_br_mnt(br);
+ h_userns = au_br_userns(br);
+ wh_inode = d_inode(wh_dentry);
+ inode_lock_nested(wh_inode, AuLsc_I_CHILD);
@@ -35728,15 +35761,14 @@ diff -urN /usr/share/empty/fs/aufs/whout.c linux/fs/aufs/whout.c
+ * it means this whlist may have an obsoleted entry.
+ */
+ if (!au_test_h_perm_sio(h_userns, wh_inode, MAY_EXEC | MAY_WRITE))
-+ err = del_wh_children(wh_dentry, whlist, bindex, br);
++ err = del_wh_children(&wh_path, whlist, bindex);
+ else {
+ int wkq_err;
+ struct del_wh_children_args args = {
+ .errp = &err,
-+ .h_dentry = wh_dentry,
++ .h_path = &wh_path,
+ .whlist = whlist,
-+ .bindex = bindex,
-+ .br = br
++ .bindex = bindex
+ };
+
+ wkq_err = au_wkq_wait(call_del_wh_children, &args);
@@ -35746,10 +35778,8 @@ diff -urN /usr/share/empty/fs/aufs/whout.c linux/fs/aufs/whout.c
+ inode_unlock(wh_inode);
+
+ if (!err) {
-+ h_tmp.dentry = wh_dentry;
-+ h_tmp.mnt = au_br_mnt(br);
+ h_nlink = h_dir->i_nlink;
-+ err = vfsub_rmdir(h_dir, &h_tmp);
++ err = vfsub_rmdir(h_dir, &wh_path);
+ /* some fs doesn't change the parent nlink in some cases */
+ h_nlink -= h_dir->i_nlink;
+ }
@@ -35839,7 +35869,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 2021-09-06 21:02:45.280158943 +0200
++++ linux/fs/aufs/whout.h 2021-11-01 23:48:34.213025928 +0100
@@ -0,0 +1,87 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
@@ -35872,9 +35902,9 @@ diff -urN /usr/share/empty/fs/aufs/whout.h linux/fs/aufs/whout.h
+
+/* whout.c */
+int au_wh_name_alloc(struct qstr *wh, const struct qstr *name);
-+int au_wh_test(struct user_namespace *h_userns, struct dentry *h_parent,
++int au_wh_test(struct user_namespace *h_userns, struct path *h_ppath,
+ struct qstr *wh_name, int try_sio);
-+int au_diropq_test(struct user_namespace *h_userns, struct dentry *h_dentry);
++int au_diropq_test(struct user_namespace *h_userns, struct path *h_path);
+struct au_branch;
+struct dentry *au_whtmp_lkup(struct dentry *h_parent, struct au_branch *br,
+ struct qstr *prefix);
@@ -35930,7 +35960,7 @@ diff -urN /usr/share/empty/fs/aufs/whout.h linux/fs/aufs/whout.h
+#endif /* __AUFS_WHOUT_H__ */
diff -urN /usr/share/empty/fs/aufs/wkq.c linux/fs/aufs/wkq.c
--- /usr/share/empty/fs/aufs/wkq.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/wkq.c 2021-09-06 21:02:45.280158943 +0200
++++ linux/fs/aufs/wkq.c 2021-11-01 23:48:34.213025928 +0100
@@ -0,0 +1,372 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
@@ -36306,7 +36336,7 @@ diff -urN /usr/share/empty/fs/aufs/wkq.c linux/fs/aufs/wkq.c
+}
diff -urN /usr/share/empty/fs/aufs/wkq.h linux/fs/aufs/wkq.h
--- /usr/share/empty/fs/aufs/wkq.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/wkq.h 2021-09-06 21:02:45.280158943 +0200
++++ linux/fs/aufs/wkq.h 2021-11-01 23:48:34.213025928 +0100
@@ -0,0 +1,89 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
@@ -36399,7 +36429,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 2021-09-06 21:02:45.280158943 +0200
++++ linux/fs/aufs/xattr.c 2021-11-01 23:48:34.213025928 +0100
@@ -0,0 +1,368 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
@@ -36771,8 +36801,8 @@ 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 2021-09-06 21:02:45.280158943 +0200
-@@ -0,0 +1,1925 @@
++++ linux/fs/aufs/xino.c 2021-11-01 23:48:34.213025928 +0100
+@@ -0,0 +1,1926 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2005-2021 Junjiro R. Okajima
@@ -37010,22 +37040,23 @@ diff -urN /usr/share/empty/fs/aufs/xino.c linux/fs/aufs/xino.c
+ struct file *copy_src)
+{
+ struct file *file;
-+ struct dentry *dentry, *parent;
++ struct dentry *dentry;
+ struct inode *dir, *delegated;
+ struct qstr *name;
-+ struct path path;
++ struct path ppath, path;
+ int err, do_unlock;
+ struct au_xino_lock_dir ldir;
+
+ do_unlock = 1;
+ au_xino_lock_dir(sb, base, &ldir);
+ dentry = base->dentry;
-+ parent = dentry->d_parent; /* dir inode is locked */
-+ dir = d_inode(parent);
++ ppath.dentry = dentry->d_parent; /* dir inode is locked */
++ ppath.mnt = base->mnt;
++ dir = d_inode(ppath.dentry);
+ IMustLock(dir);
+
+ name = &dentry->d_name;
-+ path.dentry = vfsub_lookup_one_len(name->name, parent, name->len);
++ path.dentry = vfsub_lookup_one_len(name->name, &ppath, name->len);
+ if (IS_ERR(path.dentry)) {
+ file = (void *)path.dentry;
+ pr_err("%pd lookup err %ld\n", dentry, PTR_ERR(path.dentry));
@@ -38700,7 +38731,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 2021-09-06 21:06:28.017703615 +0200
++++ linux/include/uapi/linux/aufs_type.h 2021-11-01 23:48:34.213025928 +0100
@@ -0,0 +1,452 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
+/*
@@ -38744,7 +38775,7 @@ diff -urN /usr/share/empty/include/uapi/linux/aufs_type.h linux/include/uapi/lin
+#include <limits.h>
+#endif /* __KERNEL__ */
+
-+#define AUFS_VERSION "5.14-20210906"
++#define AUFS_VERSION "5.x-rcN-20211018"
+
+/* todo? move this to linux-2.6.19/include/magic.h */
+#define AUFS_SUPER_MAGIC ('a' << 24 | 'u' << 16 | 'f' << 8 | 's')
@@ -39155,10 +39186,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
-aufs5.14 loopback patch
+aufs5.x-rcN loopback patch
diff --git a/drivers/block/loop.c b/drivers/block/loop.c
-index e65f941a4181a..ce11efab143b7 100644
+index a62b132cbd551..79cf20555c2b1 100644
--- a/drivers/block/loop.c
+++ b/drivers/block/loop.c
@@ -685,6 +685,15 @@ static inline void loop_update_dio(struct loop_device *lo)
@@ -39205,7 +39236,7 @@ index e65f941a4181a..ce11efab143b7 100644
error = -EINVAL;
-@@ -777,6 +795,7 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev,
+@@ -778,6 +796,7 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev,
blk_mq_freeze_queue(lo->lo_queue);
mapping_set_gfp_mask(old_file->f_mapping, lo->old_gfp_mask);
lo->lo_backing_file = file;
@@ -39213,7 +39244,7 @@ index e65f941a4181a..ce11efab143b7 100644
lo->old_gfp_mask = mapping_gfp_mask(file->f_mapping);
mapping_set_gfp_mask(file->f_mapping,
lo->old_gfp_mask & ~(__GFP_IO|__GFP_FS));
-@@ -799,6 +818,8 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev,
+@@ -800,6 +819,8 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev,
* dependency.
*/
fput(old_file);
@@ -39222,7 +39253,7 @@ index e65f941a4181a..ce11efab143b7 100644
if (partscan)
loop_reread_partitions(lo);
return 0;
-@@ -807,6 +828,8 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev,
+@@ -808,6 +829,8 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev,
loop_global_unlock(lo, is_loop);
out_putf:
fput(file);
@@ -39231,7 +39262,7 @@ index e65f941a4181a..ce11efab143b7 100644
return error;
}
-@@ -1207,6 +1230,7 @@ static int loop_configure(struct loop_device *lo, fmode_t mode,
+@@ -1208,6 +1231,7 @@ static int loop_configure(struct loop_device *lo, fmode_t mode,
const struct loop_config *config)
{
struct file *file = fget(config->fd);
@@ -39239,7 +39270,7 @@ index e65f941a4181a..ce11efab143b7 100644
struct inode *inode;
struct address_space *mapping;
int error;
-@@ -1222,6 +1246,13 @@ static int loop_configure(struct loop_device *lo, fmode_t mode,
+@@ -1223,6 +1247,13 @@ static int loop_configure(struct loop_device *lo, fmode_t mode,
/* This is safe, since we have a reference from open(). */
__module_get(THIS_MODULE);
@@ -39253,7 +39284,7 @@ index e65f941a4181a..ce11efab143b7 100644
/*
* If we don't hold exclusive handle for the device, upgrade to it
* here to avoid changing device under exclusive owner.
-@@ -1286,6 +1317,7 @@ static int loop_configure(struct loop_device *lo, fmode_t mode,
+@@ -1288,6 +1319,7 @@ static int loop_configure(struct loop_device *lo, fmode_t mode,
lo->use_dio = lo->lo_flags & LO_FLAGS_DIRECT_IO;
lo->lo_device = bdev;
lo->lo_backing_file = file;
@@ -39261,7 +39292,7 @@ index e65f941a4181a..ce11efab143b7 100644
lo->old_gfp_mask = mapping_gfp_mask(mapping);
mapping_set_gfp_mask(mapping, lo->old_gfp_mask & ~(__GFP_IO|__GFP_FS));
-@@ -1340,6 +1372,8 @@ static int loop_configure(struct loop_device *lo, fmode_t mode,
+@@ -1338,6 +1370,8 @@ static int loop_configure(struct loop_device *lo, fmode_t mode,
bd_abort_claiming(bdev, loop_configure);
out_putf:
fput(file);
@@ -39270,7 +39301,7 @@ index e65f941a4181a..ce11efab143b7 100644
/* This is safe: open() is still holding a reference. */
module_put(THIS_MODULE);
return error;
-@@ -1348,6 +1382,7 @@ static int loop_configure(struct loop_device *lo, fmode_t mode,
+@@ -1346,6 +1380,7 @@ static int loop_configure(struct loop_device *lo, fmode_t mode,
static int __loop_clr_fd(struct loop_device *lo, bool release)
{
struct file *filp = NULL;
@@ -39278,7 +39309,7 @@ index e65f941a4181a..ce11efab143b7 100644
gfp_t gfp = lo->old_gfp_mask;
struct block_device *bdev = lo->lo_device;
int err = 0;
-@@ -1399,6 +1434,7 @@ static int __loop_clr_fd(struct loop_device *lo, bool release)
+@@ -1397,6 +1432,7 @@ static int __loop_clr_fd(struct loop_device *lo, bool release)
spin_lock_irq(&lo->lo_lock);
lo->lo_backing_file = NULL;
@@ -39286,7 +39317,7 @@ index e65f941a4181a..ce11efab143b7 100644
spin_unlock_irq(&lo->lo_lock);
loop_release_xfer(lo);
-@@ -1479,6 +1515,8 @@ static int __loop_clr_fd(struct loop_device *lo, bool release)
+@@ -1477,6 +1513,8 @@ static int __loop_clr_fd(struct loop_device *lo, bool release)
*/
if (filp)
fput(filp);
@@ -39296,7 +39327,7 @@ index e65f941a4181a..ce11efab143b7 100644
}
diff --git a/drivers/block/loop.h b/drivers/block/loop.h
-index 1988899db63ac..ff866d85aceac 100644
+index 04c88dd6eabd6..0ff3ba22ee170 100644
--- a/drivers/block/loop.h
+++ b/drivers/block/loop.h
@@ -46,7 +46,7 @@ struct loop_device {
@@ -39384,10 +39415,10 @@ index ae38857541533..af32f0960e595 100644
/* ---------------------------------------------------------------------- */
diff --git a/include/linux/fs.h b/include/linux/fs.h
-index ffeed3ccd2d62..6a8e599051b77 100644
+index 376ddf1965aa2..adb8c854de599 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
-@@ -2177,6 +2177,10 @@ struct super_operations {
+@@ -2226,6 +2226,10 @@ struct super_operations {
struct shrink_control *);
long (*free_cached_objects)(struct super_block *,
struct shrink_control *);
diff --git a/kernel-multiarch.config b/kernel-multiarch.config
index 5044c320..bb7286f0 100644
--- a/kernel-multiarch.config
+++ b/kernel-multiarch.config
@@ -31,6 +31,7 @@ KEXEC_SIG all=n
LOCK_EVENT_COUNTS all=n
MICROCODE_OLD_INTERFACE all=n
PERF_EVENTS_AMD_POWER all=m
+PERF_EVENTS_AMD_UNCORE all=m
PERF_EVENTS_INTEL_CSTATE all=m
PERF_EVENTS_INTEL_RAPL all=m
PERF_EVENTS_INTEL_UNCORE all=m
@@ -55,7 +56,6 @@ X86_DEBUG_FPU all=n
X86_DECODER_SELFTEST all=n
X86_MCELOG_LEGACY all=y
X86_SGX all=y
-X86_SYSFB all=y
X86_VERBOSE_BOOTUP all=n
XEN_512GB all=y
XEN_DOM0 all=y
@@ -68,13 +68,11 @@ XEN_PVHVM_GUEST all=y
#- *** FILE: block/Kconfig ***
#-
BLOCK all=y
-BLK_DEV_BSG all=y
BLK_DEV_BSGLIB all=y
BLK_DEV_INTEGRITY all=y
BLK_DEV_ZONED all=y
BLK_DEV_THROTTLING all=y
BLK_DEV_THROTTLING_LOW all=y
-BLK_CMDLINE_PARSER all=y
BLK_WBT all=y
BLK_WBT_MQ all=y
BLK_CGROUP_IOLATENCY all=y
@@ -132,6 +130,8 @@ CMDLINE_PARTITION all=y
#- *** FILE: certs/Kconfig ***
#-
MODULE_SIG_KEY all="certs/signing_key.pem"
+MODULE_SIG_KEY_TYPE_RSA all=y
+MODULE_SIG_KEY_TYPE_ECDSA all=n
SYSTEM_TRUSTED_KEYRING all=y
SYSTEM_TRUSTED_KEYS all=""
SYSTEM_EXTRA_CERTIFICATE all=y
@@ -256,6 +256,8 @@ CRYPTO_SERPENT_SSE2_586 all=m
CRYPTO_SERPENT_AVX_X86_64 all=m
CRYPTO_SERPENT_AVX2_X86_64 all=m
CRYPTO_SM4 all=m
+CRYPTO_SM4_AESNI_AVX_X86_64 all=m
+CRYPTO_SM4_AESNI_AVX2_X86_64 all=m
CRYPTO_TEA all=m
CRYPTO_TWOFISH all=m
CRYPTO_TWOFISH_COMMON all=m
@@ -922,6 +924,7 @@ COMMON_CLK_OXNAS all=n
#- file drivers/clk/meson/Kconfig goes here
#- file drivers/clk/mstar/Kconfig goes here
#- file drivers/clk/mvebu/Kconfig goes here
+#- file drivers/clk/pistachio/Kconfig goes here
#- file drivers/clk/qcom/Kconfig goes here
#- file drivers/clk/ralink/Kconfig goes here
#- file drivers/clk/renesas/Kconfig goes here
@@ -1280,6 +1283,7 @@ DMABUF_MOVE_NOTIFY all=n
DMABUF_DEBUG all=n
DMABUF_SELFTESTS all=m
DMABUF_HEAPS all=y
+DMABUF_SYSFS_STATS all=y
#- file drivers/dma-buf/heaps/Kconfig goes here
#-
@@ -1299,6 +1303,7 @@ ALTERA_MSGDMA all=m
FSL_DMA ppc=y ppc64=y
INTEL_IDMA64 all=m
INTEL_IDXD all=m
+INTEL_IDXD_COMPAT all=n
INTEL_IDXD_SVM all=y
INTEL_IDXD_PERFMON all=y
INTEL_IOATDMA i386=m x86_64=m
@@ -1308,6 +1313,7 @@ TIMB_DMA all=m
XILINX_ZYNQMP_DPDMA all=m
#- file drivers/dma/bestcomm/Kconfig goes here
#- file drivers/dma/mediatek/Kconfig goes here
+#- file drivers/dma/ptdma/Kconfig goes here
#- file drivers/dma/qcom/Kconfig goes here
#- file drivers/dma/dw/Kconfig goes here
#- file drivers/dma/dw-edma/Kconfig goes here
@@ -1344,6 +1350,11 @@ HSU_DMA_PCI all=m
#-
INTEL_LDMA all=y
+#-
+#- *** FILE: drivers/dma/ptdma/Kconfig ***
+#-
+AMD_PTDMA all=m
+
#-
#- *** FILE: drivers/dma/qcom/Kconfig ***
#-
@@ -1432,6 +1443,7 @@ FIREWIRE_NOSY all=m
#-
#- *** FILE: drivers/firmware/Kconfig ***
#-
+#- file drivers/firmware/arm_scmi/Kconfig goes here
ARM_SCPI_PROTOCOL all=m
ARM_SCPI_POWER_DOMAIN all=m
EDD i386=m x86_64=m
@@ -1444,6 +1456,7 @@ ISCSI_IBFT_FIND all=y
ISCSI_IBFT all=m
FW_CFG_SYSFS all=m
FW_CFG_SYSFS_CMDLINE all=y
+SYSFB_SIMPLEFB all=y
#- file drivers/firmware/arm_ffa/Kconfig goes here
#- file drivers/firmware/broadcom/Kconfig goes here
#- file drivers/firmware/google/Kconfig goes here
@@ -1604,6 +1617,7 @@ GPIO_XRA1403 all=m
GPIO_VIPERBOARD all=m
GPIO_AGGREGATOR all=m
GPIO_MOCKUP all=m
+GPIO_VIRTIO all=m
#-
#- *** FILE: drivers/gpu/drm/Kconfig ***
@@ -1641,7 +1655,6 @@ DRM_VKMS all=m
#- file drivers/gpu/drm/omapdrm/Kconfig goes here
#- file drivers/gpu/drm/tilcdc/Kconfig goes here
#- file drivers/gpu/drm/qxl/Kconfig goes here
-#- file drivers/gpu/drm/bochs/Kconfig goes here
#- file drivers/gpu/drm/virtio/Kconfig goes here
#- file drivers/gpu/drm/msm/Kconfig goes here
#- file drivers/gpu/drm/fsl-dcu/Kconfig goes here
@@ -1717,11 +1730,6 @@ DRM_AMD_SECURE_DISPLAY all=y
#-
DRM_AST all=m
-#-
-#- *** FILE: drivers/gpu/drm/bochs/Kconfig ***
-#-
-DRM_BOCHS all=m
-
#-
#- *** FILE: drivers/gpu/drm/bridge/adv7511/Kconfig ***
#-
@@ -1796,6 +1804,7 @@ DRM_NOUVEAU_SVM all=y
#- *** FILE: drivers/gpu/drm/panel/Kconfig ***
#-
DRM_PANEL_RASPBERRYPI_TOUCHSCREEN all=m
+DRM_PANEL_WIDECHIPS_WS2401 all=m
#-
#- *** FILE: drivers/gpu/drm/qxl/Kconfig ***
@@ -1810,6 +1819,7 @@ DRM_RADEON_USERPTR all=y
#-
#- *** FILE: drivers/gpu/drm/tiny/Kconfig ***
#-
+DRM_BOCHS all=m
DRM_CIRRUS_QEMU all=m
DRM_GM12U320 all=m
DRM_SIMPLEDRM=m
@@ -1842,6 +1852,7 @@ DRM_VIRTIO_GPU all=m
#-
DRM_VMWGFX all=m
DRM_VMWGFX_FBCON all=y
+DRM_VMWGFX_MKSSTATS all=y
#-
#- *** FILE: drivers/gpu/drm/xen/Kconfig ***
@@ -2068,6 +2079,7 @@ SENSORS_ADT7462 all=m
SENSORS_ADT7470 all=m
SENSORS_ADT7475 all=m
SENSORS_AHT10 all=m
+SENSORS_AQUACOMPUTER_D5NEXT all=m
SENSORS_AS370 all=m
SENSORS_ASC7621 all=m
SENSORS_AXI_FAN_CONTROL all=m
@@ -2169,6 +2181,7 @@ SENSORS_PCF8591 all=m
#- file drivers/hwmon/pmbus/Kconfig goes here
SENSORS_SL28CPLD all=m
SENSORS_SBTSI all=m
+SENSORS_SBRMI all=m
SENSORS_SHT15 all=m
SENSORS_SHT21 all=m
SENSORS_SHT3x all=m
@@ -2391,6 +2404,7 @@ I2C_MLXCPLD all=m
I2C_PCA_ISA all=m
I2C_CROS_EC_TUNNEL all=m
SCx200_ACB i386=m
+I2C_VIRTIO all=m
#-
#- *** FILE: drivers/i2c/muxes/Kconfig ***
@@ -2603,6 +2617,7 @@ SCD30_CORE all=m
SCD30_I2C all=m
SCD30_SERIAL all=m
SENSIRION_SGP30 all=m
+SENSIRION_SGP40 all=m
SPS30 all=m
SPS30_I2C=m
SPS30_SERIAL=m
@@ -2846,6 +2861,7 @@ HID_SENSOR_CUSTOM_INTEL_HINGE all=m
#-
#- *** FILE: drivers/iio/potentiometer/Kconfig ***
#-
+AD5110 all=m
AD5272 all=m
DS1803 all=m
MAX5432 all=m
@@ -3471,6 +3487,8 @@ INTERCONNECT all=y
#-
IOMMU_SUPPORT all=y
IOMMU_DEBUGFS all=n
+IOMMU_DEFAULT_DMA_STRICT all=n
+IOMMU_DEFAULT_DMA_LAZY all=n
IOMMU_DEFAULT_PASSTHROUGH all=y
#- file drivers/iommu/amd/Kconfig goes here
#- file drivers/iommu/intel/Kconfig goes here
@@ -3560,12 +3578,10 @@ LEDS_CLASS_MULTICOLOR all=m
LEDS_BRIGHTNESS_HW_CHANGED all=y
#- LED drivers
LEDS_APU all=m
-LEDS_AS3645A all=m
LEDS_LM3530 all=m
LEDS_LM3532 all=m
LEDS_LM3533 all=m
LEDS_LM3642 all=m
-LEDS_LM3601X all=m
LEDS_MT6323 all=m
LEDS_NET48XX i386=m
LEDS_WRAP i386=m
@@ -3610,7 +3626,6 @@ LEDS_NIC78BX all=m
LEDS_TI_LMU_COMMON all=m
LEDS_LM36274 all=m
LEDS_TPS6105X all=m
-LEDS_SGM3140 all=m
#- file drivers/leds/blink/Kconfig goes here
#- Flash and Torch LED drivers
#- file drivers/leds/flash/Kconfig goes here
@@ -3620,7 +3635,10 @@ LEDS_SGM3140 all=m
#-
#- *** FILE: drivers/leds/flash/Kconfig ***
#-
+LEDS_AS3645A all=m
+LEDS_LM3601X all=m
LEDS_RT8515 all=m
+LEDS_SGM3140 all=m
#-
#- *** FILE: drivers/leds/trigger/Kconfig ***
@@ -3645,13 +3663,6 @@ LEDS_TRIGGER_PATTERN all=m
LEDS_TRIGGER_AUDIO all=m
LEDS_TRIGGER_TTY all=m
-#-
-#- *** FILE: drivers/lightnvm/Kconfig ***
-#-
-NVM all=y
-NVM_PBLK all=m
-NVM_PBLK_DEBUG all=n
-
#-
#- *** FILE: drivers/macintosh/Kconfig ***
#-
@@ -5130,6 +5141,7 @@ MTD_TESTS all=m
MTD_BLKDEVS all=m
MTD_BLOCK all=m
MTD_BLOCK_RO all=m
+#- Note that in some cases UBI block is preferred. See MTD_UBI_BLOCK.
FTL all=m
NFTL all=m
NFTL_RW all=y
@@ -5383,6 +5395,7 @@ MHI_NET all=m
#- file drivers/net/ipa/Kconfig goes here
NET_SB1000 all=m
#- file drivers/net/phy/Kconfig goes here
+#- file drivers/net/mctp/Kconfig goes here
#- file drivers/net/mdio/Kconfig goes here
#- file drivers/net/pcs/Kconfig goes here
#- file drivers/net/plip/Kconfig goes here
@@ -5691,6 +5704,7 @@ DNET all=m
#- file drivers/net/ethernet/microsoft/Kconfig goes here
#- file drivers/net/ethernet/xscale/Kconfig goes here
JME all=m
+#- file drivers/net/ethernet/litex/Kconfig goes here
#- file drivers/net/ethernet/marvell/Kconfig goes here
#- file drivers/net/ethernet/mediatek/Kconfig goes here
#- file drivers/net/ethernet/mellanox/Kconfig goes here
@@ -6043,6 +6057,11 @@ ICE all=m
FM10K all=m
IGC all=m
+#-
+#- *** FILE: drivers/net/ethernet/litex/Kconfig ***
+#-
+NET_VENDOR_LITEX all=y
+
#-
#- *** FILE: drivers/net/ethernet/marvell/Kconfig ***
#-
@@ -6514,6 +6533,7 @@ LSI_ET1011C_PHY all=m
MARVELL_PHY all=m
MARVELL_10G_PHY all=m
MARVELL_88X2222_PHY all=m
+MAXLINEAR_GPHY all=m
MEDIATEK_GE_PHY=m
MICREL_PHY all=m
MICROCHIP_PHY all=m
@@ -6651,11 +6671,7 @@ PC300TOO all=m ia64=n ppc=n ppc64=n
N2 alpha=m i386=m
C101 alpha=m i386=m
FARSYNC all=m
-DSCC4_PCISYNC all=y
-DSCC4_PCI_RST all=y
LAPBETHER all=m
-SBNI i386=m x86_64=m
-SBNI_MULTILINE i386=y x86_64=y
#-
#- *** FILE: drivers/net/wireless/Kconfig ***
@@ -6898,7 +6914,6 @@ WLAN_VENDOR_INTERSIL all=y
#- file drivers/net/wireless/intersil/hostap/Kconfig goes here
#- file drivers/net/wireless/intersil/orinoco/Kconfig goes here
#- file drivers/net/wireless/intersil/p54/Kconfig goes here
-PRISM54 all=m
#-
#- *** FILE: drivers/net/wireless/intersil/hostap/Kconfig ***
@@ -7192,6 +7207,7 @@ ZD1211RW_DEBUG all=n
WWAN all=y
WWAN_HWSIM=m
MHI_WWAN_CTRL all=m
+MHI_WWAN_MBIM all=m
RPMSG_WWAN_CTRL=m
IOSM=m
@@ -7700,8 +7716,6 @@ X86_PLATFORM_DEVICES i386=y x86_64=y
ACPI_WMI all=m
WMI_BMOF all=m
HUAWEI_WMI all=m
-INTEL_WMI_SBL_FW_UPDATE all=m
-INTEL_WMI_THUNDERBOLT all=m
MXM_WMI all=m
PEAQ_WMI all=m
XIAOMI_WMI all=m
@@ -7716,6 +7730,7 @@ ASUS_LAPTOP i386=m x86_64=m
ASUS_WIRELESS all=m
ASUS_WMI all=m
ASUS_NB_WMI all=m
+MERAKI_MX100 all=m
EEEPC_LAPTOP all=m
EEEPC_WMI all=m
#- file drivers/platform/x86/dell/Kconfig goes here
@@ -7739,13 +7754,6 @@ THINKPAD_ACPI_VIDEO all=y
THINKPAD_ACPI_HOTKEY_POLL all=y
THINKPAD_LMI=m
#- file drivers/platform/x86/intel/Kconfig goes here
-INTEL_ATOMISP2_LED all=m
-INTEL_ATOMISP2_PM all=m
-INTEL_HID_EVENT all=m
-INTEL_INT0002_VGPIO all=m
-INTEL_MENLOW all=m
-INTEL_OAKTRAIL all=m
-INTEL_VBTN all=m
MSI_LAPTOP i386=m x86_64=m
MSI_WMI all=m
XO15_EBOOK all=m
@@ -7767,24 +7775,10 @@ TOPSTAR_LAPTOP all=m
I2C_MULTI_INSTANTIATE all=m
MLX_PLATFORM all=m
INTEL_IPS all=m
-INTEL_RST all=m
-INTEL_SMARTCONNECT all=m
-#- file drivers/platform/x86/intel_speed_select_if/Kconfig goes here
-INTEL_TURBO_MAX_3 all=y
-INTEL_UNCORE_FREQ_CONTROL all=m
-INTEL_BXTWC_PMIC_TMU all=m
-INTEL_CHTDC_TI_PWRBTN all=m
-INTEL_MRFLD_PWRBTN all=m
-INTEL_PMC_CORE all=y
-INTEL_PMT_CLASS all=m
-INTEL_PMT_TELEMETRY all=m
-INTEL_PMT_CRASHLOG all=m
-INTEL_PUNIT_IPC all=m
INTEL_SCU_IPC i386=y
INTEL_SCU_PCI all=y
INTEL_SCU_PLATFORM all=m
INTEL_SCU_IPC_UTIL all=m
-INTEL_TELEMETRY all=m
#-
#- *** FILE: drivers/platform/x86/dell/Kconfig ***
@@ -7809,8 +7803,38 @@ DELL_WMI_SYSMAN all=m
#- *** FILE: drivers/platform/x86/intel/Kconfig ***
#-
X86_PLATFORM_DRIVERS_INTEL=y
+#- file drivers/platform/x86/intel/atomisp2/Kconfig goes here
+#- file drivers/platform/x86/intel/int1092/Kconfig goes here
#- file drivers/platform/x86/intel/int33fe/Kconfig goes here
#- file drivers/platform/x86/intel/int3472/Kconfig goes here
+#- file drivers/platform/x86/intel/pmc/Kconfig goes here
+#- file drivers/platform/x86/intel/pmt/Kconfig goes here
+#- file drivers/platform/x86/intel/speed_select_if/Kconfig goes here
+#- file drivers/platform/x86/intel/telemetry/Kconfig goes here
+#- file drivers/platform/x86/intel/wmi/Kconfig goes here
+INTEL_HID_EVENT all=m
+INTEL_VBTN all=m
+INTEL_INT0002_VGPIO all=m
+INTEL_OAKTRAIL all=m
+INTEL_BXTWC_PMIC_TMU all=m
+INTEL_CHTDC_TI_PWRBTN all=m
+INTEL_MRFLD_PWRBTN all=m
+INTEL_PUNIT_IPC all=m
+INTEL_RST all=m
+INTEL_SMARTCONNECT all=m
+INTEL_TURBO_MAX_3 all=y
+INTEL_UNCORE_FREQ_CONTROL all=m
+
+#-
+#- *** FILE: drivers/platform/x86/intel/atomisp2/Kconfig ***
+#-
+INTEL_ATOMISP2_LED all=m
+INTEL_ATOMISP2_PM all=m
+
+#-
+#- *** FILE: drivers/platform/x86/intel/int1092/Kconfig ***
+#-
+INTEL_SAR_INT1092 all=m
#-
#- *** FILE: drivers/platform/x86/intel/int33fe/Kconfig ***
@@ -7823,10 +7847,33 @@ INTEL_CHT_INT33FE all=m
INTEL_SKL_INT3472=m
#-
-#- *** FILE: drivers/platform/x86/intel_speed_select_if/Kconfig ***
+#- *** FILE: drivers/platform/x86/intel/pmc/Kconfig ***
+#-
+INTEL_PMC_CORE all=y
+
+#-
+#- *** FILE: drivers/platform/x86/intel/pmt/Kconfig ***
+#-
+INTEL_PMT_CLASS all=m
+INTEL_PMT_TELEMETRY all=m
+INTEL_PMT_CRASHLOG all=m
+
+#-
+#- *** FILE: drivers/platform/x86/intel/speed_select_if/Kconfig ***
#-
INTEL_SPEED_SELECT_INTERFACE all=m
+#-
+#- *** FILE: drivers/platform/x86/intel/telemetry/Kconfig ***
+#-
+INTEL_TELEMETRY all=m
+
+#-
+#- *** FILE: drivers/platform/x86/intel/wmi/Kconfig ***
+#-
+INTEL_WMI_SBL_FW_UPDATE all=m
+INTEL_WMI_THUNDERBOLT all=m
+
#-
#- *** FILE: drivers/pnp/Kconfig ***
#-
@@ -7860,6 +7907,7 @@ POWER_RESET all=y
POWER_RESET_ATC260X all=m
POWER_RESET_MT6323 all=y
POWER_RESET_RESTART all=n
+POWER_RESET_TPS65086 all=y
#-
#- *** FILE: drivers/power/supply/Kconfig ***
@@ -7911,6 +7959,7 @@ CHARGER_LTC4162L all=m
CHARGER_MAX14577 all=m
CHARGER_MAX77693 all=m
CHARGER_MP2629 all=m
+CHARGER_MT6360 all=m
CHARGER_BQ2415X all=m
CHARGER_BQ24190 all=m
CHARGER_BQ24257 all=m
@@ -7927,6 +7976,7 @@ BATTERY_GOLDFISH all=m
BATTERY_RT5033 all=m
CHARGER_RT9455 all=m
CHARGER_CROS_USBPD all=m
+CHARGER_CROS_PCHG all=m
CHARGER_BD99954 all=m
CHARGER_WILCO all=m
BATTERY_SURFACE all=m
@@ -8087,7 +8137,9 @@ REGULATOR_RT4831=m
REGULATOR_RT5033 all=m
REGULATOR_RT6160=m
REGULATOR_RT6245=m
+REGULATOR_RTQ2134 all=m
REGULATOR_RTMV20 all=m
+REGULATOR_RTQ6752 all=m
REGULATOR_SKY81452 all=m
REGULATOR_SLG51000 all=m
REGULATOR_TPS51632 all=m
@@ -8273,6 +8325,7 @@ BLK_DEV_SD all=m
CHR_DEV_ST all=m
BLK_DEV_SR all=m
CHR_DEV_SG all=m
+BLK_DEV_BSG all=y
CHR_DEV_SCH all=m
SCSI_ENCLOSURE all=m
SCSI_CONSTANTS all=y
@@ -8545,6 +8598,7 @@ SCSI_UFS_CDNS_PLATFORM all=m
SCSI_UFS_DWC_TC_PLATFORM all=m
SCSI_UFS_BSG all=y
SCSI_UFS_CRYPTO all=y
+SCSI_UFS_HPB all=y
#-
#- *** FILE: drivers/siox/Kconfig ***
@@ -8652,7 +8706,7 @@ STAGING all=y
#- file drivers/staging/rtl8192e/Kconfig goes here
#- file drivers/staging/rtl8723bs/Kconfig goes here
#- file drivers/staging/rtl8712/Kconfig goes here
-#- file drivers/staging/rtl8188eu/Kconfig goes here
+#- file drivers/staging/r8188eu/Kconfig goes here
#- file drivers/staging/rts5208/Kconfig goes here
#- file drivers/staging/octeon/Kconfig goes here
#- file drivers/staging/octeon-usb/Kconfig goes here
@@ -8685,7 +8739,6 @@ STAGING all=y
#- file drivers/staging/fieldbus/Kconfig goes here
#- file drivers/staging/qlge/Kconfig goes here
#- file drivers/staging/wfx/Kconfig goes here
-#- file drivers/staging/hikey9xx/Kconfig goes here
#-
#- *** FILE: drivers/staging/axis-fifo/Kconfig ***
@@ -8929,7 +8982,7 @@ PI433 all=m
QLGE all=m
#-
-#- *** FILE: drivers/staging/rtl8188eu/Kconfig ***
+#- *** FILE: drivers/staging/r8188eu/Kconfig ***
#-
R8188EU all=m
88EU_AP_MODE all=y
@@ -9112,6 +9165,7 @@ INTEL_QUARK_DTS_THERMAL i386=m
INTEL_BXT_PMIC_THERMAL all=m
INTEL_PCH_THERMAL all=m
INTEL_TCC_COOLING all=m
+INTEL_MENLOW all=m
#-
#- *** FILE: drivers/thermal/intel/int340x_thermal/Kconfig ***
@@ -9759,6 +9813,7 @@ VDPA all=m
VDPA_SIM all=m
VDPA_SIM_NET all=m
VDPA_SIM_BLOCK all=m
+VDPA_USER all=m
IFCVF all=m
MLX5_VDPA_NET all=m
VP_VDPA all=m
@@ -9782,10 +9837,10 @@ VFIO_MDEV all=m
#-
#- *** FILE: drivers/vfio/pci/Kconfig ***
#-
-VFIO_PCI all=m
-VFIO_PCI_VGA all=y
VFIO_PCI_MMAP all=y
VFIO_PCI_INTX all=y
+VFIO_PCI all=m
+VFIO_PCI_VGA all=y
VFIO_PCI_IGD all=y
#-
@@ -10274,7 +10329,6 @@ FS_MBCACHE all=m
FS_DAX all=y
FS_POSIX_ACL all=y
FILE_LOCKING all=y
-MANDATORY_FILE_LOCKING all=y
#- file fs/crypto/Kconfig goes here
#- file fs/verity/Kconfig goes here
#- file fs/notify/Kconfig goes here
@@ -10290,6 +10344,7 @@ MANDATORY_FILE_LOCKING all=y
#- file fs/fat/Kconfig goes here
#- file fs/exfat/Kconfig goes here
#- file fs/ntfs/Kconfig goes here
+#- file fs/ntfs3/Kconfig goes here
#- file fs/proc/Kconfig goes here
#- file fs/kernfs/Kconfig goes here
#- file fs/sysfs/Kconfig goes here
@@ -10338,6 +10393,7 @@ NFS_COMMON all=y
#- file net/sunrpc/Kconfig goes here
#- file fs/ceph/Kconfig goes here
#- file fs/cifs/Kconfig goes here
+#- file fs/ksmbd/Kconfig goes here
#- file fs/coda/Kconfig goes here
#- file fs/afs/Kconfig goes here
#- file fs/9p/Kconfig goes here
@@ -10413,7 +10469,6 @@ BTRFS_FS_REF_VERIFY all=n
#-
CACHEFILES all=m
CACHEFILES_DEBUG all=n
-CACHEFILES_HISTOGRAM all=n
#-
#- *** FILE: fs/ceph/Kconfig ***
@@ -10429,7 +10484,6 @@ CEPH_FS_SECURITY_LABEL all=y
CIFS all=m
CIFS_STATS2 all=y
CIFS_ALLOW_INSECURE_LEGACY all=y
-CIFS_WEAK_PW_HASH all=y
CIFS_UPCALL all=y
CIFS_XATTR all=y
CIFS_POSIX all=y
@@ -10534,10 +10588,11 @@ F2FS_CHECK_FS all=y
F2FS_FAULT_INJECTION all=n
F2FS_FS_COMPRESSION all=y
F2FS_FS_LZO all=y
+F2FS_FS_LZORLE all=y
F2FS_FS_LZ4 all=y
F2FS_FS_LZ4HC all=y
F2FS_FS_ZSTD all=y
-F2FS_FS_LZORLE all=y
+F2FS_IOSTAT all=y
#-
#- *** FILE: fs/fat/Kconfig ***
@@ -10559,9 +10614,7 @@ VXFS_FS all=m
#-
FSCACHE all=m
FSCACHE_STATS=y
-FSCACHE_HISTOGRAM all=n
FSCACHE_DEBUG all=n
-FSCACHE_OBJECT_LIST all=n
#-
#- *** FILE: fs/fuse/Kconfig ***
@@ -10635,6 +10688,14 @@ JFS_SECURITY all=y
JFS_DEBUG all=n
JFS_STATISTICS all=y
+#-
+#- *** FILE: fs/ksmbd/Kconfig ***
+#-
+SMB_SERVER all=m
+SMB_SERVER_SMBDIRECT all=y
+SMB_SERVER_CHECK_CAP_NET_ADMIN all=y
+SMB_SERVER_KERBEROS5 all=y
+
#-
#- *** FILE: fs/minix/Kconfig ***
#-
@@ -10756,6 +10817,14 @@ NTFS_FS all=m
NTFS_DEBUG all=n
NTFS_RW all=y
+#-
+#- *** FILE: fs/ntfs3/Kconfig ***
+#-
+NTFS3_FS all=m
+NTFS3_64BIT_CLUSTER all=n
+NTFS3_LZX_XPRESS all=y
+NTFS3_FS_POSIX_ACL all=y
+
#-
#- *** FILE: fs/ocfs2/Kconfig ***
#-
@@ -10953,6 +11022,7 @@ ZONEFS_FS all=m
#-
INIT_ENV_ARG_LIMIT all=32
COMPILE_TEST all=n
+WERROR all=n
UAPI_HEADER_TEST all=y
LOCALVERSION_AUTO all=y
BUILD_SALT all=""
@@ -11002,6 +11072,7 @@ IKHEADERS all=m
LOG_BUF_SHIFT all=18
LOG_CPU_MAX_BUF_SHIFT all=12
PRINTK_SAFE_LOG_BUF_SHIFT all=13
+PRINTK_INDEX all=y
UCLAMP_TASK all=y
UCLAMP_BUCKETS_COUNT all=5
NUMA_BALANCING all=y
@@ -11427,7 +11498,6 @@ BUG_ON_DATA_CORRUPTION all=n
DEBUG_CREDENTIALS all=n
#- file kernel/rcu/Kconfig.debug goes here
DEBUG_WQ_FORCE_RR_CPU all=n
-DEBUG_BLOCK_EXT_DEVT all=n
CPU_HOTPLUG_STATE_CONTROL all=n
LATENCYTOP all=n
#- file kernel/trace/Kconfig goes here
@@ -11637,6 +11707,7 @@ PERCPU_STATS all=n
GUP_TEST all=n
#- GUP_TEST needs to have DEBUG_FS enabled
READ_ONLY_THP_FOR_FS all=n
+#- file mm/damon/Kconfig goes here
#-
#- *** FILE: mm/Kconfig.debug ***
@@ -11650,6 +11721,13 @@ DEBUG_RODATA_TEST all=n
DEBUG_WX all=y
PTDUMP_DEBUGFS all=n
+#-
+#- *** FILE: mm/damon/Kconfig ***
+#-
+DAMON all=y
+DAMON_VADDR all=y
+DAMON_DBGFS all=y
+
#-
#- *** FILE: net/6lowpan/Kconfig ***
#-
@@ -11758,6 +11836,7 @@ NET_DROP_MONITOR all=y
#- file net/rxrpc/Kconfig goes here
#- file net/kcm/Kconfig goes here
#- file net/strparser/Kconfig goes here
+#- file net/mctp/Kconfig goes here
FIB_RULES all=y
WIRELESS all=y
#- file net/wireless/Kconfig goes here
@@ -11968,7 +12047,6 @@ DNS_RESOLVER all=m
#- *** FILE: net/dsa/Kconfig ***
#-
NET_DSA all=m
-NET_DSA_TAG_8021Q all=m
NET_DSA_TAG_AR9331 all=m
NET_DSA_TAG_HELLCREEK all=m
NET_DSA_TAG_KSZ all=m
@@ -12129,6 +12207,7 @@ IPV6_PIMSM_V2 all=y
IPV6_SEG6_LWTUNNEL all=y
IPV6_SEG6_HMAC all=y
IPV6_RPL_LWTUNNEL all=y
+IPV6_IOAM6_LWTUNNEL all=y
#-
#- *** FILE: net/ipv6/netfilter/Kconfig ***
@@ -12212,6 +12291,11 @@ MAC80211_DEBUG_MENU all=n
#-
MAC802154 all=m
+#-
+#- *** FILE: net/mctp/Kconfig ***
+#-
+MCTP all=m
+
#-
#- *** FILE: net/mpls/Kconfig ***
#-
@@ -12796,6 +12880,7 @@ STACKLEAK_METRICS all=y
STACKLEAK_RUNTIME_DISABLE all=y
INIT_ON_ALLOC_DEFAULT_ON all=y
INIT_ON_FREE_DEFAULT_ON all=n
+ZERO_CALL_USED_REGS all=y
#-
#- *** FILE: security/apparmor/Kconfig ***
@@ -13177,6 +13262,8 @@ SND_HDA_CODEC_HDMI all=m
#- Set to Y if you want auto-loading the codec driver
SND_HDA_CODEC_CIRRUS all=m
#- Set to Y if you want auto-loading the codec driver
+SND_HDA_CODEC_CS8409 all=m
+#- Set to Y if you want auto-loading the codec driver
SND_HDA_CODEC_CONEXANT all=m
#- Set to Y if you want auto-loading the codec driver
SND_HDA_CODEC_CA0110 all=m
@@ -13266,6 +13353,7 @@ SND_SOC_AMD_ACP3x all=m
SND_SOC_AMD_RV_RT5682_MACH all=m
SND_SOC_AMD_RENOIR all=m
SND_SOC_AMD_RENOIR_MACH all=m
+SND_SOC_AMD_ACP5x all=m
#-
#- *** FILE: sound/soc/atmel/Kconfig ***
@@ -13332,6 +13420,7 @@ SND_SOC_ES8328_I2C all=m
SND_SOC_ES8328_SPI all=m
SND_SOC_GTM601 all=m
SND_SOC_HDAC_HDMI all=m
+SND_SOC_ICS43432 all=m
SND_SOC_INNO_RK3036 all=m
SND_SOC_MAX98088 all=m
SND_SOC_MAX98095 all=m
@@ -13606,7 +13695,6 @@ SND_SOC_SOF_ELKHARTLAKE all=m
SND_SOC_SOF_ALDERLAKE all=m
SND_SOC_SOF_HDA_LINK all=y
SND_SOC_SOF_HDA_AUDIO_CODEC all=y
-SND_SOC_SOF_HDA_ALWAYS_ENABLE_DMI_L1 all=y
SND_SOC_SOF_INTEL_SOUNDWIRE all=m
#-
@@ -13699,6 +13787,7 @@ RD_ZSTD all=y
AB3100_CORE all=y
AB3100_OTP all=m
BINFMT_EM86 alpha=m
+BLK_CMDLINE_PARSER all=y
BLK_DEV_4DRIVES alpha=m i386=m
BLK_DEV_AEC62XX all=m
BLK_DEV_ALI14XX alpha=m i386=m
@@ -13754,17 +13843,24 @@ BLK_DEV_TRM290 all=m
BLK_DEV_UMC8672 alpha=m i386=m
BLK_DEV_UMEM all=m
BLK_DEV_VIA82CXXX all=m
+CACHEFILES_HISTOGRAM all=n
CAIF_HSI all=m
+CIFS_WEAK_PW_HASH all=y
CYCLADES all=m
CYZ_INTR all=n
+DEBUG_BLOCK_EXT_DEVT all=n
DEFCONFIG_LIST all="/lib/modules/$UNAME_RELEASE/.config"
DEFXX_MMIO all=n
DEVKMEM all=y
DISCONTIGMEM_MANUAL all=n
DRM_AMDGPU_GART_DEBUGFS all=n
DRM_GMA600 all=y
+DSCC4_PCISYNC all=y
+DSCC4_PCI_RST all=y
EROFS_FS_CLUSTER_PAGE_LIMIT all=1
EXTCON_ARIZONA all=m
+FSCACHE_HISTOGRAM all=n
+FSCACHE_OBJECT_LIST all=n
HP_WIRELESS all=m
#* on PowerPC IDE must be 'y' to be able to select BLK_DEV_IDE_PMAC
IDE all=m ppc=y ppc64=y sparc=n
@@ -13779,17 +13875,26 @@ INFINIBAND_I40IW all=m
ISI all=m
KPC2000 all=n
LEDS_BLINK all=y
+MANDATORY_FILE_LOCKING all=y
MAX_RAW_DEVS all=1024
MLXSW_SWITCHIB all=m
MLXSW_SWITCHX2 all=m
MODULE_COMPRESS all=y
MOST_SOUND all=m
+NET_DSA_TAG_8021Q all=m
NF_LOG_BRIDGE all=m
NF_LOG_NETDEV all=m
+NVM all=y
+NVM_PBLK all=m
+NVM_PBLK_DEBUG all=n
+PRISM54 all=m
R3964 all=m
RAW_DRIVER all=m
ROCKETPORT all=m
+SBNI i386=m x86_64=m
+SBNI_MULTILINE i386=y x86_64=y
SENSORS_AMD_ENERGY all=m
+SND_SOC_SOF_HDA_ALWAYS_ENABLE_DMI_L1 all=y
SND_SOC_ZX_AUD96P22 all=m
STAGING_APEX_DRIVER all=m
STAGING_GASKET_FRAMEWORK all=m
@@ -13802,3 +13907,4 @@ WIMAX_DEBUG_LEVEL all=8
WIMAX_I2400M_DEBUG_LEVEL all=8
WIMAX_I2400M_USB all=m
WWAN_CORE all=m
+X86_SYSFB all=y
diff --git a/update-source.sh b/update-source.sh
index 46cf28d2..fc33254d 100755
--- a/update-source.sh
+++ b/update-source.sh
@@ -2,7 +2,7 @@
set -x
#BRANCH=aufs5.x-rcN
-BRANCH=aufs5.14
+BRANCH=aufs5.15
# aufs5
git clone git://github.com/sfjro/aufs5-standalone.git
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/kernel.git/commitdiff/758e9dad9651b5d1bad74f209dd0633e7a713660
More information about the pld-cvs-commit
mailing list