[packages/kernel] - updated to 5.12.1 - updated aufs - updated and refreshed kernel configs

baggins baggins at pld-linux.org
Sun May 2 21:03:30 CEST 2021


commit 0b2a12c600104f62414d1781c8a44668c2c7fd2d
Author: Jan Rękorajski <baggins at pld-linux.org>
Date:   Sun May 2 21:02:45 2021 +0200

    - updated to 5.12.1
    - updated aufs
    - updated and refreshed kernel configs

 kernel-aufs5.patch      | 759 ++++++++++++++++++++++++++++--------------------
 kernel-multiarch.config | 634 ++++++++++++++--------------------------
 kernel-x86.config       |  85 +-----
 kernel.spec             |   4 +-
 4 files changed, 675 insertions(+), 807 deletions(-)
---
diff --git a/kernel.spec b/kernel.spec
index 4c7198cb..57072005 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -73,7 +73,7 @@
 
 %define		rel		0.1
 %define		basever		5.12
-%define		postver		.0
+%define		postver		.1
 
 # define this to '-%{basever}' for longterm branch
 %define		versuffix	%{nil}
@@ -127,7 +127,7 @@ Source0:	https://www.kernel.org/pub/linux/kernel/v5.x/linux-%{basever}.tar.xz
 # Source0-md5:	8c7420990de85f6754db287337da08b4
 %if "%{postver}" != ".0"
 Patch0:		https://www.kernel.org/pub/linux/kernel/v5.x/patch-%{version}.xz
-# Patch0-md5:	17988eec11ae720fcb70d03746531b84
+# Patch0-md5:	d8273731ed72ed885ab815d3805ecd67
 %endif
 Source1:	kernel.sysconfig
 
diff --git a/kernel-aufs5.patch b/kernel-aufs5.patch
index 76f3cabe..585f402a 100644
--- a/kernel-aufs5.patch
+++ b/kernel-aufs5.patch
@@ -1,8 +1,8 @@
 SPDX-License-Identifier: GPL-2.0
-aufs5.11 kbuild patch
+aufs5.12 kbuild patch
 
 diff --git a/fs/Kconfig b/fs/Kconfig
-index da524c4d7b7e0..50ab89368c2b5 100644
+index a55bda4233bbe..c4984b5bf340f 100644
 --- a/fs/Kconfig
 +++ b/fs/Kconfig
 @@ -288,6 +288,7 @@ source "fs/sysv/Kconfig"
@@ -14,22 +14,22 @@ index da524c4d7b7e0..50ab89368c2b5 100644
  endif # MISC_FILESYSTEMS
  
 diff --git a/fs/Makefile b/fs/Makefile
-index 999d1a23f036c..0cd76857ca764 100644
+index 3215fe205256d..7218277473b8f 100644
 --- a/fs/Makefile
 +++ b/fs/Makefile
-@@ -136,3 +136,4 @@ obj-$(CONFIG_EFIVAR_FS)		+= efivarfs/
+@@ -135,3 +135,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.11 base patch
+aufs5.12 base patch
 
 diff --git a/MAINTAINERS b/MAINTAINERS
-index bfc1b86e3e733..cf773a5624338 100644
+index 9450e052f1b13..f7db6edba5a37 100644
 --- a/MAINTAINERS
 +++ b/MAINTAINERS
-@@ -3017,6 +3017,19 @@ F:	include/linux/audit.h
+@@ -2992,6 +2992,19 @@ F:	include/linux/audit.h
  F:	include/uapi/linux/audit.h
  F:	kernel/audit*
  
@@ -50,7 +50,7 @@ index bfc1b86e3e733..cf773a5624338 100644
  M:	Miguel Ojeda <ojeda at kernel.org>
  S:	Maintained
 diff --git a/drivers/block/loop.c b/drivers/block/loop.c
-index e5ff328f09175..39d539df0349d 100644
+index a370cde3ddd49..01ca256575fb2 100644
 --- a/drivers/block/loop.c
 +++ b/drivers/block/loop.c
 @@ -761,6 +761,24 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev,
@@ -79,10 +79,10 @@ index e5ff328f09175..39d539df0349d 100644
  
  static ssize_t loop_attr_show(struct device *dev, char *page,
 diff --git a/fs/dcache.c b/fs/dcache.c
-index 97e81a844a966..a7522ebbca659 100644
+index 7d24ff7eb2068..3caa7ab4b84f1 100644
 --- a/fs/dcache.c
 +++ b/fs/dcache.c
-@@ -1292,7 +1292,7 @@ enum d_walk_ret {
+@@ -1318,7 +1318,7 @@ enum d_walk_ret {
   *
   * The @enter() callbacks are called with d_lock held.
   */
@@ -92,10 +92,10 @@ index 97e81a844a966..a7522ebbca659 100644
  {
  	struct dentry *this_parent;
 diff --git a/fs/fcntl.c b/fs/fcntl.c
-index 05b36b28f2e87..e747a47a97da4 100644
+index dfc72f15be7fc..d8a12eb63961d 100644
 --- a/fs/fcntl.c
 +++ b/fs/fcntl.c
-@@ -32,7 +32,7 @@
+@@ -33,7 +33,7 @@
  
  #define SETFL_MASK (O_APPEND | O_NONBLOCK | O_NDELAY | O_DIRECT | O_NOATIME)
  
@@ -104,7 +104,7 @@ index 05b36b28f2e87..e747a47a97da4 100644
  {
  	struct inode * inode = file_inode(filp);
  	int error = 0;
-@@ -63,6 +63,8 @@ static int setfl(int fd, struct file * filp, unsigned long arg)
+@@ -64,6 +64,8 @@ static int setfl(int fd, struct file * filp, unsigned long arg)
  
  	if (filp->f_op->check_flags)
  		error = filp->f_op->check_flags(arg);
@@ -114,10 +114,10 @@ index 05b36b28f2e87..e747a47a97da4 100644
  		return error;
  
 diff --git a/fs/inode.c b/fs/inode.c
-index 6442d97d9a4ab..e4a25c3fa9e55 100644
+index a047ab306f9a8..ba1df0895b69f 100644
 --- a/fs/inode.c
 +++ b/fs/inode.c
-@@ -1769,7 +1769,7 @@ EXPORT_SYMBOL(generic_update_time);
+@@ -1772,7 +1772,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 6442d97d9a4ab..e4a25c3fa9e55 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 9d33909d0f9e3..3e16fc64df8b8 100644
+index 56bb5a5fdc0d0..540679d7e0434 100644
 --- a/fs/namespace.c
 +++ b/fs/namespace.c
-@@ -792,6 +792,12 @@ static inline int check_mnt(struct mount *mnt)
+@@ -807,6 +807,12 @@ static inline int check_mnt(struct mount *mnt)
  	return mnt->mnt_ns == current->nsproxy->mnt_ns;
  }
  
@@ -144,10 +144,10 @@ index 9d33909d0f9e3..3e16fc64df8b8 100644
   * vfsmount lock must be held for write
   */
 diff --git a/fs/splice.c b/fs/splice.c
-index 866d5c2367b23..55b5356262085 100644
+index 5dbce4dcc1a7d..3e6ba363b7775 100644
 --- a/fs/splice.c
 +++ b/fs/splice.c
-@@ -756,8 +756,8 @@ static int warn_unsupported(struct file *file, const char *op)
+@@ -759,8 +759,8 @@ static int warn_unsupported(struct file *file, const char *op)
  /*
   * Attempt to initiate a splice from pipe to file.
   */
@@ -158,7 +158,7 @@ index 866d5c2367b23..55b5356262085 100644
  {
  	if (unlikely(!out->f_op->splice_write))
  		return warn_unsupported(out, "write");
-@@ -767,9 +767,9 @@ static long do_splice_from(struct pipe_inode_info *pipe, struct file *out,
+@@ -770,9 +770,9 @@ static long do_splice_from(struct pipe_inode_info *pipe, struct file *out,
  /*
   * Attempt to initiate a splice from a file to a pipe.
   */
@@ -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 fd47deea7c176..91f3fbe5b57ff 100644
+index ec8f3ddf4a6aa..4fa4b24535fde 100644
 --- a/include/linux/fs.h
 +++ b/include/linux/fs.h
-@@ -1330,6 +1330,7 @@ extern void fasync_free(struct fasync_struct *);
+@@ -1332,6 +1332,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 fd47deea7c176..91f3fbe5b57ff 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);
-@@ -1841,6 +1842,7 @@ struct file_operations {
+@@ -1909,6 +1910,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 fd47deea7c176..91f3fbe5b57ff 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);
-@@ -2326,6 +2328,7 @@ extern int current_umask(void);
+@@ -2428,6 +2430,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 fd47deea7c176..91f3fbe5b57ff 100644
  
  /* /sys/fs */
  extern struct kobject *fs_kobj;
-@@ -2562,6 +2565,7 @@ static inline bool sb_is_blkdev_sb(struct super_block *sb)
+@@ -2668,6 +2671,7 @@ static inline bool sb_is_blkdev_sb(struct super_block *sb)
  }
  
  void emergency_thaw_all(void);
@@ -221,10 +221,10 @@ index fd47deea7c176..91f3fbe5b57ff 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 b9e9adec73e8b..e152c49cc3163 100644
+index 7b7ebf2e28ec5..20c46305e057e 100644
 --- a/include/linux/lockdep.h
 +++ b/include/linux/lockdep.h
-@@ -241,6 +241,8 @@ static inline int lockdep_match_key(struct lockdep_map *lock,
+@@ -248,6 +248,8 @@ static inline int lockdep_match_key(struct lockdep_map *lock,
  	return lock->key == key;
  }
  
@@ -269,7 +269,7 @@ index a55179fd60fc3..8e21c53cf8831 100644
 +			 unsigned int flags);
  #endif
 diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c
-index bdaf4829098c0..5c3bff75de111 100644
+index f160f1c97ca1e..fe71c2737eb9e 100644
 --- a/kernel/locking/lockdep.c
 +++ b/kernel/locking/lockdep.c
 @@ -188,7 +188,7 @@ static
@@ -290,13 +290,13 @@ index bdaf4829098c0..5c3bff75de111 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.11 mmap patch
+aufs5.12 mmap patch
 
 diff --git a/fs/proc/base.c b/fs/proc/base.c
-index b3422cda2a91e..bda8e8ece7208 100644
+index 3851bfcdba56e..d632ddd5f5ee8 100644
 --- a/fs/proc/base.c
 +++ b/fs/proc/base.c
-@@ -2184,7 +2184,7 @@ static int map_files_get_link(struct dentry *dentry, struct path *path)
+@@ -2183,7 +2183,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 602e3a52884d8..a36614b84de16 100644
+index e862cab695838..5c45041943a6f 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 602e3a52884d8..a36614b84de16 100644
  		dev = inode->i_sb->s_dev;
  		ino = inode->i_ino;
  		pgoff = ((loff_t)vma->vm_pgoff) << PAGE_SHIFT;
-@@ -1862,7 +1865,7 @@ static int show_numa_map(struct seq_file *m, void *v)
+@@ -1861,7 +1864,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 ecdf8a8cd6aeb..d9b3ec02ecbef 100644
+index 8ba434287387b..6d23d40ad1523 100644
 --- a/include/linux/mm.h
 +++ b/include/linux/mm.h
-@@ -1715,6 +1715,28 @@ static inline void unmap_shared_mapping_range(struct address_space *mapping,
+@@ -1759,6 +1759,28 @@ static inline void unmap_shared_mapping_range(struct address_space *mapping,
  	unmap_mapping_range(mapping, holebegin, holelen, 0);
  }
  
@@ -396,10 +396,10 @@ index ecdf8a8cd6aeb..d9b3ec02ecbef 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 07d9acb5b19c4..2f395ab624f38 100644
+index 6613b26a88946..e94df45b5483a 100644
 --- a/include/linux/mm_types.h
 +++ b/include/linux/mm_types.h
-@@ -278,6 +278,7 @@ struct vm_region {
+@@ -279,6 +279,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 07d9acb5b19c4..2f395ab624f38 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
-@@ -357,6 +358,7 @@ struct vm_area_struct {
+@@ -358,6 +359,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,7 +416,7 @@ index 07d9acb5b19c4..2f395ab624f38 100644
  
  #ifdef CONFIG_SWAP
 diff --git a/kernel/fork.c b/kernel/fork.c
-index d66cd1014211b..a2addc21d63fc 100644
+index 426cd0c51f9eb..ea0ae494c6dde 100644
 --- a/kernel/fork.c
 +++ b/kernel/fork.c
 @@ -555,7 +555,7 @@ static __latent_entropy int dup_mmap(struct mm_struct *mm,
@@ -429,7 +429,7 @@ index d66cd1014211b..a2addc21d63fc 100644
  				put_write_access(inode);
  			i_mmap_lock_write(mapping);
 diff --git a/mm/Makefile b/mm/Makefile
-index b6cd2fffa4922..784e2cebe1eac 100644
+index 72227b24a6168..5d03943b08e03 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 b6cd2fffa4922..784e2cebe1eac 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 aa0e0fb046700..d883a19f4237e 100644
+index 6ce832dc59e73..8b7a71b6f0e6c 100644
 --- a/mm/filemap.c
 +++ b/mm/filemap.c
-@@ -2993,7 +2993,7 @@ vm_fault_t filemap_page_mkwrite(struct vm_fault *vmf)
+@@ -3162,7 +3162,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,7 +455,7 @@ index aa0e0fb046700..d883a19f4237e 100644
  	if (page->mapping != mapping) {
  		unlock_page(page);
 diff --git a/mm/mmap.c b/mm/mmap.c
-index dc7206032387c..09b10e20c097c 100644
+index 3f287599a7a30..eb36f1b18f048 100644
 --- a/mm/mmap.c
 +++ b/mm/mmap.c
 @@ -179,7 +179,7 @@ static struct vm_area_struct *remove_vma(struct vm_area_struct *vma)
@@ -467,7 +467,7 @@ index dc7206032387c..09b10e20c097c 100644
  	mpol_put(vma_policy(vma));
  	vm_area_free(vma);
  	return next;
-@@ -951,7 +951,7 @@ int __vma_adjust(struct vm_area_struct *vma, unsigned long start,
+@@ -949,7 +949,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 dc7206032387c..09b10e20c097c 100644
  		}
  		if (next->anon_vma)
  			anon_vma_merge(vma, next);
-@@ -1897,7 +1897,7 @@ unsigned long mmap_region(struct file *file, unsigned long addr,
+@@ -1895,7 +1895,7 @@ unsigned long mmap_region(struct file *file, unsigned long addr,
  	return addr;
  
  unmap_and_free_vma:
@@ -485,7 +485,7 @@ index dc7206032387c..09b10e20c097c 100644
  	vma->vm_file = NULL;
  
  	/* Undo any partial mapping done by a device driver. */
-@@ -2757,7 +2757,7 @@ int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
+@@ -2755,7 +2755,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 dc7206032387c..09b10e20c097c 100644
  
  	if (new->vm_ops && new->vm_ops->open)
  		new->vm_ops->open(new);
-@@ -2776,7 +2776,7 @@ int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
+@@ -2774,7 +2774,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 dc7206032387c..09b10e20c097c 100644
  	unlink_anon_vmas(new);
   out_free_mpol:
  	mpol_put(vma_policy(new));
-@@ -2969,7 +2969,7 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size,
+@@ -2967,7 +2967,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 dc7206032387c..09b10e20c097c 100644
  
  	pr_warn_once("%s (%d) uses deprecated remap_file_pages() syscall. See Documentation/vm/remap_file_pages.rst.\n",
  		     current->comm, current->pid);
-@@ -3044,10 +3044,27 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size,
+@@ -3042,10 +3042,27 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size,
  		}
  	}
  
@@ -541,7 +541,7 @@ index dc7206032387c..09b10e20c097c 100644
  out:
  	mmap_write_unlock(mm);
  	if (populate)
-@@ -3334,7 +3351,7 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap,
+@@ -3332,7 +3349,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 dc7206032387c..09b10e20c097c 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 870fea12823e6..edbc99eee5b6b 100644
+index 5c9ab799c0e63..dd78905704c12 100644
 --- a/mm/nommu.c
 +++ b/mm/nommu.c
 @@ -533,7 +533,7 @@ static void __put_nommu_region(struct vm_region *region)
@@ -687,13 +687,13 @@ index 0000000000000..00d51187c3250
 +}
 +#endif /* !CONFIG_MMU */
 SPDX-License-Identifier: GPL-2.0
-aufs5.11 standalone patch
+aufs5.12 standalone patch
 
 diff --git a/fs/dcache.c b/fs/dcache.c
-index a7522ebbca659..d429c984133ca 100644
+index 3caa7ab4b84f1..00e97c9ae7c45 100644
 --- a/fs/dcache.c
 +++ b/fs/dcache.c
-@@ -1397,6 +1397,7 @@ void d_walk(struct dentry *parent, void *data,
+@@ -1423,6 +1423,7 @@ void d_walk(struct dentry *parent, void *data,
  	seq = 1;
  	goto again;
  }
@@ -701,7 +701,7 @@ index a7522ebbca659..d429c984133ca 100644
  
  struct check_mount {
  	struct vfsmount *mnt;
-@@ -2942,6 +2943,7 @@ void d_exchange(struct dentry *dentry1, struct dentry *dentry2)
+@@ -2968,6 +2969,7 @@ void d_exchange(struct dentry *dentry1, struct dentry *dentry2)
  
  	write_sequnlock(&rename_lock);
  }
@@ -710,7 +710,7 @@ index a7522ebbca659..d429c984133ca 100644
  /**
   * d_ancestor - search for an ancestor
 diff --git a/fs/exec.c b/fs/exec.c
-index 5d4d52039105c..adc75877cdee7 100644
+index 18594f11c31fe..ac38c0424d2a3 100644
 --- a/fs/exec.c
 +++ b/fs/exec.c
 @@ -114,6 +114,7 @@ bool path_noexec(const struct path *path)
@@ -722,10 +722,10 @@ index 5d4d52039105c..adc75877cdee7 100644
  #ifdef CONFIG_USELIB
  /*
 diff --git a/fs/fcntl.c b/fs/fcntl.c
-index e747a47a97da4..d6211ff25c9a4 100644
+index d8a12eb63961d..0532996186311 100644
 --- a/fs/fcntl.c
 +++ b/fs/fcntl.c
-@@ -85,6 +85,7 @@ int setfl(int fd, struct file *filp, unsigned long arg)
+@@ -86,6 +86,7 @@ int setfl(int fd, struct file *filp, unsigned long arg)
   out:
  	return error;
  }
@@ -754,10 +754,10 @@ index 45437f8e1003e..786af52904fcf 100644
  void __init files_init(void)
  {
 diff --git a/fs/inode.c b/fs/inode.c
-index e4a25c3fa9e55..497326faa1247 100644
+index ba1df0895b69f..0672530acf7dd 100644
 --- a/fs/inode.c
 +++ b/fs/inode.c
-@@ -1775,6 +1775,7 @@ int update_time(struct inode *inode, struct timespec64 *time, int flags)
+@@ -1778,6 +1778,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 e4a25c3fa9e55..497326faa1247 100644
  /**
   *	atime_needs_update	-	update the access time
 diff --git a/fs/namespace.c b/fs/namespace.c
-index 3e16fc64df8b8..eed3453ec40a8 100644
+index 540679d7e0434..74957d5edaa86 100644
 --- a/fs/namespace.c
 +++ b/fs/namespace.c
-@@ -431,6 +431,7 @@ void __mnt_drop_write(struct vfsmount *mnt)
+@@ -438,6 +438,7 @@ void __mnt_drop_write(struct vfsmount *mnt)
  	mnt_dec_writers(real_mount(mnt));
  	preempt_enable();
  }
@@ -777,7 +777,7 @@ index 3e16fc64df8b8..eed3453ec40a8 100644
  
  /**
   * mnt_drop_write - give up write access to a mount
-@@ -797,6 +798,7 @@ int is_current_mnt_ns(struct vfsmount *mnt)
+@@ -812,6 +813,7 @@ int is_current_mnt_ns(struct vfsmount *mnt)
  {
  	return check_mnt(real_mount(mnt));
  }
@@ -785,7 +785,7 @@ index 3e16fc64df8b8..eed3453ec40a8 100644
  
  /*
   * vfsmount lock must be held for write
-@@ -1967,6 +1969,7 @@ int iterate_mounts(int (*f)(struct vfsmount *, void *), void *arg,
+@@ -1985,6 +1987,7 @@ int iterate_mounts(int (*f)(struct vfsmount *, void *), void *arg,
  	}
  	return 0;
  }
@@ -794,7 +794,7 @@ index 3e16fc64df8b8..eed3453ec40a8 100644
  static void lock_mnt_tree(struct mount *mnt)
  {
 diff --git a/fs/notify/group.c b/fs/notify/group.c
-index a4a4b1c64d32a..86dc2efb1850c 100644
+index ffd723ffe46de..ec6172836b6f6 100644
 --- a/fs/notify/group.c
 +++ b/fs/notify/group.c
 @@ -100,6 +100,7 @@ void fsnotify_get_group(struct fsnotify_group *group)
@@ -806,10 +806,10 @@ index a4a4b1c64d32a..86dc2efb1850c 100644
  /*
   * Drop a reference to a group.  Free it if it's through.
 diff --git a/fs/open.c b/fs/open.c
-index 1e06e443a5651..c3bbb8aafcd1a 100644
+index e53af13b5835f..f37da065e6544 100644
 --- a/fs/open.c
 +++ b/fs/open.c
-@@ -65,6 +65,7 @@ int do_truncate(struct dentry *dentry, loff_t length, unsigned int time_attrs,
+@@ -65,6 +65,7 @@ int do_truncate(struct user_namespace *mnt_userns, struct dentry *dentry,
  	inode_unlock(dentry->d_inode);
  	return ret;
  }
@@ -818,7 +818,7 @@ index 1e06e443a5651..c3bbb8aafcd1a 100644
  long vfs_truncate(const struct path *path, loff_t length)
  {
 diff --git a/fs/read_write.c b/fs/read_write.c
-index 75f764b434184..7582bb3fb634b 100644
+index 9db7adf160d20..8dc93a57a933f 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)
@@ -838,10 +838,10 @@ index 75f764b434184..7582bb3fb634b 100644
  /* file_ppos returns &file->f_pos or NULL if file is stream */
  static inline loff_t *file_ppos(struct file *file)
 diff --git a/fs/splice.c b/fs/splice.c
-index 55b5356262085..c13ac0fbac318 100644
+index 3e6ba363b7775..7c1be373eb7cd 100644
 --- a/fs/splice.c
 +++ b/fs/splice.c
-@@ -763,6 +763,7 @@ long do_splice_from(struct pipe_inode_info *pipe, struct file *out,
+@@ -766,6 +766,7 @@ long do_splice_from(struct pipe_inode_info *pipe, struct file *out,
  		return warn_unsupported(out, "write");
  	return out->f_op->splice_write(pipe, out, ppos, len, flags);
  }
@@ -849,7 +849,7 @@ index 55b5356262085..c13ac0fbac318 100644
  
  /*
   * Attempt to initiate a splice from a file to a pipe.
-@@ -787,6 +788,7 @@ long do_splice_to(struct file *in, loff_t *ppos,
+@@ -795,6 +796,7 @@ long do_splice_to(struct file *in, loff_t *ppos,
  		return warn_unsupported(in, "read");
  	return in->f_op->splice_read(in, ppos, pipe, len, flags);
  }
@@ -870,10 +870,10 @@ index b7b5a0a0df6ff..fa5c7fba7f1ba 100644
  /*
   * Write out and wait upon all dirty data associated with this
 diff --git a/fs/xattr.c b/fs/xattr.c
-index fd57153b1f617..d8e9d0d6853ef 100644
+index b3444e06cded4..7b0f851b63d75 100644
 --- a/fs/xattr.c
 +++ b/fs/xattr.c
-@@ -371,6 +371,7 @@ vfs_getxattr_alloc(struct dentry *dentry, const char *name, char **xattr_value,
+@@ -383,6 +383,7 @@ vfs_getxattr_alloc(struct user_namespace *mnt_userns, struct dentry *dentry,
  	*xattr_value = value;
  	return error;
  }
@@ -882,7 +882,7 @@ index fd57153b1f617..d8e9d0d6853ef 100644
  ssize_t
  __vfs_getxattr(struct dentry *dentry, struct inode *inode, const char *name,
 diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c
-index 5c3bff75de111..ff00031462623 100644
+index fe71c2737eb9e..185531f89239a 100644
 --- a/kernel/locking/lockdep.c
 +++ b/kernel/locking/lockdep.c
 @@ -209,6 +209,7 @@ inline struct lock_class *lockdep_hlock_class(struct held_lock *hlock)
@@ -903,10 +903,10 @@ index 9cde961875c0a..ac8c79dc81813 100644
  }
 +EXPORT_SYMBOL_GPL(task_work_run);
 diff --git a/security/security.c b/security/security.c
-index 7b09cfbae94f7..3e060cc948262 100644
+index 5ac96b16f8fab..46d334d6ac1f6 100644
 --- a/security/security.c
 +++ b/security/security.c
-@@ -1094,6 +1094,7 @@ int security_path_rmdir(const struct path *dir, struct dentry *dentry)
+@@ -1102,6 +1102,7 @@ int security_path_rmdir(const struct path *dir, struct dentry *dentry)
  		return 0;
  	return call_int_hook(path_rmdir, 0, dir, dentry);
  }
@@ -914,7 +914,7 @@ index 7b09cfbae94f7..3e060cc948262 100644
  
  int security_path_unlink(const struct path *dir, struct dentry *dentry)
  {
-@@ -1110,6 +1111,7 @@ int security_path_symlink(const struct path *dir, struct dentry *dentry,
+@@ -1118,6 +1119,7 @@ int security_path_symlink(const struct path *dir, struct dentry *dentry,
  		return 0;
  	return call_int_hook(path_symlink, 0, dir, dentry, old_name);
  }
@@ -922,7 +922,7 @@ index 7b09cfbae94f7..3e060cc948262 100644
  
  int security_path_link(struct dentry *old_dentry, const struct path *new_dir,
  		       struct dentry *new_dentry)
-@@ -1118,6 +1120,7 @@ int security_path_link(struct dentry *old_dentry, const struct path *new_dir,
+@@ -1126,6 +1128,7 @@ int security_path_link(struct dentry *old_dentry, const struct path *new_dir,
  		return 0;
  	return call_int_hook(path_link, 0, old_dentry, new_dir, new_dentry);
  }
@@ -930,7 +930,7 @@ index 7b09cfbae94f7..3e060cc948262 100644
  
  int security_path_rename(const struct path *old_dir, struct dentry *old_dentry,
  			 const struct path *new_dir, struct dentry *new_dentry,
-@@ -1145,6 +1148,7 @@ int security_path_truncate(const struct path *path)
+@@ -1153,6 +1156,7 @@ int security_path_truncate(const struct path *path)
  		return 0;
  	return call_int_hook(path_truncate, 0, path);
  }
@@ -938,7 +938,7 @@ index 7b09cfbae94f7..3e060cc948262 100644
  
  int security_path_chmod(const struct path *path, umode_t mode)
  {
-@@ -1152,6 +1156,7 @@ int security_path_chmod(const struct path *path, umode_t mode)
+@@ -1160,6 +1164,7 @@ int security_path_chmod(const struct path *path, umode_t mode)
  		return 0;
  	return call_int_hook(path_chmod, 0, path, mode);
  }
@@ -946,7 +946,7 @@ index 7b09cfbae94f7..3e060cc948262 100644
  
  int security_path_chown(const struct path *path, kuid_t uid, kgid_t gid)
  {
-@@ -1159,6 +1164,7 @@ int security_path_chown(const struct path *path, kuid_t uid, kgid_t gid)
+@@ -1167,6 +1172,7 @@ int security_path_chown(const struct path *path, kuid_t uid, kgid_t gid)
  		return 0;
  	return call_int_hook(path_chown, 0, path, uid, gid);
  }
@@ -954,7 +954,7 @@ index 7b09cfbae94f7..3e060cc948262 100644
  
  int security_path_chroot(const struct path *path)
  {
-@@ -1259,6 +1265,7 @@ int security_inode_permission(struct inode *inode, int mask)
+@@ -1267,6 +1273,7 @@ int security_inode_permission(struct inode *inode, int mask)
  		return 0;
  	return call_int_hook(inode_permission, 0, inode, mask);
  }
@@ -962,7 +962,7 @@ index 7b09cfbae94f7..3e060cc948262 100644
  
  int security_inode_setattr(struct dentry *dentry, struct iattr *attr)
  {
-@@ -1451,6 +1458,7 @@ int security_file_permission(struct file *file, int mask)
+@@ -1464,6 +1471,7 @@ int security_file_permission(struct file *file, int mask)
  
  	return fsnotify_perm(file, mask);
  }
@@ -972,7 +972,7 @@ index 7b09cfbae94f7..3e060cc948262 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-02-24 13:33:42.737680181 +0100
++++ linux/Documentation/ABI/testing/debugfs-aufs	2021-05-02 20:15:14.666670785 +0200
 @@ -0,0 +1,55 @@
 +What:		/debug/aufs/si_<id>/
 +Date:		March 2009
@@ -1004,7 +1004,7 @@ diff -urN /usr/share/empty/Documentation/ABI/testing/debugfs-aufs linux/Document
 +		When the aufs mount option 'noxino' is specified, it
 +		will be empty. About XINO files, see the aufs manual.
 +
-+What:		/debug/aufs/si_<id>/xi0, xi1 ... xiN and xiN-N
++What:		/debug/aufs/si_<id>/xi<branch-index>
 +Date:		March 2009
 +Contact:	J. R. Okajima <hooanon05g at gmail.com>
 +Description:
@@ -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-02-24 13:33:42.737680181 +0100
++++ linux/Documentation/ABI/testing/sysfs-aufs	2021-05-02 20:15:14.666670785 +0200
 @@ -0,0 +1,31 @@
 +What:		/sys/fs/aufs/si_<id>/
 +Date:		March 2009
@@ -1041,14 +1041,14 @@ diff -urN /usr/share/empty/Documentation/ABI/testing/sysfs-aufs linux/Documentat
 +		per aufs mount, where <id> is a unique id generated
 +		internally.
 +
-+What:		/sys/fs/aufs/si_<id>/br0, br1 ... brN
++What:		/sys/fs/aufs/si_<id>/br<idx>
 +Date:		March 2009
 +Contact:	J. R. Okajima <hooanon05g at gmail.com>
 +Description:
 +		It shows the abolute path of a member directory (which
 +		is called branch) in aufs, and its permission.
 +
-+What:		/sys/fs/aufs/si_<id>/brid0, brid1 ... bridN
++What:		/sys/fs/aufs/si_<id>/brid<idx>
 +Date:		July 2013
 +Contact:	J. R. Okajima <hooanon05g at gmail.com>
 +Description:
@@ -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-02-24 13:33:42.737680181 +0100
++++ linux/Documentation/filesystems/aufs/design/01intro.txt	2021-05-02 20:15:14.666670785 +0200
 @@ -0,0 +1,171 @@
 +
 +# Copyright (C) 2005-2020 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-02-24 13:33:42.737680181 +0100
++++ linux/Documentation/filesystems/aufs/design/02struct.txt	2021-05-02 20:15:14.666670785 +0200
 @@ -0,0 +1,258 @@
 +
 +# Copyright (C) 2005-2020 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-02-24 13:33:42.737680181 +0100
++++ linux/Documentation/filesystems/aufs/design/03atomic_open.txt	2021-05-02 20:15:14.666670785 +0200
 @@ -0,0 +1,85 @@
 +
 +# Copyright (C) 2015-2020 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-02-24 13:33:42.737680181 +0100
++++ linux/Documentation/filesystems/aufs/design/03lookup.txt	2021-05-02 20:15:14.666670785 +0200
 @@ -0,0 +1,113 @@
 +
 +# Copyright (C) 2005-2020 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-02-24 13:33:42.737680181 +0100
++++ linux/Documentation/filesystems/aufs/design/04branch.txt	2021-05-02 20:15:14.670004120 +0200
 @@ -0,0 +1,74 @@
 +
 +# Copyright (C) 2005-2020 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-02-24 13:33:42.737680181 +0100
++++ linux/Documentation/filesystems/aufs/design/05wbr_policy.txt	2021-05-02 20:15:14.670004120 +0200
 @@ -0,0 +1,64 @@
 +
 +# Copyright (C) 2005-2020 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-02-24 13:33:42.737680181 +0100
++++ linux/Documentation/filesystems/aufs/design/06dirren.dot	2021-05-02 20:15:14.670004120 +0200
 @@ -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-02-24 13:33:42.737680181 +0100
++++ linux/Documentation/filesystems/aufs/design/06dirren.txt	2021-05-02 20:15:14.670004120 +0200
 @@ -0,0 +1,102 @@
 +
 +# Copyright (C) 2017-2020 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-02-24 13:33:42.737680181 +0100
++++ linux/Documentation/filesystems/aufs/design/06fhsm.txt	2021-05-02 20:15:14.670004120 +0200
 @@ -0,0 +1,120 @@
 +
 +# Copyright (C) 2011-2020 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-02-24 13:33:42.737680181 +0100
++++ linux/Documentation/filesystems/aufs/design/06mmap.txt	2021-05-02 20:15:14.670004120 +0200
 @@ -0,0 +1,72 @@
 +
 +# Copyright (C) 2005-2020 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-02-24 13:33:42.737680181 +0100
++++ linux/Documentation/filesystems/aufs/design/06xattr.txt	2021-05-02 20:15:14.670004120 +0200
 @@ -0,0 +1,96 @@
 +
 +# Copyright (C) 2014-2020 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-02-24 13:33:42.737680181 +0100
++++ linux/Documentation/filesystems/aufs/design/07export.txt	2021-05-02 20:15:14.670004120 +0200
 @@ -0,0 +1,58 @@
 +
 +# Copyright (C) 2005-2020 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-02-24 13:33:42.737680181 +0100
++++ linux/Documentation/filesystems/aufs/design/08shwh.txt	2021-05-02 20:15:14.670004120 +0200
 @@ -0,0 +1,52 @@
 +
 +# Copyright (C) 2005-2020 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-02-24 13:33:42.737680181 +0100
++++ linux/Documentation/filesystems/aufs/design/10dynop.txt	2021-05-02 20:15:14.670004120 +0200
 @@ -0,0 +1,47 @@
 +
 +# Copyright (C) 2010-2020 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-02-24 13:33:42.737680181 +0100
++++ linux/Documentation/filesystems/aufs/README	2021-05-02 20:15:14.666670785 +0200
 @@ -0,0 +1,401 @@
 +
 +Aufs5 -- advanced multi layered unification filesystem version 5.x
@@ -2870,7 +2870,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-02-24 13:33:42.741013619 +0100
++++ linux/fs/aufs/aufs.h	2021-05-02 20:15:14.670004120 +0200
 @@ -0,0 +1,62 @@
 +/* SPDX-License-Identifier: GPL-2.0 */
 +/*
@@ -2936,7 +2936,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-02-24 13:33:42.741013619 +0100
++++ linux/fs/aufs/branch.c	2021-05-02 20:15:14.670004120 +0200
 @@ -0,0 +1,1427 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -4367,8 +4367,8 @@ 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-02-24 13:33:42.741013619 +0100
-@@ -0,0 +1,364 @@
++++ linux/fs/aufs/branch.h	2021-05-02 20:15:14.670004120 +0200
+@@ -0,0 +1,375 @@
 +/* SPDX-License-Identifier: GPL-2.0 */
 +/*
 + * Copyright (C) 2005-2020 Junjiro R. Okajima
@@ -4517,6 +4517,11 @@ diff -urN /usr/share/empty/fs/aufs/branch.h linux/fs/aufs/branch.h
 +	return br->br_path.dentry;
 +}
 +
++static inline struct user_namespace *au_br_userns(struct au_branch *br)
++{
++	return mnt_user_ns(br->br_path.mnt);
++}
++
 +static inline struct super_block *au_br_sb(struct au_branch *br)
 +{
 +	return au_br_mnt(br)->mnt_sb;
@@ -4676,6 +4681,12 @@ diff -urN /usr/share/empty/fs/aufs/branch.h linux/fs/aufs/branch.h
 +}
 +
 +static inline
++struct user_namespace *au_sbr_userns(struct super_block *sb, aufs_bindex_t bindex)
++{
++	return au_br_userns(au_sbr(sb, bindex));
++}
++
++static inline
 +struct super_block *au_sbr_sb(struct super_block *sb, aufs_bindex_t bindex)
 +{
 +	return au_br_sb(au_sbr(sb, bindex));
@@ -4735,7 +4746,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-02-24 13:33:42.741013619 +0100
++++ linux/fs/aufs/conf.mk	2021-05-02 20:15:14.670004120 +0200
 @@ -0,0 +1,40 @@
 +# SPDX-License-Identifier: GPL-2.0
 +
@@ -4779,8 +4790,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-02-24 13:33:42.741013619 +0100
-@@ -0,0 +1,1445 @@
++++ linux/fs/aufs/cpup.c	2021-05-02 20:15:14.673337458 +0200
+@@ -0,0 +1,1457 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
 + * Copyright (C) 2005-2020 Junjiro R. Okajima
@@ -4947,7 +4958,7 @@ diff -urN /usr/share/empty/fs/aufs/cpup.c linux/fs/aufs/cpup.c
 +};
 +
 +static noinline_for_stack
-+int cpup_iattr(struct dentry *dst, aufs_bindex_t bindex, struct dentry *h_src,
++int cpup_iattr(struct dentry *dst, aufs_bindex_t bindex, struct path *h_src,
 +	       struct au_cpup_reg_attr *h_src_attr)
 +{
 +	int err, sbits, icex;
@@ -4959,11 +4970,11 @@ diff -urN /usr/share/empty/fs/aufs/cpup.c linux/fs/aufs/cpup.c
 +	struct kstat *h_st;
 +	struct au_branch *br;
 +
-+	h_path.dentry = au_h_dptr(dst, bindex);
-+	h_idst = d_inode(h_path.dentry);
 +	br = au_sbr(dst->d_sb, bindex);
 +	h_path.mnt = au_br_mnt(br);
-+	h_isrc = d_inode(h_src);
++	h_path.dentry = au_h_dptr(dst, bindex);
++	h_idst = d_inode(h_path.dentry);
++	h_isrc = d_inode(h_src->dentry);
 +	ia.ia_valid = ATTR_FORCE | ATTR_UID | ATTR_GID
 +		| ATTR_ATIME | ATTR_MTIME
 +		| ATTR_ATIME_SET | ATTR_MTIME_SET;
@@ -5007,7 +5018,7 @@ diff -urN /usr/share/empty/fs/aufs/cpup.c linux/fs/aufs/cpup.c
 +	if (!err) {
 +		mnt_flags = au_mntflags(dst->d_sb);
 +		verbose = !!au_opt_test(mnt_flags, VERBOSE);
-+		err = au_cpup_xattr(h_path.dentry, h_src, icex, verbose);
++		err = au_cpup_xattr(&h_path, h_src, icex, verbose);
 +	}
 +
 +	return err;
@@ -5377,16 +5388,18 @@ diff -urN /usr/share/empty/fs/aufs/cpup.c linux/fs/aufs/cpup.c
 +	int err;
 +	struct dentry *h_dentry;
 +	struct inode *h_inode;
++	struct user_namespace *h_userns;
 +
++	h_userns = mnt_user_ns(h_path->mnt);
 +	h_dentry = h_path->dentry;
 +	h_inode = d_inode(h_dentry);
 +	/* forget_all_cached_acls(h_inode)); */
-+	err = vfsub_removexattr(h_dentry, XATTR_NAME_POSIX_ACL_ACCESS);
++	err = vfsub_removexattr(h_userns, h_dentry, XATTR_NAME_POSIX_ACL_ACCESS);
 +	AuTraceErr(err);
 +	if (err == -EOPNOTSUPP)
 +		err = 0;
 +	if (!err)
-+		err = vfsub_acl_chmod(h_inode, mode);
++		err = vfsub_acl_chmod(h_userns, h_inode, mode);
 +
 +	AuTraceErr(err);
 +	return err;
@@ -5397,8 +5410,11 @@ diff -urN /usr/share/empty/fs/aufs/cpup.c linux/fs/aufs/cpup.c
 +{
 +	int err;
 +	struct inode *dir, *inode;
++	struct user_namespace *h_userns;
 +
-+	err = vfsub_removexattr(h_path->dentry, XATTR_NAME_POSIX_ACL_DEFAULT);
++	h_userns = mnt_user_ns(h_path->mnt);
++	err = vfsub_removexattr(h_userns, h_path->dentry,
++				XATTR_NAME_POSIX_ACL_DEFAULT);
 +	AuTraceErr(err);
 +	if (err == -EOPNOTSUPP)
 +		err = 0;
@@ -5579,6 +5595,7 @@ diff -urN /usr/share/empty/fs/aufs/cpup.c linux/fs/aufs/cpup.c
 +	struct inode *dst_inode, *h_dir, *inode, *delegated, *src_inode;
 +	struct super_block *sb;
 +	struct au_branch *br;
++	struct path h_src_path;
 +	/* to reduce stack size */
 +	struct {
 +		struct au_dtime dt;
@@ -5670,7 +5687,9 @@ diff -urN /usr/share/empty/fs/aufs/cpup.c linux/fs/aufs/cpup.c
 +	/* todo: necessary? */
 +	/* au_pin_hdir_unlock(cpg->pin); */
 +
-+	err = cpup_iattr(cpg->dentry, cpg->bdst, h_src, &a->h_src_attr);
++	h_src_path.dentry = h_src;
++	h_src_path.mnt = au_sbr_mnt(sb, cpg->bsrc);
++	err = cpup_iattr(cpg->dentry, cpg->bdst, &h_src_path, &a->h_src_attr);
 +	if (unlikely(err)) {
 +		/* todo: necessary? */
 +		/* au_pin_hdir_relock(cpg->pin); */ /* ignore an error */
@@ -5872,6 +5891,7 @@ diff -urN /usr/share/empty/fs/aufs/cpup.c linux/fs/aufs/cpup.c
 +	struct dentry *dentry, *parent;
 +	struct file *h_file;
 +	struct inode *h_dir;
++	struct user_namespace *h_userns;
 +
 +	dentry = cpg->dentry;
 +	h_file = NULL;
@@ -5885,7 +5905,8 @@ diff -urN /usr/share/empty/fs/aufs/cpup.c linux/fs/aufs/cpup.c
 +
 +	parent = dget_parent(dentry);
 +	h_dir = au_h_iptr(d_inode(parent), cpg->bdst);
-+	if (!au_test_h_perm_sio(h_dir, MAY_EXEC | MAY_WRITE)
++	h_userns = au_sbr_userns(dentry->d_sb, cpg->bdst);
++	if (!au_test_h_perm_sio(h_userns, h_dir, MAY_EXEC | MAY_WRITE)
 +	    && !au_cpup_sio_test(cpg->pin, d_inode(dentry)->i_mode))
 +		err = au_cpup_simple(cpg);
 +	else {
@@ -6055,6 +6076,7 @@ diff -urN /usr/share/empty/fs/aufs/cpup.c linux/fs/aufs/cpup.c
 +	struct inode *dir, *h_dir, *h_tmpdir;
 +	struct au_wbr *wbr;
 +	struct au_pin wh_pin, *pin_orig;
++	struct user_namespace *h_userns;
 +
 +	dentry = cpg->dentry;
 +	bdst = cpg->bdst;
@@ -6083,7 +6105,8 @@ diff -urN /usr/share/empty/fs/aufs/cpup.c linux/fs/aufs/cpup.c
 +		cpg->pin = &wh_pin;
 +	}
 +
-+	if (!au_test_h_perm_sio(h_tmpdir, MAY_EXEC | MAY_WRITE)
++	h_userns = au_sbr_userns(dentry->d_sb, bdst);
++	if (!au_test_h_perm_sio(h_userns, h_tmpdir, MAY_EXEC | MAY_WRITE)
 +	    && !au_cpup_sio_test(cpg->pin, d_inode(dentry)->i_mode))
 +		err = au_cpup_wh(cpg, file);
 +	else {
@@ -6228,7 +6251,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-02-24 13:33:42.741013619 +0100
++++ linux/fs/aufs/cpup.h	2021-05-02 20:15:14.673337458 +0200
 @@ -0,0 +1,100 @@
 +/* SPDX-License-Identifier: GPL-2.0 */
 +/*
@@ -6332,7 +6355,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-02-24 13:33:42.741013619 +0100
++++ linux/fs/aufs/dbgaufs.c	2021-05-02 20:15:14.673337458 +0200
 @@ -0,0 +1,526 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -6862,7 +6885,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-02-24 13:33:42.741013619 +0100
++++ linux/fs/aufs/dbgaufs.h	2021-05-02 20:15:14.673337458 +0200
 @@ -0,0 +1,53 @@
 +/* SPDX-License-Identifier: GPL-2.0 */
 +/*
@@ -6919,7 +6942,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-02-24 13:33:42.741013619 +0100
++++ linux/fs/aufs/dcsub.c	2021-05-02 20:15:14.673337458 +0200
 @@ -0,0 +1,225 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -7148,7 +7171,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-02-24 13:33:42.741013619 +0100
++++ linux/fs/aufs/dcsub.h	2021-05-02 20:15:14.673337458 +0200
 @@ -0,0 +1,137 @@
 +/* SPDX-License-Identifier: GPL-2.0 */
 +/*
@@ -7289,7 +7312,7 @@ 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-02-24 13:33:42.741013619 +0100
++++ linux/fs/aufs/debug.c	2021-05-02 20:15:14.673337458 +0200
 @@ -0,0 +1,441 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -7734,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-02-24 13:33:42.741013619 +0100
++++ linux/fs/aufs/debug.h	2021-05-02 20:15:14.673337458 +0200
 @@ -0,0 +1,226 @@
 +/* SPDX-License-Identifier: GPL-2.0 */
 +/*
@@ -7964,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-02-24 13:33:42.741013619 +0100
-@@ -0,0 +1,1154 @@
++++ linux/fs/aufs/dentry.c	2021-05-02 20:15:14.673337458 +0200
+@@ -0,0 +1,1160 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
 + * Copyright (C) 2005-2020 Junjiro R. Okajima
@@ -8003,6 +8026,7 @@ diff -urN /usr/share/empty/fs/aufs/dentry.c linux/fs/aufs/dentry.c
 +	struct dentry *h_dentry;
 +	struct inode *h_inode;
 +	struct au_branch *br;
++	struct user_namespace *h_userns;
 +	int wh_found, opq;
 +	unsigned char wh_able;
 +	const unsigned char allow_neg = !!au_ftest_lkup(args->flags, ALLOW_NEG);
@@ -8011,9 +8035,11 @@ 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_userns = au_br_userns(br);
 +	wh_able = !!au_br_whable(br->br_perm);
 +	if (wh_able)
-+		wh_found = au_wh_test(h_parent, &args->whname, ignore_perm);
++		wh_found = au_wh_test(h_userns, h_parent, &args->whname,
++				      ignore_perm);
 +	h_dentry = ERR_PTR(wh_found);
 +	if (!wh_found)
 +		goto real_lookup;
@@ -8030,7 +8056,7 @@ diff -urN /usr/share/empty/fs/aufs/dentry.c linux/fs/aufs/dentry.c
 +	if (!ignore_perm)
 +		h_dentry = vfsub_lkup_one(args->name, h_parent);
 +	else
-+		h_dentry = au_sio_lkup_one(args->name, h_parent);
++		h_dentry = au_sio_lkup_one(h_userns, args->name, h_parent);
 +	if (IS_ERR(h_dentry)) {
 +		if (PTR_ERR(h_dentry) == -ENAMETOOLONG
 +		    && !allow_neg)
@@ -8065,7 +8091,7 @@ diff -urN /usr/share/empty/fs/aufs/dentry.c linux/fs/aufs/dentry.c
 +		goto out; /* success */
 +
 +	inode_lock_shared_nested(h_inode, AuLsc_I_CHILD);
-+	opq = au_diropq_test(h_dentry);
++	opq = au_diropq_test(h_userns, h_dentry);
 +	inode_unlock_shared(h_inode);
 +	if (opq > 0)
 +		au_set_dbdiropq(dentry, bindex);
@@ -8210,12 +8236,13 @@ diff -urN /usr/share/empty/fs/aufs/dentry.c linux/fs/aufs/dentry.c
 +	return err;
 +}
 +
-+struct dentry *au_sio_lkup_one(struct qstr *name, struct dentry *parent)
++struct dentry *au_sio_lkup_one(struct user_namespace *userns, struct qstr *name,
++			       struct dentry *parent)
 +{
 +	struct dentry *dentry;
 +	int wkq_err;
 +
-+	if (!au_test_h_perm_sio(d_inode(parent), MAY_EXEC))
++	if (!au_test_h_perm_sio(userns, d_inode(parent), MAY_EXEC))
 +		dentry = vfsub_lkup_one(name, parent);
 +	else {
 +		struct vfsub_lkup_one_args args = {
@@ -8240,14 +8267,16 @@ diff -urN /usr/share/empty/fs/aufs/dentry.c linux/fs/aufs/dentry.c
 +	int err;
 +	struct dentry *parent, *h_parent, *h_dentry;
 +	struct au_branch *br;
++	struct user_namespace *h_userns;
 +
 +	parent = dget_parent(dentry);
 +	h_parent = au_h_dptr(parent, bindex);
 +	br = au_sbr(dentry->d_sb, bindex);
++	h_userns = au_br_userns(br);
 +	if (wh)
 +		h_dentry = au_whtmp_lkup(h_parent, br, &dentry->d_name);
 +	else
-+		h_dentry = au_sio_lkup_one(&dentry->d_name, h_parent);
++		h_dentry = au_sio_lkup_one(h_userns, &dentry->d_name, h_parent);
 +	err = PTR_ERR(h_dentry);
 +	if (IS_ERR(h_dentry))
 +		goto out;
@@ -9122,8 +9151,8 @@ 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-02-24 13:33:42.741013619 +0100
-@@ -0,0 +1,268 @@
++++ linux/fs/aufs/dentry.h	2021-05-02 20:15:14.673337458 +0200
+@@ -0,0 +1,269 @@
 +/* SPDX-License-Identifier: GPL-2.0 */
 +/*
 + * Copyright (C) 2005-2020 Junjiro R. Okajima
@@ -9199,7 +9228,8 @@ diff -urN /usr/share/empty/fs/aufs/dentry.h linux/fs/aufs/dentry.h
 +/* dentry.c */
 +extern const struct dentry_operations aufs_dop, aufs_dop_noreval;
 +struct au_branch;
-+struct dentry *au_sio_lkup_one(struct qstr *name, struct dentry *parent);
++struct dentry *au_sio_lkup_one(struct user_namespace *userns, struct qstr *name,
++			       struct dentry *parent);
 +int au_h_verify(struct dentry *h_dentry, unsigned int udba, struct inode *h_dir,
 +		struct dentry *h_parent, struct au_branch *br);
 +
@@ -9394,7 +9424,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-02-24 13:33:42.741013619 +0100
++++ linux/fs/aufs/dinfo.c	2021-05-02 20:15:14.673337458 +0200
 @@ -0,0 +1,554 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -9952,8 +9982,8 @@ 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-02-24 13:33:42.741013619 +0100
-@@ -0,0 +1,763 @@
++++ linux/fs/aufs/dir.c	2021-05-02 20:15:14.673337458 +0200
+@@ -0,0 +1,765 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
 + * Copyright (C) 2005-2020 Junjiro R. Okajima
@@ -10593,12 +10623,14 @@ diff -urN /usr/share/empty/fs/aufs/dir.c linux/fs/aufs/dir.c
 +	int err, wkq_err;
 +	struct dentry *h_dentry;
 +	struct inode *h_inode;
++	struct user_namespace *h_userns;
 +
++	h_userns = au_sbr_userns(dentry->d_sb, arg->bindex);
 +	h_dentry = au_h_dptr(dentry, arg->bindex);
 +	h_inode = d_inode(h_dentry);
 +	/* todo: i_mode changes anytime? */
 +	inode_lock_shared_nested(h_inode, AuLsc_I_CHILD);
-+	err = au_test_h_perm_sio(h_inode, MAY_EXEC | MAY_READ);
++	err = au_test_h_perm_sio(h_userns, h_inode, MAY_EXEC | MAY_READ);
 +	inode_unlock_shared(h_inode);
 +	if (!err)
 +		err = do_test_empty(dentry, arg);
@@ -10719,7 +10751,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-02-24 13:33:42.741013619 +0100
++++ linux/fs/aufs/dir.h	2021-05-02 20:15:14.673337458 +0200
 @@ -0,0 +1,134 @@
 +/* SPDX-License-Identifier: GPL-2.0 */
 +/*
@@ -10857,7 +10889,7 @@ diff -urN /usr/share/empty/fs/aufs/dir.h linux/fs/aufs/dir.h
 +#endif /* __AUFS_DIR_H__ */
 diff -urN /usr/share/empty/fs/aufs/dirren.c linux/fs/aufs/dirren.c
 --- /usr/share/empty/fs/aufs/dirren.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/dirren.c	2021-02-24 13:33:42.741013619 +0100
++++ linux/fs/aufs/dirren.c	2021-05-02 20:15:14.673337458 +0200
 @@ -0,0 +1,1316 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -11128,6 +11160,7 @@ diff -urN /usr/share/empty/fs/aufs/dirren.c linux/fs/aufs/dirren.c
 +	err = PTR_ERR(hinopath.dentry);
 +	if (IS_ERR(hinopath.dentry))
 +		goto out_unlock;
++	hinopath.mnt = path->mnt;
 +
 +	err = 0;
 +	flags = O_RDONLY;
@@ -11158,7 +11191,6 @@ diff -urN /usr/share/empty/fs/aufs/dirren.c linux/fs/aufs/dirren.c
 +		}
 +		flags = O_WRONLY;
 +	}
-+	hinopath.mnt = path->mnt;
 +	hinofile = vfsub_dentry_open(&hinopath, flags);
 +	if (suspend)
 +		au_hn_inode_unlock(hdir);
@@ -12177,7 +12209,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-02-24 13:33:42.741013619 +0100
++++ linux/fs/aufs/dirren.h	2021-05-02 20:15:14.673337458 +0200
 @@ -0,0 +1,140 @@
 +/* SPDX-License-Identifier: GPL-2.0 */
 +/*
@@ -12321,7 +12353,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-02-24 13:33:42.744347058 +0100
++++ linux/fs/aufs/dynop.c	2021-05-02 20:15:14.673337458 +0200
 @@ -0,0 +1,368 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -12693,7 +12725,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-02-24 13:33:42.744347058 +0100
++++ linux/fs/aufs/dynop.h	2021-05-02 20:15:14.673337458 +0200
 @@ -0,0 +1,77 @@
 +/* SPDX-License-Identifier: GPL-2.0 */
 +/*
@@ -12774,7 +12806,7 @@ 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-02-24 13:33:42.744347058 +0100
++++ linux/fs/aufs/export.c	2021-05-02 20:15:14.673337458 +0200
 @@ -0,0 +1,837 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -13615,7 +13647,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-02-24 13:33:42.744347058 +0100
++++ linux/fs/aufs/fhsm.c	2021-05-02 20:15:14.673337458 +0200
 @@ -0,0 +1,427 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -14046,7 +14078,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-02-24 13:33:42.744347058 +0100
++++ linux/fs/aufs/file.c	2021-05-02 20:15:14.673337458 +0200
 @@ -0,0 +1,863 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -14913,7 +14945,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-02-24 13:33:42.744347058 +0100
++++ linux/fs/aufs/file.h	2021-05-02 20:15:14.673337458 +0200
 @@ -0,0 +1,342 @@
 +/* SPDX-License-Identifier: GPL-2.0 */
 +/*
@@ -15259,7 +15291,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-02-24 13:33:42.744347058 +0100
++++ linux/fs/aufs/finfo.c	2021-05-02 20:15:14.673337458 +0200
 @@ -0,0 +1,149 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -15412,8 +15444,8 @@ diff -urN /usr/share/empty/fs/aufs/finfo.c linux/fs/aufs/finfo.c
 +}
 diff -urN /usr/share/empty/fs/aufs/f_op.c linux/fs/aufs/f_op.c
 --- /usr/share/empty/fs/aufs/f_op.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/f_op.c	2021-02-24 13:33:42.744347058 +0100
-@@ -0,0 +1,762 @@
++++ linux/fs/aufs/f_op.c	2021-05-02 20:15:14.673337458 +0200
+@@ -0,0 +1,771 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
 + * Copyright (C) 2005-2020 Junjiro R. Okajima
@@ -15775,6 +15807,15 @@ diff -urN /usr/share/empty/fs/aufs/f_op.c linux/fs/aufs/f_op.c
 +	return err;
 +}
 +
++/*
++ * We may be able to remove aufs_splice_{read,write}() since almost all FSes
++ * don't have their own .splice_{read,write} implimentations, and they use
++ * generic_file_splice_read() and iter_file_splice_write() who can act like the
++ * simple converters to f_op->iter_read() and ->iter_write().
++ * But we keep our own implementations because some non-mainlined FSes may have
++ * their own .splice_{read,write} implimentations and aufs doesn't want to take
++ * away an opportunity to co-work with aufs from them.
++ */
 +static ssize_t aufs_splice_read(struct file *file, loff_t *ppos,
 +				struct pipe_inode_info *pipe, size_t len,
 +				unsigned int flags)
@@ -16178,7 +16219,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-02-24 13:33:42.744347058 +0100
++++ linux/fs/aufs/fstype.h	2021-05-02 20:15:14.673337458 +0200
 @@ -0,0 +1,401 @@
 +/* SPDX-License-Identifier: GPL-2.0 */
 +/*
@@ -16583,7 +16624,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-02-24 13:33:42.744347058 +0100
++++ linux/fs/aufs/hbl.h	2021-05-02 20:15:14.673337458 +0200
 @@ -0,0 +1,65 @@
 +/* SPDX-License-Identifier: GPL-2.0 */
 +/*
@@ -16652,7 +16693,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-02-24 13:33:42.744347058 +0100
++++ linux/fs/aufs/hfsnotify.c	2021-05-02 20:15:14.673337458 +0200
 @@ -0,0 +1,288 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -16944,7 +16985,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-02-24 13:33:42.744347058 +0100
++++ linux/fs/aufs/hfsplus.c	2021-05-02 20:15:14.673337458 +0200
 @@ -0,0 +1,60 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -17008,7 +17049,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-02-24 13:33:42.744347058 +0100
++++ linux/fs/aufs/hnotify.c	2021-05-02 20:15:14.673337458 +0200
 @@ -0,0 +1,715 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -17727,7 +17768,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-02-24 13:33:42.744347058 +0100
++++ linux/fs/aufs/iinfo.c	2021-05-02 20:15:14.673337458 +0200
 @@ -0,0 +1,286 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -18017,8 +18058,8 @@ 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-02-24 13:33:42.744347058 +0100
-@@ -0,0 +1,529 @@
++++ linux/fs/aufs/inode.c	2021-05-02 20:15:14.673337458 +0200
+@@ -0,0 +1,531 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
 + * Copyright (C) 2005-2020 Junjiro R. Okajima
@@ -18533,25 +18574,27 @@ diff -urN /usr/share/empty/fs/aufs/inode.c linux/fs/aufs/inode.c
 +	return err;
 +}
 +
-+int au_test_h_perm(struct inode *h_inode, int mask)
++int au_test_h_perm(struct user_namespace *h_userns, struct inode *h_inode,
++		   int mask)
 +{
 +	if (uid_eq(current_fsuid(), GLOBAL_ROOT_UID))
 +		return 0;
-+	return inode_permission(h_inode, mask);
++	return inode_permission(h_userns, h_inode, mask);
 +}
 +
-+int au_test_h_perm_sio(struct inode *h_inode, int mask)
++int au_test_h_perm_sio(struct user_namespace *h_userns, struct inode *h_inode,
++		       int mask)
 +{
 +	if (au_test_nfs(h_inode->i_sb)
 +	    && (mask & MAY_WRITE)
 +	    && S_ISDIR(h_inode->i_mode))
 +		mask |= MAY_READ; /* force permission check */
-+	return au_test_h_perm(h_inode, mask);
++	return au_test_h_perm(h_userns, h_inode, mask);
 +}
 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-02-24 13:33:42.744347058 +0100
-@@ -0,0 +1,698 @@
++++ linux/fs/aufs/inode.h	2021-05-02 20:15:14.673337458 +0200
+@@ -0,0 +1,705 @@
 +/* SPDX-License-Identifier: GPL-2.0 */
 +/*
 + * Copyright (C) 2005-2020 Junjiro R. Okajima
@@ -18691,8 +18734,10 @@ diff -urN /usr/share/empty/fs/aufs/inode.h linux/fs/aufs/inode.h
 +struct inode *au_new_inode(struct dentry *dentry, int must_new);
 +int au_test_ro(struct super_block *sb, aufs_bindex_t bindex,
 +	       struct inode *inode);
-+int au_test_h_perm(struct inode *h_inode, int mask);
-+int au_test_h_perm_sio(struct inode *h_inode, int mask);
++int au_test_h_perm(struct user_namespace *h_userns, struct inode *h_inode,
++		   int mask);
++int au_test_h_perm_sio(struct user_namespace *h_userns, struct inode *h_inode,
++		       int mask);
 +
 +static inline int au_wh_ino(struct super_block *sb, aufs_bindex_t bindex,
 +			    ino_t h_ino, unsigned int d_type, ino_t *ino)
@@ -18767,18 +18812,21 @@ diff -urN /usr/share/empty/fs/aufs/inode.h linux/fs/aufs/inode.h
 +/* i_op_add.c */
 +int au_may_add(struct dentry *dentry, aufs_bindex_t bindex,
 +	       struct dentry *h_parent, int isdir);
-+int aufs_mknod(struct inode *dir, struct dentry *dentry, umode_t mode,
-+	       dev_t dev);
-+int aufs_symlink(struct inode *dir, struct dentry *dentry, const char *symname);
-+int aufs_create(struct inode *dir, struct dentry *dentry, umode_t mode,
-+		bool want_excl);
++int aufs_mknod(struct user_namespace *userns, struct inode *dir,
++	       struct dentry *dentry, umode_t mode, dev_t dev);
++int aufs_symlink(struct user_namespace *userns, struct inode *dir,
++		 struct dentry *dentry, const char *symname);
++int aufs_create(struct user_namespace *userns, struct inode *dir,
++		struct dentry *dentry, umode_t mode, bool want_excl);
 +struct vfsub_aopen_args;
 +int au_aopen_or_create(struct inode *dir, struct dentry *dentry,
 +		       struct vfsub_aopen_args *args);
-+int aufs_tmpfile(struct inode *dir, struct dentry *dentry, umode_t mode);
++int aufs_tmpfile(struct user_namespace *userns, struct inode *dir,
++		 struct dentry *dentry, umode_t mode);
 +int aufs_link(struct dentry *src_dentry, struct inode *dir,
 +	      struct dentry *dentry);
-+int aufs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode);
++int aufs_mkdir(struct user_namespace *userns, struct inode *dir,
++	       struct dentry *dentry, umode_t mode);
 +
 +/* i_op_del.c */
 +int au_wr_dir_need_wh(struct dentry *dentry, int isdir, aufs_bindex_t *bcpup);
@@ -18789,9 +18837,10 @@ diff -urN /usr/share/empty/fs/aufs/inode.h linux/fs/aufs/inode.h
 +
 +/* i_op_ren.c */
 +int au_wbr(struct dentry *dentry, aufs_bindex_t btgt);
-+int aufs_rename(struct inode *src_dir, struct dentry *src_dentry,
-+		struct inode *dir, struct dentry *dentry,
-+		unsigned int flags);
++int aufs_rename(struct user_namespace *userns,
++		struct inode *_src_dir, struct dentry *_src_dentry,
++		struct inode *_dst_dir, struct dentry *_dst_dentry,
++		unsigned int _flags);
 +
 +/* iinfo.c */
 +struct inode *au_h_iptr(struct inode *inode, aufs_bindex_t bindex);
@@ -18861,19 +18910,20 @@ diff -urN /usr/share/empty/fs/aufs/inode.h linux/fs/aufs/inode.h
 +
 +#ifdef CONFIG_AUFS_XATTR
 +/* xattr.c */
-+int au_cpup_xattr(struct dentry *h_dst, struct dentry *h_src, int ignore_flags,
++int au_cpup_xattr(struct path *h_dst, struct path *h_src, int ignore_flags,
 +		  unsigned int verbose);
 +ssize_t aufs_listxattr(struct dentry *dentry, char *list, size_t size);
 +void au_xattr_init(struct super_block *sb);
 +#else
-+AuStubInt0(au_cpup_xattr, struct dentry *h_dst, struct dentry *h_src,
++AuStubInt0(au_cpup_xattr, struct path *h_dst, struct path *h_src,
 +	   int ignore_flags, unsigned int verbose);
 +AuStubVoid(au_xattr_init, struct super_block *sb);
 +#endif
 +
 +#ifdef CONFIG_FS_POSIX_ACL
 +struct posix_acl *aufs_get_acl(struct inode *inode, int type);
-+int aufs_set_acl(struct inode *inode, struct posix_acl *acl, int type);
++int aufs_set_acl(struct user_namespace *userns, struct inode *inode,
++		 struct posix_acl *acl, int type);
 +#endif
 +
 +#if IS_ENABLED(CONFIG_AUFS_XATTR) || IS_ENABLED(CONFIG_FS_POSIX_ACL)
@@ -19252,7 +19302,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-02-24 13:33:42.744347058 +0100
++++ linux/fs/aufs/ioctl.c	2021-05-02 20:15:14.673337458 +0200
 @@ -0,0 +1,220 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -19476,8 +19526,8 @@ 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-02-24 13:33:42.744347058 +0100
-@@ -0,0 +1,936 @@
++++ linux/fs/aufs/i_op_add.c	2021-05-02 20:15:14.673337458 +0200
+@@ -0,0 +1,941 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
 + * Copyright (C) 2005-2020 Junjiro R. Okajima
@@ -19846,8 +19896,8 @@ diff -urN /usr/share/empty/fs/aufs/i_op_add.c linux/fs/aufs/i_op_add.c
 +	return err;
 +}
 +
-+int aufs_mknod(struct inode *dir, struct dentry *dentry, umode_t mode,
-+	       dev_t dev)
++int aufs_mknod(struct user_namespace *userns, struct inode *dir,
++	       struct dentry *dentry, umode_t mode, dev_t dev)
 +{
 +	struct simple_arg arg = {
 +		.type = Mknod,
@@ -19859,7 +19909,8 @@ diff -urN /usr/share/empty/fs/aufs/i_op_add.c linux/fs/aufs/i_op_add.c
 +	return add_simple(dir, dentry, &arg);
 +}
 +
-+int aufs_symlink(struct inode *dir, struct dentry *dentry, const char *symname)
++int aufs_symlink(struct user_namespace *userns, struct inode *dir,
++		 struct dentry *dentry, const char *symname)
 +{
 +	struct simple_arg arg = {
 +		.type = Symlink,
@@ -19868,8 +19919,8 @@ diff -urN /usr/share/empty/fs/aufs/i_op_add.c linux/fs/aufs/i_op_add.c
 +	return add_simple(dir, dentry, &arg);
 +}
 +
-+int aufs_create(struct inode *dir, struct dentry *dentry, umode_t mode,
-+		bool want_excl)
++int aufs_create(struct user_namespace *userns, struct inode *dir,
++		struct dentry *dentry, umode_t mode, bool want_excl)
 +{
 +	struct simple_arg arg = {
 +		.type = Creat,
@@ -19896,7 +19947,8 @@ diff -urN /usr/share/empty/fs/aufs/i_op_add.c linux/fs/aufs/i_op_add.c
 +	return add_simple(dir, dentry, &arg);
 +}
 +
-+int aufs_tmpfile(struct inode *dir, struct dentry *dentry, umode_t mode)
++int aufs_tmpfile(struct user_namespace *userns, struct inode *dir,
++		 struct dentry *dentry, umode_t mode)
 +{
 +	int err;
 +	aufs_bindex_t bindex;
@@ -19904,6 +19956,7 @@ diff -urN /usr/share/empty/fs/aufs/i_op_add.c linux/fs/aufs/i_op_add.c
 +	struct dentry *parent, *h_parent, *h_dentry;
 +	struct inode *h_dir, *inode;
 +	struct vfsmount *h_mnt;
++	struct user_namespace *h_userns;
 +	struct au_wr_dir_args wr_dir_args = {
 +		.force_btgt	= -1,
 +		.flags		= AuWrDir_TMPFILE
@@ -19950,8 +20003,9 @@ diff -urN /usr/share/empty/fs/aufs/i_op_add.c linux/fs/aufs/i_op_add.c
 +	if (unlikely(err))
 +		goto out_parent;
 +
++	h_userns = mnt_user_ns(h_mnt);
 +	h_parent = au_h_dptr(parent, bindex);
-+	h_dentry = vfs_tmpfile(h_parent, mode, /*open_flag*/0);
++	h_dentry = vfs_tmpfile(h_userns, h_parent, mode, /*open_flag*/0);
 +	if (IS_ERR(h_dentry)) {
 +		err = PTR_ERR(h_dentry);
 +		goto out_mnt;
@@ -20307,7 +20361,8 @@ diff -urN /usr/share/empty/fs/aufs/i_op_add.c linux/fs/aufs/i_op_add.c
 +	return err;
 +}
 +
-+int aufs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode)
++int aufs_mkdir(struct user_namespace *userns, struct inode *dir,
++	       struct dentry *dentry, umode_t mode)
 +{
 +	int err, rerr;
 +	aufs_bindex_t bindex;
@@ -20416,8 +20471,8 @@ diff -urN /usr/share/empty/fs/aufs/i_op_add.c linux/fs/aufs/i_op_add.c
 +}
 diff -urN /usr/share/empty/fs/aufs/i_op.c linux/fs/aufs/i_op.c
 --- /usr/share/empty/fs/aufs/i_op.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/i_op.c	2021-02-24 13:33:42.744347058 +0100
-@@ -0,0 +1,1502 @@
++++ linux/fs/aufs/i_op.c	2021-05-02 20:15:14.673337458 +0200
+@@ -0,0 +1,1513 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
 + * Copyright (C) 2005-2020 Junjiro R. Okajima
@@ -20452,6 +20507,7 @@ diff -urN /usr/share/empty/fs/aufs/i_op.c linux/fs/aufs/i_op.c
 +{
 +	int err;
 +	const unsigned char write_mask = !!(mask & (MAY_WRITE | MAY_APPEND));
++	struct user_namespace *h_userns;
 +
 +	err = -EPERM;
 +	if (write_mask && IS_IMMUTABLE(h_inode))
@@ -20471,19 +20527,21 @@ diff -urN /usr/share/empty/fs/aufs/i_op.c linux/fs/aufs/i_op.c
 +	 * - nfs always sets SB_POSIXACL regardless its mount option 'noacl.'
 +	 *   in this case, generic_permission() returns -EOPNOTSUPP.
 +	 */
++	h_userns = mnt_user_ns(h_path->mnt);
 +	if ((write_mask && !au_br_writable(brperm))
 +	    || (au_test_nfs(h_inode->i_sb) && S_ISDIR(h_inode->i_mode)
 +		&& write_mask && !(mask & MAY_READ))
 +	    || !h_inode->i_op->permission) {
 +		/* AuLabel(generic_permission); */
 +		/* AuDbg("get_acl %ps\n", h_inode->i_op->get_acl); */
-+		err = generic_permission(h_inode, mask);
++		err = generic_permission(h_userns, h_inode, mask);
 +		if (err == -EOPNOTSUPP && au_test_nfs_noacl(h_inode))
-+			err = h_inode->i_op->permission(h_inode, mask);
++			err = h_inode->i_op->permission(h_userns, h_inode,
++							mask);
 +		AuTraceErr(err);
 +	} else {
 +		/* AuLabel(h_inode->permission); */
-+		err = h_inode->i_op->permission(h_inode, mask);
++		err = h_inode->i_op->permission(h_userns, h_inode, mask);
 +		AuTraceErr(err);
 +	}
 +
@@ -20496,7 +20554,8 @@ diff -urN /usr/share/empty/fs/aufs/i_op.c linux/fs/aufs/i_op.c
 +	return err;
 +}
 +
-+static int aufs_permission(struct inode *inode, int mask)
++static int aufs_permission(struct user_namespace *userns, struct inode *inode,
++			   int mask)
 +{
 +	int err;
 +	aufs_bindex_t bindex, bbot;
@@ -21344,18 +21403,20 @@ diff -urN /usr/share/empty/fs/aufs/i_op.c linux/fs/aufs/i_op.c
 +	return err;
 +}
 +
-+static int aufs_setattr(struct dentry *dentry, struct iattr *ia)
++static int aufs_setattr(struct user_namespace *userns, struct dentry *dentry,
++			struct iattr *ia)
 +{
 +	int err;
 +	struct inode *inode, *delegated;
 +	struct super_block *sb;
 +	struct file *file;
 +	struct au_icpup_args *a;
++	struct user_namespace *h_userns;
 +
 +	inode = d_inode(dentry);
 +	IMustLock(inode);
 +
-+	err = setattr_prepare(dentry, ia);
++	err = setattr_prepare(userns, dentry, ia);
 +	if (unlikely(err))
 +		goto out;
 +
@@ -21448,8 +21509,10 @@ diff -urN /usr/share/empty/fs/aufs/i_op.c linux/fs/aufs/i_op.c
 +	 * regardless aufs 'acl' option setting.
 +	 * why don't all acl-aware fs call this func from their ->setattr()?
 +	 */
-+	if (!err && (ia->ia_valid & ATTR_MODE))
-+		err = vfsub_acl_chmod(a->h_inode, ia->ia_mode);
++	if (!err && (ia->ia_valid & ATTR_MODE)) {
++		h_userns = mnt_user_ns(a->h_path.mnt);
++		err = vfsub_acl_chmod(h_userns, a->h_inode, ia->ia_mode);
++	}
 +	if (!err)
 +		au_cpup_attr_changeable(inode);
 +
@@ -21511,6 +21574,7 @@ diff -urN /usr/share/empty/fs/aufs/i_op.c linux/fs/aufs/i_op.c
 +	struct super_block *sb;
 +	struct au_icpup_args *a;
 +	struct inode *h_inode;
++	struct user_namespace *h_userns;
 +
 +	IMustLock(inode);
 +
@@ -21529,23 +21593,25 @@ diff -urN /usr/share/empty/fs/aufs/i_op.c linux/fs/aufs/i_op.c
 +	err = au_h_path_to_set_attr(dentry, a, &h_path);
 +	if (unlikely(err))
 +		goto out_di;
++	h_userns = mnt_user_ns(h_path.mnt);
 +
 +	inode_unlock(a->h_inode);
 +	switch (arg->type) {
 +	case AU_XATTR_SET:
 +		AuDebugOn(d_is_negative(h_path.dentry));
-+		err = vfsub_setxattr(h_path.dentry,
++		err = vfsub_setxattr(h_userns, h_path.dentry,
 +				     arg->u.set.name, arg->u.set.value,
 +				     arg->u.set.size, arg->u.set.flags);
 +		break;
 +	case AU_ACL_SET:
 +		err = -EOPNOTSUPP;
 +		h_inode = d_inode(h_path.dentry);
-+		if (h_inode->i_op->set_acl)
++		if (h_inode->i_op->set_acl) {
 +			/* this will call posix_acl_update_mode */
-+			err = h_inode->i_op->set_acl(h_inode,
++			err = h_inode->i_op->set_acl(h_userns, h_inode,
 +						     arg->u.acl_set.acl,
 +						     arg->u.acl_set.type);
++		}
 +		break;
 +	}
 +	if (!err)
@@ -21676,8 +21742,8 @@ diff -urN /usr/share/empty/fs/aufs/i_op.c linux/fs/aufs/i_op.c
 +	return err;
 +}
 +
-+static int aufs_getattr(const struct path *path, struct kstat *st,
-+			u32 request, unsigned int query)
++static int aufs_getattr(struct user_namespace *userns, const struct path *path,
++			struct kstat *st, u32 request, unsigned int query)
 +{
 +	int err;
 +	unsigned char positive;
@@ -21714,7 +21780,7 @@ diff -urN /usr/share/empty/fs/aufs/i_op.c linux/fs/aufs/i_op.c
 +	goto out_di;
 +
 +out_fill:
-+	generic_fillattr(inode, st);
++	generic_fillattr(userns, inode, st);
 +out_di:
 +	di_read_unlock(dentry, AuLock_IR);
 +out_si:
@@ -21922,8 +21988,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-02-24 13:33:42.744347058 +0100
-@@ -0,0 +1,513 @@
++++ linux/fs/aufs/i_op_del.c	2021-05-02 20:15:14.673337458 +0200
+@@ -0,0 +1,515 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
 + * Copyright (C) 2005-2020 Junjiro R. Okajima
@@ -22020,6 +22086,7 @@ 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 user_namespace *h_userns;
 +
 +	h_dentry = au_h_dptr(dentry, bindex);
 +	if (d_really_is_positive(dentry)) {
@@ -22057,12 +22124,13 @@ 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)
-+		     && au_test_h_perm(d_inode(h_parent),
++		     && au_test_h_perm(h_userns, d_inode(h_parent),
 +				       MAY_EXEC | MAY_WRITE)))
 +		goto out;
 +
-+	h_latest = au_sio_lkup_one(&dentry->d_name, h_parent);
++	h_latest = au_sio_lkup_one(h_userns, &dentry->d_name, h_parent);
 +	err = -EIO;
 +	if (IS_ERR(h_latest))
 +		goto out;
@@ -22439,8 +22507,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-02-24 13:33:42.744347058 +0100
-@@ -0,0 +1,1250 @@
++++ linux/fs/aufs/i_op_ren.c	2021-05-02 20:15:14.673337458 +0200
+@@ -0,0 +1,1251 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
 + * Copyright (C) 2005-2020 Junjiro R. Okajima
@@ -23396,7 +23464,8 @@ diff -urN /usr/share/empty/fs/aufs/i_op_ren.c linux/fs/aufs/i_op_ren.c
 +
 +/* ---------------------------------------------------------------------- */
 +
-+int aufs_rename(struct inode *_src_dir, struct dentry *_src_dentry,
++int aufs_rename(struct user_namespace *userns,
++		struct inode *_src_dir, struct dentry *_src_dentry,
 +		struct inode *_dst_dir, struct dentry *_dst_dentry,
 +		unsigned int _flags)
 +{
@@ -23693,7 +23762,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-02-24 13:33:42.741013619 +0100
++++ linux/fs/aufs/Kconfig	2021-05-02 20:15:14.670004120 +0200
 @@ -0,0 +1,199 @@
 +# SPDX-License-Identifier: GPL-2.0
 +config AUFS_FS
@@ -23896,7 +23965,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-02-24 13:33:42.747680497 +0100
++++ linux/fs/aufs/lcnt.h	2021-05-02 20:15:14.673337458 +0200
 @@ -0,0 +1,186 @@
 +/* SPDX-License-Identifier: GPL-2.0 */
 +/*
@@ -24086,7 +24155,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-02-24 13:33:42.747680497 +0100
++++ linux/fs/aufs/loop.c	2021-05-02 20:15:14.673337458 +0200
 @@ -0,0 +1,148 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -24238,7 +24307,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-02-24 13:33:42.747680497 +0100
++++ linux/fs/aufs/loop.h	2021-05-02 20:15:14.673337458 +0200
 @@ -0,0 +1,55 @@
 +/* SPDX-License-Identifier: GPL-2.0 */
 +/*
@@ -24297,7 +24366,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-02-24 13:33:42.747680497 +0100
++++ linux/fs/aufs/magic.mk	2021-05-02 20:15:14.673337458 +0200
 @@ -0,0 +1,31 @@
 +# SPDX-License-Identifier: GPL-2.0
 +
@@ -24332,7 +24401,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-02-24 13:33:42.741013619 +0100
++++ linux/fs/aufs/Makefile	2021-05-02 20:15:14.670004120 +0200
 @@ -0,0 +1,46 @@
 +# SPDX-License-Identifier: GPL-2.0
 +
@@ -24382,7 +24451,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-02-24 13:33:42.747680497 +0100
++++ linux/fs/aufs/module.c	2021-05-02 20:15:14.673337458 +0200
 @@ -0,0 +1,273 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -24659,7 +24728,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-02-24 13:33:42.747680497 +0100
++++ linux/fs/aufs/module.h	2021-05-02 20:15:14.673337458 +0200
 @@ -0,0 +1,166 @@
 +/* SPDX-License-Identifier: GPL-2.0 */
 +/*
@@ -24829,7 +24898,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-02-24 13:33:42.747680497 +0100
++++ linux/fs/aufs/mvdown.c	2021-05-02 20:15:14.673337458 +0200
 @@ -0,0 +1,706 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -25539,7 +25608,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-02-24 13:33:42.747680497 +0100
++++ linux/fs/aufs/opts.c	2021-05-02 20:15:14.676670793 +0200
 @@ -0,0 +1,1880 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -27423,7 +27492,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-02-24 13:33:42.747680497 +0100
++++ linux/fs/aufs/opts.h	2021-05-02 20:15:14.676670793 +0200
 @@ -0,0 +1,225 @@
 +/* SPDX-License-Identifier: GPL-2.0 */
 +/*
@@ -27652,7 +27721,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-02-24 13:33:42.747680497 +0100
++++ linux/fs/aufs/plink.c	2021-05-02 20:15:14.676670793 +0200
 @@ -0,0 +1,516 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -28172,7 +28241,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-02-24 13:33:42.747680497 +0100
++++ linux/fs/aufs/poll.c	2021-05-02 20:15:14.676670793 +0200
 @@ -0,0 +1,51 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -28227,8 +28296,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-02-24 13:33:42.747680497 +0100
-@@ -0,0 +1,105 @@
++++ linux/fs/aufs/posix_acl.c	2021-05-02 20:15:14.676670793 +0200
+@@ -0,0 +1,106 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
 + * Copyright (C) 2014-2020 Junjiro R. Okajima
@@ -28294,7 +28363,8 @@ diff -urN /usr/share/empty/fs/aufs/posix_acl.c linux/fs/aufs/posix_acl.c
 +	return acl;
 +}
 +
-+int aufs_set_acl(struct inode *inode, struct posix_acl *acl, int type)
++int aufs_set_acl(struct user_namespace *userns, struct inode *inode,
++		 struct posix_acl *acl, int type)
 +{
 +	int err;
 +	ssize_t ssz;
@@ -28336,7 +28406,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-02-24 13:33:42.747680497 +0100
++++ linux/fs/aufs/procfs.c	2021-05-02 20:15:14.676670793 +0200
 @@ -0,0 +1,170 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -28510,7 +28580,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-02-24 13:33:42.747680497 +0100
++++ linux/fs/aufs/rdu.c	2021-05-02 20:15:14.676670793 +0200
 @@ -0,0 +1,384 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -28898,7 +28968,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-02-24 13:33:42.747680497 +0100
++++ linux/fs/aufs/rwsem.h	2021-05-02 20:15:14.676670793 +0200
 @@ -0,0 +1,85 @@
 +/* SPDX-License-Identifier: GPL-2.0 */
 +/*
@@ -28987,7 +29057,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-02-24 13:33:42.747680497 +0100
++++ linux/fs/aufs/sbinfo.c	2021-05-02 20:15:14.676670793 +0200
 @@ -0,0 +1,314 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -29305,8 +29375,8 @@ 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-02-24 13:33:42.747680497 +0100
-@@ -0,0 +1,1047 @@
++++ linux/fs/aufs/super.c	2021-05-02 20:15:14.676670793 +0200
+@@ -0,0 +1,1050 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
 + * Copyright (C) 2005-2020 Junjiro R. Okajima
@@ -30348,7 +30418,10 @@ diff -urN /usr/share/empty/fs/aufs/super.c linux/fs/aufs/super.c
 +struct file_system_type aufs_fs_type = {
 +	.name		= AUFS_FSTYPE,
 +	/* a race between rename and others */
-+	.fs_flags	= FS_RENAME_DOES_D_MOVE,
++	.fs_flags	= FS_RENAME_DOES_D_MOVE
++				/* untested */
++				/*| FS_ALLOW_IDMAP*/
++				,
 +	.mount		= aufs_mount,
 +	.kill_sb	= aufs_kill_sb,
 +	/* no need to __module_get() and module_put(). */
@@ -30356,7 +30429,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-02-24 13:33:42.747680497 +0100
++++ linux/fs/aufs/super.h	2021-05-02 20:15:14.676670793 +0200
 @@ -0,0 +1,587 @@
 +/* SPDX-License-Identifier: GPL-2.0 */
 +/*
@@ -30947,7 +31020,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-02-24 13:33:42.747680497 +0100
++++ linux/fs/aufs/sysaufs.c	2021-05-02 20:15:14.676670793 +0200
 @@ -0,0 +1,93 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -31044,7 +31117,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-02-24 13:33:42.747680497 +0100
++++ linux/fs/aufs/sysaufs.h	2021-05-02 20:15:14.676670793 +0200
 @@ -0,0 +1,102 @@
 +/* SPDX-License-Identifier: GPL-2.0 */
 +/*
@@ -31150,7 +31223,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-02-24 13:33:42.747680497 +0100
++++ linux/fs/aufs/sysfs.c	2021-05-02 20:15:14.676670793 +0200
 @@ -0,0 +1,374 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -31528,7 +31601,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-02-24 13:33:42.747680497 +0100
++++ linux/fs/aufs/sysrq.c	2021-05-02 20:15:14.676670793 +0200
 @@ -0,0 +1,149 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -31681,7 +31754,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-02-24 13:33:42.747680497 +0100
++++ linux/fs/aufs/vdir.c	2021-05-02 20:15:14.676670793 +0200
 @@ -0,0 +1,896 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -32581,8 +32654,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-02-24 13:33:42.747680497 +0100
-@@ -0,0 +1,885 @@
++++ linux/fs/aufs/vfsub.c	2021-05-02 20:15:14.676670793 +0200
+@@ -0,0 +1,916 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
 + * Copyright (C) 2005-2020 Junjiro R. Okajima
@@ -32829,6 +32902,7 @@ diff -urN /usr/share/empty/fs/aufs/vfsub.c linux/fs/aufs/vfsub.c
 +{
 +	int err;
 +	struct dentry *d;
++	struct user_namespace *userns;
 +
 +	IMustLock(dir);
 +
@@ -32838,9 +32912,10 @@ diff -urN /usr/share/empty/fs/aufs/vfsub.c linux/fs/aufs/vfsub.c
 +	path->dentry = d;
 +	if (unlikely(err))
 +		goto out;
++	userns = mnt_user_ns(path->mnt);
 +
 +	lockdep_off();
-+	err = vfs_create(dir, path->dentry, mode, want_excl);
++	err = vfs_create(userns, dir, path->dentry, mode, want_excl);
 +	lockdep_on();
 +	if (!err) {
 +		struct path tmp = *path;
@@ -32862,6 +32937,7 @@ diff -urN /usr/share/empty/fs/aufs/vfsub.c linux/fs/aufs/vfsub.c
 +{
 +	int err;
 +	struct dentry *d;
++	struct user_namespace *userns;
 +
 +	IMustLock(dir);
 +
@@ -32871,9 +32947,10 @@ diff -urN /usr/share/empty/fs/aufs/vfsub.c linux/fs/aufs/vfsub.c
 +	path->dentry = d;
 +	if (unlikely(err))
 +		goto out;
++	userns = mnt_user_ns(path->mnt);
 +
 +	lockdep_off();
-+	err = vfs_symlink(dir, path->dentry, symname);
++	err = vfs_symlink(userns, dir, path->dentry, symname);
 +	lockdep_on();
 +	if (!err) {
 +		struct path tmp = *path;
@@ -32895,6 +32972,7 @@ diff -urN /usr/share/empty/fs/aufs/vfsub.c linux/fs/aufs/vfsub.c
 +{
 +	int err;
 +	struct dentry *d;
++	struct user_namespace *userns;
 +
 +	IMustLock(dir);
 +
@@ -32904,9 +32982,10 @@ diff -urN /usr/share/empty/fs/aufs/vfsub.c linux/fs/aufs/vfsub.c
 +	path->dentry = d;
 +	if (unlikely(err))
 +		goto out;
++	userns = mnt_user_ns(path->mnt);
 +
 +	lockdep_off();
-+	err = vfs_mknod(dir, path->dentry, mode, dev);
++	err = vfs_mknod(userns, dir, path->dentry, mode, dev);
 +	lockdep_on();
 +	if (!err) {
 +		struct path tmp = *path;
@@ -32939,6 +33018,7 @@ diff -urN /usr/share/empty/fs/aufs/vfsub.c linux/fs/aufs/vfsub.c
 +{
 +	int err;
 +	struct dentry *d;
++	struct user_namespace *userns;
 +
 +	IMustLock(dir);
 +
@@ -32953,9 +33033,10 @@ diff -urN /usr/share/empty/fs/aufs/vfsub.c linux/fs/aufs/vfsub.c
 +	path->dentry = d;
 +	if (unlikely(err))
 +		goto out;
++	userns = mnt_user_ns(path->mnt);
 +
 +	lockdep_off();
-+	err = vfs_link(src_dentry, dir, path->dentry, delegated_inode);
++	err = vfs_link(src_dentry, userns, dir, path->dentry, delegated_inode);
 +	lockdep_on();
 +	if (!err) {
 +		struct path tmp = *path;
@@ -32981,6 +33062,7 @@ diff -urN /usr/share/empty/fs/aufs/vfsub.c linux/fs/aufs/vfsub.c
 +		 struct inode **delegated_inode, unsigned int flags)
 +{
 +	int err;
++	struct renamedata rd;
 +	struct path tmp = {
 +		.mnt	= path->mnt
 +	};
@@ -32997,9 +33079,16 @@ diff -urN /usr/share/empty/fs/aufs/vfsub.c linux/fs/aufs/vfsub.c
 +	if (unlikely(err))
 +		goto out;
 +
++	rd.old_mnt_userns = mnt_user_ns(path->mnt);
++	rd.old_dir = src_dir;
++	rd.old_dentry = src_dentry;
++	rd.new_mnt_userns = rd.old_mnt_userns;
++	rd.new_dir = dir;
++	rd.new_dentry = path->dentry;
++	rd.delegated_inode = delegated_inode;
++	rd.flags = flags;
 +	lockdep_off();
-+	err = vfs_rename(src_dir, src_dentry, dir, path->dentry,
-+			 delegated_inode, flags);
++	err = vfs_rename(&rd);
 +	lockdep_on();
 +	if (!err) {
 +		int did;
@@ -33023,6 +33112,7 @@ diff -urN /usr/share/empty/fs/aufs/vfsub.c linux/fs/aufs/vfsub.c
 +{
 +	int err;
 +	struct dentry *d;
++	struct user_namespace *userns;
 +
 +	IMustLock(dir);
 +
@@ -33032,9 +33122,10 @@ diff -urN /usr/share/empty/fs/aufs/vfsub.c linux/fs/aufs/vfsub.c
 +	path->dentry = d;
 +	if (unlikely(err))
 +		goto out;
++	userns = mnt_user_ns(path->mnt);
 +
 +	lockdep_off();
-+	err = vfs_mkdir(dir, path->dentry, mode);
++	err = vfs_mkdir(userns, dir, path->dentry, mode);
 +	lockdep_on();
 +	if (!err) {
 +		struct path tmp = *path;
@@ -33056,6 +33147,7 @@ diff -urN /usr/share/empty/fs/aufs/vfsub.c linux/fs/aufs/vfsub.c
 +{
 +	int err;
 +	struct dentry *d;
++	struct user_namespace *userns;
 +
 +	IMustLock(dir);
 +
@@ -33065,9 +33157,10 @@ diff -urN /usr/share/empty/fs/aufs/vfsub.c linux/fs/aufs/vfsub.c
 +	path->dentry = d;
 +	if (unlikely(err))
 +		goto out;
++	userns = mnt_user_ns(path->mnt);
 +
 +	lockdep_off();
-+	err = vfs_rmdir(dir, path->dentry);
++	err = vfs_rmdir(userns, dir, path->dentry);
 +	lockdep_on();
 +	if (!err) {
 +		struct path tmp = {
@@ -33225,6 +33318,7 @@ diff -urN /usr/share/empty/fs/aufs/vfsub.c linux/fs/aufs/vfsub.c
 +	int err;
 +	struct inode *h_inode;
 +	struct super_block *h_sb;
++	struct user_namespace *h_userns;
 +
 +	if (!h_file) {
 +		err = vfsub_truncate(h_path, length);
@@ -33240,8 +33334,10 @@ diff -urN /usr/share/empty/fs/aufs/vfsub.c linux/fs/aufs/vfsub.c
 +	if (!err)
 +		err = security_path_truncate(h_path);
 +	if (!err) {
++		h_userns = mnt_user_ns(h_path->mnt);
 +		lockdep_off();
-+		err = do_truncate(h_path->dentry, length, attr, h_file);
++		err = do_truncate(h_userns, h_path->dentry, length, attr,
++				  h_file);
 +		lockdep_on();
 +	}
 +	lockdep_off();
@@ -33270,8 +33366,10 @@ diff -urN /usr/share/empty/fs/aufs/vfsub.c linux/fs/aufs/vfsub.c
 +int vfsub_sio_mkdir(struct inode *dir, struct path *path, int mode)
 +{
 +	int err, do_sio, wkq_err;
++	struct user_namespace *userns;
 +
-+	do_sio = au_test_h_perm_sio(dir, MAY_EXEC | MAY_WRITE);
++	userns = mnt_user_ns(path->mnt);
++	do_sio = au_test_h_perm_sio(userns, dir, MAY_EXEC | MAY_WRITE);
 +	if (!do_sio) {
 +		lockdep_off();
 +		err = vfsub_mkdir(dir, path, mode);
@@ -33306,8 +33404,10 @@ diff -urN /usr/share/empty/fs/aufs/vfsub.c linux/fs/aufs/vfsub.c
 +int vfsub_sio_rmdir(struct inode *dir, struct path *path)
 +{
 +	int err, do_sio, wkq_err;
++	struct user_namespace *userns;
 +
-+	do_sio = au_test_h_perm_sio(dir, MAY_EXEC | MAY_WRITE);
++	userns = mnt_user_ns(path->mnt);
++	do_sio = au_test_h_perm_sio(userns, dir, MAY_EXEC | MAY_WRITE);
 +	if (!do_sio) {
 +		lockdep_off();
 +		err = vfsub_rmdir(dir, path);
@@ -33339,14 +33439,16 @@ diff -urN /usr/share/empty/fs/aufs/vfsub.c linux/fs/aufs/vfsub.c
 +{
 +	struct notify_change_args *a = args;
 +	struct inode *h_inode;
++	struct user_namespace *userns;
 +
 +	h_inode = d_inode(a->path->dentry);
 +	IMustLock(h_inode);
 +
 +	*a->errp = -EPERM;
 +	if (!IS_IMMUTABLE(h_inode) && !IS_APPEND(h_inode)) {
++		userns = mnt_user_ns(a->path->mnt);
 +		lockdep_off();
-+		*a->errp = notify_change(a->path->dentry, a->ia,
++		*a->errp = notify_change(userns, a->path->dentry, a->ia,
 +					 a->delegated_inode);
 +		lockdep_on();
 +		if (!*a->errp)
@@ -33403,6 +33505,7 @@ diff -urN /usr/share/empty/fs/aufs/vfsub.c linux/fs/aufs/vfsub.c
 +	struct unlink_args *a = args;
 +	struct dentry *d = a->path->dentry;
 +	struct inode *h_inode;
++	struct user_namespace *userns;
 +	const int stop_sillyrename = (au_test_nfs(d->d_sb)
 +				      && au_dcount(d) == 1);
 +
@@ -33422,8 +33525,9 @@ diff -urN /usr/share/empty/fs/aufs/vfsub.c linux/fs/aufs/vfsub.c
 +		ihold(h_inode);
 +	}
 +
++	userns = mnt_user_ns(a->path->mnt);
 +	lockdep_off();
-+	*a->errp = vfs_unlink(a->dir, d, a->delegated_inode);
++	*a->errp = vfs_unlink(userns, a->dir, d, a->delegated_inode);
 +	lockdep_on();
 +	if (!*a->errp) {
 +		struct path tmp = {
@@ -33470,8 +33574,8 @@ diff -urN /usr/share/empty/fs/aufs/vfsub.c linux/fs/aufs/vfsub.c
 +}
 diff -urN /usr/share/empty/fs/aufs/vfsub.h linux/fs/aufs/vfsub.h
 --- /usr/share/empty/fs/aufs/vfsub.h	1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/vfsub.h	2021-02-24 13:33:42.747680497 +0100
-@@ -0,0 +1,354 @@
++++ linux/fs/aufs/vfsub.h	2021-05-02 20:15:14.676670793 +0200
+@@ -0,0 +1,358 @@
 +/* SPDX-License-Identifier: GPL-2.0 */
 +/*
 + * Copyright (C) 2005-2020 Junjiro R. Okajima
@@ -33708,17 +33812,19 @@ diff -urN /usr/share/empty/fs/aufs/vfsub.h linux/fs/aufs/vfsub.h
 +}
 +
 +#ifdef CONFIG_FS_POSIX_ACL
-+static inline int vfsub_acl_chmod(struct inode *h_inode, umode_t h_mode)
++static inline int vfsub_acl_chmod(struct user_namespace *h_userns,
++				  struct inode *h_inode, umode_t h_mode)
 +{
 +	int err;
 +
-+	err = posix_acl_chmod(h_inode, h_mode);
++	err = posix_acl_chmod(h_userns, h_inode, h_mode);
 +	if (err == -EOPNOTSUPP)
 +		err = 0;
 +	return err;
 +}
 +#else
-+AuStubInt0(vfsub_acl_chmod, struct inode *h_inode, umode_t h_mode);
++AuStubInt0(vfsub_acl_chmod, struct user_namespace *h_userns,
++	   struct inode *h_inode, umode_t h_mode);
 +#endif
 +
 +long vfsub_splice_to(struct file *in, loff_t *ppos,
@@ -33801,24 +33907,26 @@ diff -urN /usr/share/empty/fs/aufs/vfsub.h linux/fs/aufs/vfsub.h
 +
 +/* ---------------------------------------------------------------------- */
 +
-+static inline int vfsub_setxattr(struct dentry *dentry, const char *name,
++static inline int vfsub_setxattr(struct user_namespace *userns,
++				 struct dentry *dentry, const char *name,
 +				 const void *value, size_t size, int flags)
 +{
 +	int err;
 +
 +	lockdep_off();
-+	err = vfs_setxattr(dentry, name, value, size, flags);
++	err = vfs_setxattr(userns, dentry, name, value, size, flags);
 +	lockdep_on();
 +
 +	return err;
 +}
 +
-+static inline int vfsub_removexattr(struct dentry *dentry, const char *name)
++static inline int vfsub_removexattr(struct user_namespace *userns,
++				    struct dentry *dentry, const char *name)
 +{
 +	int err;
 +
 +	lockdep_off();
-+	err = vfs_removexattr(dentry, name);
++	err = vfs_removexattr(userns, dentry, name);
 +	lockdep_on();
 +
 +	return err;
@@ -33828,7 +33936,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-02-24 13:33:42.747680497 +0100
++++ linux/fs/aufs/wbr_policy.c	2021-05-02 20:15:14.676670793 +0200
 @@ -0,0 +1,830 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -34662,8 +34770,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-02-24 13:33:42.751013936 +0100
-@@ -0,0 +1,1062 @@
++++ linux/fs/aufs/whout.c	2021-05-02 20:15:14.676670793 +0200
+@@ -0,0 +1,1070 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
 + * Copyright (C) 2005-2020 Junjiro R. Okajima
@@ -34730,7 +34838,8 @@ diff -urN /usr/share/empty/fs/aufs/whout.c linux/fs/aufs/whout.c
 + * test if the @wh_name exists under @h_parent.
 + * @try_sio specifies the necessary of super-io.
 + */
-+int au_wh_test(struct dentry *h_parent, struct qstr *wh_name, int try_sio)
++int au_wh_test(struct user_namespace *h_userns, struct dentry *h_parent,
++	       struct qstr *wh_name, int try_sio)
 +{
 +	int err;
 +	struct dentry *wh_dentry;
@@ -34738,7 +34847,7 @@ diff -urN /usr/share/empty/fs/aufs/whout.c linux/fs/aufs/whout.c
 +	if (!try_sio)
 +		wh_dentry = vfsub_lkup_one(wh_name, h_parent);
 +	else
-+		wh_dentry = au_sio_lkup_one(wh_name, h_parent);
++		wh_dentry = au_sio_lkup_one(h_userns, wh_name, h_parent);
 +	err = PTR_ERR(wh_dentry);
 +	if (IS_ERR(wh_dentry)) {
 +		if (err == -ENAMETOOLONG)
@@ -34767,14 +34876,14 @@ diff -urN /usr/share/empty/fs/aufs/whout.c linux/fs/aufs/whout.c
 +/*
 + * test if the @h_dentry sets opaque or not.
 + */
-+int au_diropq_test(struct dentry *h_dentry)
++int au_diropq_test(struct user_namespace *h_userns, struct dentry *h_dentry)
 +{
 +	int err;
 +	struct inode *h_dir;
 +
 +	h_dir = d_inode(h_dentry);
-+	err = au_wh_test(h_dentry, &diropq_name,
-+			 au_test_h_perm_sio(h_dir, MAY_EXEC));
++	err = au_wh_test(h_userns, h_dentry, &diropq_name,
++			 au_test_h_perm_sio(h_userns, h_dir, MAY_EXEC));
 +	return err;
 +}
 +
@@ -34791,6 +34900,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 user_namespace *h_userns;
 +
 +	BUILD_BUG_ON(sizeof(cnt) * 2 > AUFS_WH_TMP_LEN);
 +
@@ -34814,10 +34924,11 @@ 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_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(&qs, h_parent);
++		dentry = au_sio_lkup_one(h_userns, &qs, h_parent);
 +		if (IS_ERR(dentry) || d_is_negative(dentry))
 +			goto out_name;
 +		dput(dentry);
@@ -35416,9 +35527,12 @@ diff -urN /usr/share/empty/fs/aufs/whout.c linux/fs/aufs/whout.c
 +			     unsigned int flags)
 +{
 +	struct dentry *diropq, *h_dentry;
++	struct user_namespace *h_userns;
 +
++	h_userns = au_sbr_userns(dentry->d_sb, bindex);
 +	h_dentry = au_h_dptr(dentry, bindex);
-+	if (!au_test_h_perm_sio(d_inode(h_dentry), MAY_EXEC | MAY_WRITE))
++	if (!au_test_h_perm_sio(h_userns, d_inode(h_dentry),
++				MAY_EXEC | MAY_WRITE))
 +		diropq = do_diropq(dentry, bindex, flags);
 +	else {
 +		int wkq_err;
@@ -35604,11 +35718,13 @@ diff -urN /usr/share/empty/fs/aufs/whout.c linux/fs/aufs/whout.c
 +	struct path h_tmp;
 +	struct inode *wh_inode, *h_dir;
 +	struct au_branch *br;
++	struct user_namespace *h_userns;
 +
 +	h_dir = d_inode(wh_dentry->d_parent); /* dir inode is locked */
 +	IMustLock(h_dir);
 +
 +	br = au_sbr(dir->i_sb, bindex);
++	h_userns = au_br_userns(br);
 +	wh_inode = d_inode(wh_dentry);
 +	inode_lock_nested(wh_inode, AuLsc_I_CHILD);
 +
@@ -35616,7 +35732,7 @@ diff -urN /usr/share/empty/fs/aufs/whout.c linux/fs/aufs/whout.c
 +	 * someone else might change some whiteouts while we were sleeping.
 +	 * it means this whlist may have an obsoleted entry.
 +	 */
-+	if (!au_test_h_perm_sio(wh_inode, MAY_EXEC | MAY_WRITE))
++	if (!au_test_h_perm_sio(h_userns, wh_inode, MAY_EXEC | MAY_WRITE))
 +		err = del_wh_children(wh_dentry, whlist, bindex, br);
 +	else {
 +		int wkq_err;
@@ -35728,8 +35844,8 @@ 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-02-24 13:33:42.751013936 +0100
-@@ -0,0 +1,86 @@
++++ linux/fs/aufs/whout.h	2021-05-02 20:15:14.676670793 +0200
+@@ -0,0 +1,87 @@
 +/* SPDX-License-Identifier: GPL-2.0 */
 +/*
 + * Copyright (C) 2005-2020 Junjiro R. Okajima
@@ -35761,8 +35877,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 dentry *h_parent, struct qstr *wh_name, int try_sio);
-+int au_diropq_test(struct dentry *h_dentry);
++int au_wh_test(struct user_namespace *h_userns, struct dentry *h_parent,
++	       struct qstr *wh_name, int try_sio);
++int au_diropq_test(struct user_namespace *h_userns, struct dentry *h_dentry);
 +struct au_branch;
 +struct dentry *au_whtmp_lkup(struct dentry *h_parent, struct au_branch *br,
 +			     struct qstr *prefix);
@@ -35818,7 +35935,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-02-24 13:33:42.751013936 +0100
++++ linux/fs/aufs/wkq.c	2021-05-02 20:15:14.676670793 +0200
 @@ -0,0 +1,372 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -36194,7 +36311,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-02-24 13:33:42.751013936 +0100
++++ linux/fs/aufs/wkq.h	2021-05-02 20:15:14.676670793 +0200
 @@ -0,0 +1,89 @@
 +/* SPDX-License-Identifier: GPL-2.0 */
 +/*
@@ -36287,8 +36404,8 @@ 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-02-24 13:33:42.751013936 +0100
-@@ -0,0 +1,356 @@
++++ linux/fs/aufs/xattr.c	2021-05-02 20:15:14.676670793 +0200
+@@ -0,0 +1,368 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
 + * Copyright (C) 2014-2020 Junjiro R. Okajima
@@ -36355,21 +36472,26 @@ diff -urN /usr/share/empty/fs/aufs/xattr.c linux/fs/aufs/xattr.c
 +
 +static const int au_xattr_out_of_list = AuBrAttr_ICEX_OTH << 1;
 +
-+static int au_do_cpup_xattr(struct dentry *h_dst, struct dentry *h_src,
++static int au_do_cpup_xattr(struct path *h_dst, struct path *h_src,
 +			    char *name, char **buf, unsigned int ignore_flags,
 +			    unsigned int verbose)
 +{
 +	int err;
 +	ssize_t ssz;
 +	struct inode *h_idst;
++	struct dentry *h_dst_dentry, *h_src_dentry;
++	struct user_namespace *h_dst_userns, *h_src_userns;
 +
-+	ssz = vfs_getxattr_alloc(h_src, name, buf, 0, GFP_NOFS);
++	h_src_userns = mnt_user_ns(h_src->mnt);
++	h_src_dentry = h_src->dentry;
++	ssz = vfs_getxattr_alloc(h_src_userns, h_src_dentry, name, buf, 0,
++				 GFP_NOFS);
 +	err = ssz;
 +	if (unlikely(err <= 0)) {
 +		if (err == -ENODATA
 +		    || (err == -EOPNOTSUPP
 +			&& ((ignore_flags & au_xattr_out_of_list)
-+			    || (au_test_nfs_noacl(d_inode(h_src))
++			    || (au_test_nfs_noacl(d_inode(h_src_dentry))
 +				&& (!strcmp(name, XATTR_NAME_POSIX_ACL_ACCESS)
 +				    || !strcmp(name,
 +					       XATTR_NAME_POSIX_ACL_DEFAULT))))
@@ -36381,9 +36503,12 @@ diff -urN /usr/share/empty/fs/aufs/xattr.c linux/fs/aufs/xattr.c
 +	}
 +
 +	/* unlock it temporary */
-+	h_idst = d_inode(h_dst);
++	h_dst_userns = mnt_user_ns(h_dst->mnt);
++	h_dst_dentry = h_dst->dentry;
++	h_idst = d_inode(h_dst_dentry);
 +	inode_unlock(h_idst);
-+	err = vfsub_setxattr(h_dst, name, *buf, ssz, /*flags*/0);
++	err = vfsub_setxattr(h_dst_userns, h_dst_dentry, name, *buf, ssz,
++			     /*flags*/0);
 +	inode_lock_nested(h_idst, AuLsc_I_CHILD2);
 +	if (unlikely(err)) {
 +		if (verbose || au_debug_test())
@@ -36395,25 +36520,28 @@ diff -urN /usr/share/empty/fs/aufs/xattr.c linux/fs/aufs/xattr.c
 +	return err;
 +}
 +
-+int au_cpup_xattr(struct dentry *h_dst, struct dentry *h_src, int ignore_flags,
++int au_cpup_xattr(struct path *h_dst, struct path *h_src, int ignore_flags,
 +		  unsigned int verbose)
 +{
 +	int err, unlocked, acl_access, acl_default;
 +	ssize_t ssz;
++	struct dentry *h_dst_dentry, *h_src_dentry;
 +	struct inode *h_isrc, *h_idst;
 +	char *value, *p, *o, *e;
 +
 +	/* try stopping to update the source inode while we are referencing */
 +	/* there should not be the parent-child relationship between them */
-+	h_isrc = d_inode(h_src);
-+	h_idst = d_inode(h_dst);
++	h_dst_dentry = h_dst->dentry;
++	h_idst = d_inode(h_dst_dentry);
++	h_src_dentry = h_src->dentry;
++	h_isrc = d_inode(h_src_dentry);
 +	inode_unlock(h_idst);
 +	inode_lock_shared_nested(h_isrc, AuLsc_I_CHILD);
 +	inode_lock_nested(h_idst, AuLsc_I_CHILD2);
 +	unlocked = 0;
 +
 +	/* some filesystems don't list POSIX ACL, for example tmpfs */
-+	ssz = vfs_listxattr(h_src, NULL, 0);
++	ssz = vfs_listxattr(h_src_dentry, NULL, 0);
 +	err = ssz;
 +	if (unlikely(err < 0)) {
 +		AuTraceErr(err);
@@ -36432,7 +36560,7 @@ diff -urN /usr/share/empty/fs/aufs/xattr.c linux/fs/aufs/xattr.c
 +		o = p;
 +		if (unlikely(!p))
 +			goto out;
-+		err = vfs_listxattr(h_src, p, ssz);
++		err = vfs_listxattr(h_src_dentry, p, ssz);
 +	}
 +	inode_unlock_shared(h_isrc);
 +	unlocked = 1;
@@ -36546,7 +36674,7 @@ diff -urN /usr/share/empty/fs/aufs/xattr.c linux/fs/aufs/xattr.c
 +		break;
 +	case AU_XATTR_GET:
 +		AuDebugOn(d_is_negative(h_path.dentry));
-+		err = vfs_getxattr(h_path.dentry,
++		err = vfs_getxattr(mnt_user_ns(h_path.mnt), h_path.dentry,
 +				   arg->u.get.name, arg->u.get.value,
 +				   arg->u.get.size);
 +		break;
@@ -36618,6 +36746,7 @@ diff -urN /usr/share/empty/fs/aufs/xattr.c linux/fs/aufs/xattr.c
 +}
 +
 +static int au_xattr_set(const struct xattr_handler *handler,
++			struct user_namespace *userns,
 +			struct dentry *dentry, struct inode *inode,
 +			const char *name, const void *value, size_t size,
 +			int flags)
@@ -36647,7 +36776,7 @@ diff -urN /usr/share/empty/fs/aufs/xattr.c linux/fs/aufs/xattr.c
 +}
 diff -urN /usr/share/empty/fs/aufs/xino.c linux/fs/aufs/xino.c
 --- /usr/share/empty/fs/aufs/xino.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux/fs/aufs/xino.c	2021-02-24 13:33:42.751013936 +0100
++++ linux/fs/aufs/xino.c	2021-05-02 20:15:14.676670793 +0200
 @@ -0,0 +1,1925 @@
 +// SPDX-License-Identifier: GPL-2.0
 +/*
@@ -36909,7 +37038,7 @@ diff -urN /usr/share/empty/fs/aufs/xino.c linux/fs/aufs/xino.c
 +	}
 +
 +	/* no need to mnt_want_write() since we call dentry_open() later */
-+	err = vfs_create(dir, path.dentry, 0666, NULL);
++	err = vfs_create(mnt_user_ns(base->mnt), dir, path.dentry, 0666, NULL);
 +	if (unlikely(err)) {
 +		file = ERR_PTR(err);
 +		pr_err("%pd create err %d\n", dentry, err);
@@ -38576,7 +38705,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-02-24 13:33:42.751013936 +0100
++++ linux/include/uapi/linux/aufs_type.h	2021-05-02 20:15:14.676670793 +0200
 @@ -0,0 +1,452 @@
 +/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
 +/*
@@ -38620,7 +38749,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.11-20210222"
++#define AUFS_VERSION	"5.12-20210503"
 +
 +/* todo? move this to linux-2.6.19/include/magic.h */
 +#define AUFS_SUPER_MAGIC	('a' << 24 | 'u' << 16 | 'f' << 8 | 's')
@@ -39031,10 +39160,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.11 loopback patch
+aufs5.12 loopback patch
 
 diff --git a/drivers/block/loop.c b/drivers/block/loop.c
-index 39d539df0349d..4109efe2f6a3a 100644
+index 01ca256575fb2..f5a76bacf6c85 100644
 --- a/drivers/block/loop.c
 +++ b/drivers/block/loop.c
 @@ -646,6 +646,15 @@ static inline void loop_update_dio(struct loop_device *lo)
@@ -39154,7 +39283,7 @@ index 39d539df0349d..4109efe2f6a3a 100644
  	gfp_t gfp = lo->old_gfp_mask;
  	struct block_device *bdev = lo->lo_device;
  	int err = 0;
-@@ -1235,6 +1267,7 @@ static int __loop_clr_fd(struct loop_device *lo, bool release)
+@@ -1238,6 +1270,7 @@ static int __loop_clr_fd(struct loop_device *lo, bool release)
  
  	spin_lock_irq(&lo->lo_lock);
  	lo->lo_backing_file = NULL;
@@ -39162,7 +39291,7 @@ index 39d539df0349d..4109efe2f6a3a 100644
  	spin_unlock_irq(&lo->lo_lock);
  
  	loop_release_xfer(lo);
-@@ -1317,6 +1350,8 @@ static int __loop_clr_fd(struct loop_device *lo, bool release)
+@@ -1319,6 +1352,8 @@ static int __loop_clr_fd(struct loop_device *lo, bool release)
  	 */
  	if (filp)
  		fput(filp);
@@ -39172,7 +39301,7 @@ index 39d539df0349d..4109efe2f6a3a 100644
  }
  
 diff --git a/drivers/block/loop.h b/drivers/block/loop.h
-index af75a5ee40944..1d847cb194ff6 100644
+index a3c04f310672e..161c3c5d1c22b 100644
 --- a/drivers/block/loop.h
 +++ b/drivers/block/loop.h
 @@ -46,7 +46,7 @@ struct loop_device {
@@ -39185,7 +39314,7 @@ index af75a5ee40944..1d847cb194ff6 100644
  	void		*key_data; 
  
 diff --git a/fs/aufs/f_op.c b/fs/aufs/f_op.c
-index 5ef279a59bb14..6447c37f98756 100644
+index 9f58ba0cb769f..1c2267a5a2ae1 100644
 --- a/fs/aufs/f_op.c
 +++ b/fs/aufs/f_op.c
 @@ -304,7 +304,7 @@ static ssize_t aufs_read_iter(struct kiocb *kio, struct iov_iter *iov_iter)
@@ -39244,7 +39373,7 @@ index 94f4f80ae33bf..ca1194354aff4 100644
  
  #endif /* __KERNEL__ */
 diff --git a/fs/aufs/super.c b/fs/aufs/super.c
-index 589dd01220201..801e0a7faec59 100644
+index d252963a87b53..ecfc5fc96ad8c 100644
 --- a/fs/aufs/super.c
 +++ b/fs/aufs/super.c
 @@ -844,7 +844,10 @@ static const struct super_operations aufs_sop = {
@@ -39260,10 +39389,10 @@ index 589dd01220201..801e0a7faec59 100644
  
  /* ---------------------------------------------------------------------- */
 diff --git a/include/linux/fs.h b/include/linux/fs.h
-index 91f3fbe5b57ff..ad1b2e44d538b 100644
+index 4fa4b24535fde..2aec4bc9f5aa1 100644
 --- a/include/linux/fs.h
 +++ b/include/linux/fs.h
-@@ -1965,6 +1965,10 @@ struct super_operations {
+@@ -2041,6 +2041,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 d19b8444..8cd85691 100644
--- a/kernel-multiarch.config
+++ b/kernel-multiarch.config
@@ -5,19 +5,29 @@
 ACRN_GUEST all=y
 ARCH_MEMORY_PROBE all=n
 COMPAT_32BIT_TIME all=y
+CPA_DEBUG all=n
+DEBUG_BOOT_PARAMS all=y
 DEBUG_ENTRY all=n
 DEBUG_IMR_SELFTEST all=n
+DEBUG_NMI_SELFTEST all=y
+DEBUG_TLBFLUSH all=n
+EARLY_PRINTK_DBGP all=n
 EARLY_PRINTK_USB_XDBC all=n
 EFI_MIXED all=y
 EFI_PGT_DUMP all=n
 GEN_RTC all=n
 HAVE_STACK_VALIDATION all=y
+IOMMU_DEBUG all=n
 IOSF_MBI all=y
 IOSF_MBI_DEBUG all=y
+IO_DELAY_0X80 all=y
+IO_DELAY_0XED all=n
+IO_DELAY_NONE all=n
+IO_DELAY_UDELAY all=n
 JAILHOUSE_GUEST all=y
+JUMP_LABEL all=y
 KEXEC_FILE all=y
 KEXEC_SIG all=n
-KVM_AMD_SEV all=y
 LOCK_EVENT_COUNTS all=n
 MICROCODE_OLD_INTERFACE all=n
 PERF_EVENTS_AMD_POWER all=m
@@ -29,6 +39,7 @@ RANDOMIZE_MEMORY all=y
 RAS_CEC all=y
 RAS_CEC_DEBUG all=n
 SCHED_MC_PRIO all=y
+SECCOMP all=y
 SECCOMP_CACHE_DEBUG all=n
 STACKPROTECTOR all=y
 STACKPROTECTOR_STRONG all=y
@@ -40,9 +51,11 @@ VMAP_STACK all=y
 X86_AMD_PLATFORM_DEVICE all=y
 X86_CPA_STATISTICS all=y
 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
 XEN_PV all=y
@@ -197,10 +210,7 @@ CRYPTO_POLY1305_X86_64 all=m
 CRYPTO_MD4 all=m
 CRYPTO_MD5 all=y
 CRYPTO_MICHAEL_MIC all=m
-CRYPTO_RMD128 all=m
 CRYPTO_RMD160 all=m
-CRYPTO_RMD256 all=m
-CRYPTO_RMD320 all=m
 CRYPTO_SHA1 all=y
 CRYPTO_SHA1_SSSE3 all=m
 CRYPTO_SHA256_SSSE3 all=m
@@ -210,7 +220,6 @@ CRYPTO_SHA512 all=m
 CRYPTO_SHA3 all=m
 CRYPTO_SM3 all=m
 CRYPTO_STREEBOG all=m
-CRYPTO_TGR192 all=m
 CRYPTO_WP512 all=m
 CRYPTO_GHASH_CLMUL_NI_INTEL all=m
 #- Ciphers
@@ -233,7 +242,6 @@ CRYPTO_DES all=m
 CRYPTO_DES3_EDE_X86_64 all=m
 CRYPTO_FCRYPT all=m
 CRYPTO_KHAZAD all=m
-CRYPTO_SALSA20 all=m
 CRYPTO_CHACHA20 all=m
 CRYPTO_CHACHA20_X86_64 all=m
 CRYPTO_SEED all=m
@@ -252,10 +260,10 @@ CRYPTO_TWOFISH_AVX_X86_64 all=m
 #- Compression
 CRYPTO_DEFLATE all=m
 CRYPTO_LZO all=y
-CRYPTO_842 all=m
-CRYPTO_LZ4 all=m
+CRYPTO_842 all=y
+CRYPTO_LZ4 all=y
 CRYPTO_LZ4HC all=m
-CRYPTO_ZSTD all=m
+CRYPTO_ZSTD all=y
 #- Random Number Generation
 CRYPTO_ANSI_CPRNG all=m
 CRYPTO_DRBG_MENU all=m
@@ -284,7 +292,7 @@ ASYMMETRIC_TPM_KEY_SUBTYPE all=m
 X509_CERTIFICATE_PARSER all=y
 PKCS8_PRIVATE_KEY_PARSER all=m
 TPM_KEY_PARSER all=m
-PKCS7_MESSAGE_PARSER all=m
+PKCS7_MESSAGE_PARSER all=y
 PKCS7_TEST_KEY all=m
 SIGNED_PE_FILE_VERIFICATION all=y
 
@@ -622,7 +630,6 @@ BLK_DEV_LOOP_MIN_COUNT all=8
 BLK_DEV_CRYPTOLOOP all=n
 #- file drivers/block/drbd/Kconfig goes here
 BLK_DEV_NBD all=m
-BLK_DEV_SKD all=m
 BLK_DEV_SX8 all=m
 BLK_DEV_RAM all=y
 BLK_DEV_RAM_COUNT all=16
@@ -857,6 +864,7 @@ HW_RANDOM_TPM all=y
 TCG_TIS all=m x86=y ia64=y
 TCG_TIS_SPI all=m
 TCG_TIS_SPI_CR50 all=y
+TCG_TIS_I2C_CR50 all=m
 TCG_TIS_I2C_ATMEL all=m
 TCG_TIS_I2C_INFINEON all=m
 TCG_TIS_I2C_NUVOTON all=m
@@ -906,6 +914,7 @@ COMMON_CLK_OXNAS all=n
 #- file drivers/clk/keystone/Kconfig goes here
 #- file drivers/clk/mediatek/Kconfig goes here
 #- file drivers/clk/meson/Kconfig goes here
+#- file drivers/clk/mstar/Kconfig goes here
 #- file drivers/clk/mvebu/Kconfig goes here
 #- file drivers/clk/qcom/Kconfig goes here
 #- file drivers/clk/renesas/Kconfig goes here
@@ -919,6 +928,7 @@ COMMON_CLK_OXNAS all=n
 #- file drivers/clk/ti/Kconfig goes here
 #- file drivers/clk/uniphier/Kconfig goes here
 #- file drivers/clk/x86/Kconfig goes here
+#- file drivers/clk/xilinx/Kconfig goes here
 #- file drivers/clk/zynqmp/Kconfig goes here
 
 #-
@@ -938,6 +948,11 @@ COMMON_CLK_MT2701_BDPSYS all=y
 SUNXI_CCU all=y
 SUN8I_H3_CCU all=y
 
+#-
+#- *** FILE: drivers/clk/xilinx/Kconfig ***
+#-
+XILINX_VCU all=m
+
 #-
 #- *** FILE: drivers/connector/Kconfig ***
 #-
@@ -1065,6 +1080,13 @@ CRYPTO_DEV_QAT_C62XVF all=m
 #-
 CRYPTO_DEV_VIRTIO all=m
 
+#-
+#- *** FILE: drivers/cxl/Kconfig ***
+#-
+CXL_BUS all=m
+CXL_MEM all=m
+CXL_MEM_RAW_COMMANDS all=y
+
 #-
 #- *** FILE: drivers/dax/Kconfig ***
 #-
@@ -1099,6 +1121,7 @@ SYNC_FILE all=y
 SW_SYNC all=y
 UDMABUF all=y
 DMABUF_MOVE_NOTIFY all=n
+DMABUF_DEBUG all=n
 DMABUF_SELFTESTS all=m
 DMABUF_HEAPS all=y
 #- file drivers/dma-buf/heaps/Kconfig goes here
@@ -1136,6 +1159,7 @@ XILINX_ZYNQMP_DPDMA all=m
 #- file drivers/dma/sh/Kconfig goes here
 #- file drivers/dma/ti/Kconfig goes here
 #- file drivers/dma/fsl-dpaa2-qdma/Kconfig goes here
+#- file drivers/dma/lgm/Kconfig goes here
 #- DMA Clients
 ASYNC_TX_DMA all=y
 DMATEST all=n
@@ -1158,6 +1182,11 @@ DW_DMAC_PCI all=y
 #-
 HSU_DMA_PCI all=m
 
+#-
+#- *** FILE: drivers/dma/lgm/Kconfig ***
+#-
+INTEL_LDMA all=y
+
 #-
 #- *** FILE: drivers/dma/qcom/Kconfig ***
 #-
@@ -1178,7 +1207,6 @@ EDAC_DEBUG all=n
 EDAC_DECODE_MCE all=m
 EDAC_GHES all=y
 EDAC_AMD64 all=m
-EDAC_AMD64_ERROR_INJECTION all=y
 EDAC_AMD76X i386=m
 EDAC_E7XXX i386=m
 EDAC_E752X i386=m x86_64=m
@@ -1321,6 +1349,7 @@ FPGA_DFL_FME_MGR all=m
 FPGA_DFL_FME_BRIDGE all=m
 FPGA_DFL_FME_REGION all=m
 FPGA_DFL_AFU all=m
+FPGA_DFL_NIOS_INTEL_PAC_N3000 all=m
 FPGA_DFL_PCI all=m
 
 #-
@@ -1358,7 +1387,6 @@ GPIO_SIOX all=m
 GPIO_STA2X11 all=y
 GPIO_VX855 all=m
 GPIO_XILINX all=m
-GPIO_ZX all=y
 GPIO_AMD_FCH all=m
 GPIO_104_DIO_48E all=m
 GPIO_104_IDIO_16 all=m
@@ -1390,7 +1418,6 @@ GPIO_KEMPLD all=m
 GPIO_LP3943 all=m
 GPIO_LP873X all=m
 GPIO_MADERA all=m
-GPIO_MSIC all=y
 GPIO_SL28CPLD all=m
 GPIO_STMPE all=y
 GPIO_TIMBERDALE all=y
@@ -1405,7 +1432,6 @@ GPIO_WM831X all=m
 GPIO_WM8994 all=m
 GPIO_AMD8111 all=m
 GPIO_BT8XX all=m
-GPIO_INTEL_MID all=y
 GPIO_ML_IOH all=m
 GPIO_PCH all=m
 GPIO_PCI_IDIO_16 all=m
@@ -1488,7 +1514,7 @@ DRM_VKMS all=m
 #- file drivers/gpu/drm/mcde/Kconfig goes here
 #- file drivers/gpu/drm/tidss/Kconfig goes here
 #- file drivers/gpu/drm/xlnx/Kconfig goes here
-DRM_LEGACY all=n
+DRM_LEGACY all=y
 DRM_TDFX all=m
 DRM_R128 all=m
 DRM_I810 i386=m x86_64=m
@@ -1557,7 +1583,6 @@ DRM_ETNAVIV_THERMAL all=y
 #-
 DRM_GMA500 all=m
 DRM_GMA600 all=y
-DRM_GMA3600 all=y
 
 #-
 #- *** FILE: drivers/gpu/drm/hisilicon/hibmc/Kconfig ***
@@ -1756,6 +1781,8 @@ HID_PICOLCD_BACKLIGHT all=y
 HID_PICOLCD_LCD all=y
 HID_PICOLCD_LEDS all=y
 HID_PLANTRONICS all=m
+HID_PLAYSTATION all=m
+PLAYSTATION_FF all=y
 HID_PRIMAX all=m
 HID_RETRODE all=m
 HID_ROCCAT all=m
@@ -1803,7 +1830,7 @@ AMD_SFH_HID all=m
 #-
 #- *** FILE: drivers/hid/i2c-hid/Kconfig ***
 #-
-I2C_HID all=m
+I2C_HID_ACPI all=m
 
 #-
 #- *** FILE: drivers/hid/intel-ish-hid/Kconfig ***
@@ -1866,6 +1893,7 @@ SENSORS_ADT7411 all=m
 SENSORS_ADT7462 all=m
 SENSORS_ADT7470 all=m
 SENSORS_ADT7475 all=m
+SENSORS_AHT10 all=m
 SENSORS_AS370 all=m
 SENSORS_ASC7621 all=m
 SENSORS_AXI_FAN_CONTROL all=m
@@ -1934,6 +1962,7 @@ SENSORS_MAX31790 all=m
 SENSORS_MCP3021 all=m
 SENSORS_MLXREG_FAN all=m
 SENSORS_TC654 all=m
+SENSORS_TPS23861 all=m
 SENSORS_MENF21BMC_HWMON all=m
 SENSORS_MR75203 all=m
 SENSORS_ADCXX all=m
@@ -2201,6 +2230,7 @@ I3C all=m
 #-
 CDNS_I3C_MASTER all=m
 DW_I3C_MASTER all=m
+SVC_I3C_MASTER all=m
 MIPI_I3C_HCI all=m
 
 #-
@@ -2290,8 +2320,6 @@ IIO_TRIGGER all=y
 IIO_CONSUMERS_PER_TRIGGER all=2
 IIO_SW_DEVICE all=m
 IIO_SW_TRIGGER all=m
-IIO_BUFFER_DMA all=m
-IIO_BUFFER_DMAENGINE all=m
 #- file drivers/iio/accel/Kconfig goes here
 #- file drivers/iio/adc/Kconfig goes here
 #- file drivers/iio/afe/Kconfig goes here
@@ -2432,6 +2460,8 @@ HMC425 all=m
 #- *** FILE: drivers/iio/buffer/Kconfig ***
 #-
 IIO_BUFFER_CB all=m
+IIO_BUFFER_DMA all=m
+IIO_BUFFER_DMAENGINE all=m
 IIO_BUFFER_HW_CONSUMER all=m
 IIO_KFIFO_BUF all=m
 
@@ -2484,6 +2514,7 @@ AD5755 all=m
 AD5758 all=m
 AD5761 all=m
 AD5764 all=m
+AD5766 all=m
 AD5770R all=m
 AD5791 all=m
 AD7303 all=m
@@ -2664,6 +2695,7 @@ SENSORS_HMC5843_I2C all=m
 SENSORS_HMC5843_SPI all=m
 SENSORS_RM3100_I2C all=m
 SENSORS_RM3100_SPI all=m
+YAMAHA_YAS530 all=m
 
 #-
 #- *** FILE: drivers/iio/orientation/Kconfig ***
@@ -2675,6 +2707,7 @@ HID_SENSOR_DEVICE_ROTATION all=m
 #- *** FILE: drivers/iio/position/Kconfig ***
 #-
 IQS624_POS all=m
+HID_SENSOR_CUSTOM_INTEL_HINGE all=m
 
 #-
 #- *** FILE: drivers/iio/potentiometer/Kconfig ***
@@ -2998,8 +3031,8 @@ JOYSTICK_FSIA6B all=m
 #- *** FILE: drivers/input/joystick/iforce/Kconfig ***
 #-
 JOYSTICK_IFORCE all=m
-JOYSTICK_IFORCE_USB all=y
-JOYSTICK_IFORCE_232 all=y
+JOYSTICK_IFORCE_USB all=m
+JOYSTICK_IFORCE_232 all=m
 
 #-
 #- *** FILE: drivers/input/keyboard/Kconfig ***
@@ -3305,6 +3338,7 @@ HYPERV_IOMMU all=y
 #-
 #- *** FILE: drivers/iommu/amd/Kconfig ***
 #-
+AMD_IOMMU all=y
 AMD_IOMMU_V2 all=m
 
 #-
@@ -3438,6 +3472,13 @@ LEDS_SGM3140 all=m
 #- file drivers/leds/flash/Kconfig goes here
 #- LED Triggers
 #- file drivers/leds/trigger/Kconfig goes here
+#- LED Blink
+#- file drivers/leds/blink/Kconfig goes here
+
+#-
+#- *** FILE: drivers/leds/blink/Kconfig ***
+#-
+LEDS_BLINK all=y
 
 #-
 #- *** FILE: drivers/leds/flash/Kconfig ***
@@ -3465,6 +3506,7 @@ LEDS_TRIGGER_PANIC all=y
 LEDS_TRIGGER_NETDEV all=m
 LEDS_TRIGGER_PATTERN all=m
 LEDS_TRIGGER_AUDIO all=m
+LEDS_TRIGGER_TTY all=m
 
 #-
 #- *** FILE: drivers/lightnvm/Kconfig ***
@@ -3807,6 +3849,7 @@ VIDEO_OV2680 all=m
 VIDEO_OV2685 all=m
 VIDEO_OV2740 all=m
 VIDEO_OV5647 all=m
+VIDEO_OV5648 all=m
 VIDEO_OV6650 all=m
 VIDEO_OV5670 all=m
 VIDEO_OV5675 all=m
@@ -3816,6 +3859,7 @@ VIDEO_OV772X all=m
 VIDEO_OV7670 all=m
 VIDEO_OV7740 all=m
 VIDEO_OV8856 all=m
+VIDEO_OV8865 all=m
 VIDEO_OV9640 all=m
 VIDEO_OV9650 all=m
 VIDEO_OV9734 all=m
@@ -3833,6 +3877,7 @@ VIDEO_SR030PC30 all=m
 VIDEO_NOON010PC30 all=m
 #- file drivers/media/i2c/m5mols/Kconfig goes here
 VIDEO_RDACM20 all=m
+VIDEO_RDACM21 all=m
 VIDEO_RJ54N1 all=m
 VIDEO_S5K6AA all=m
 VIDEO_S5K6A3 all=m
@@ -3987,6 +4032,7 @@ VIDEO_DT3155 all=m
 #- *** FILE: drivers/media/pci/intel/ipu3/Kconfig ***
 #-
 VIDEO_IPU3_CIO2 all=m
+CIO2_BRIDGE all=y
 
 #-
 #- *** FILE: drivers/media/pci/ivtv/Kconfig ***
@@ -4169,7 +4215,7 @@ RADIO_ZOLTRIX alpha=m i386=m
 #-
 #- *** FILE: drivers/media/radio/si470x/Kconfig ***
 #-
-RADIO_SI470X all=y
+RADIO_SI470X all=m
 USB_SI470X all=m
 I2C_SI470X all=m
 
@@ -4577,6 +4623,7 @@ V4L2_FLASH_LED_CLASS all=m
 #-
 MEMORY all=y
 DDR all=y
+FPGA_DFL_EMIF all=m
 #- file drivers/memory/samsung/Kconfig goes here
 #- file drivers/memory/tegra/Kconfig goes here
 
@@ -4656,7 +4703,6 @@ INTEL_SOC_PMIC_CHTDC_TI all=m
 INTEL_SOC_PMIC_MRFLD all=m
 MFD_INTEL_LPSS_ACPI all=m
 MFD_INTEL_LPSS_PCI all=m
-MFD_INTEL_MSIC all=y
 MFD_INTEL_PMC_BXT all=m
 MFD_INTEL_PMT all=m
 MFD_IQS62X all=m
@@ -4736,7 +4782,6 @@ AD525X_DPOT_SPI all=m
 DUMMY_IRQ all=m
 IBM_ASM i386=m x86_64=m
 PHANTOM all=m
-INTEL_MID_PTI all=m
 TIFM_CORE all=m
 TIFM_7XX1 all=m
 ICS932S401 all=m
@@ -4775,6 +4820,7 @@ PVPANIC all=m
 #- file drivers/misc/echo/Kconfig goes here
 #- file drivers/misc/cxl/Kconfig goes here
 #- file drivers/misc/ocxl/Kconfig goes here
+#- file drivers/misc/bcm-vk/Kconfig goes here
 #- file drivers/misc/cardreader/Kconfig goes here
 #- file drivers/misc/habanalabs/Kconfig goes here
 #- file drivers/misc/uacce/Kconfig goes here
@@ -4785,6 +4831,12 @@ PVPANIC all=m
 #- Altera FPGA firmware download module (requires I2C)
 ALTERA_STAPL all=m
 
+#-
+#- *** FILE: drivers/misc/bcm-vk/Kconfig ***
+#-
+BCM_VK all=m
+BCM_VK_TTY all=y
+
 #-
 #- *** FILE: drivers/misc/c2port/Kconfig ***
 #-
@@ -4880,6 +4932,7 @@ MMC_BLOCK all=m
 MMC_BLOCK_MINORS all=8
 SDIO_UART all=m
 MMC_TEST all=n
+MMC_CRYPTO all=y
 
 #-
 #- *** FILE: drivers/mmc/host/Kconfig ***
@@ -4897,7 +4950,6 @@ MMC_SDHCI_F_SDH30 all=m
 MMC_WBSD all=m
 MMC_ALCOR all=m
 MMC_TIFM_SD all=m
-MMC_GOLDFISH all=m
 MMC_SPI all=m
 MMC_SDRICOH_CS all=m
 MMC_CB710 all=m
@@ -5355,6 +5407,7 @@ NET_DSA_MV88E6060 all=m
 #- file drivers/net/dsa/ocelot/Kconfig goes here
 #- file drivers/net/dsa/qca/Kconfig goes here
 #- file drivers/net/dsa/sja1105/Kconfig goes here
+#- file drivers/net/dsa/xrs700x/Kconfig goes here
 NET_DSA_QCA8K all=m
 NET_DSA_REALTEK_SMI all=m
 NET_DSA_SMSC_LAN9303_I2C all=m
@@ -5390,7 +5443,6 @@ NET_DSA_MICROCHIP_KSZ8795_SPI all=m
 #- *** FILE: drivers/net/dsa/mv88e6xxx/Kconfig ***
 #-
 NET_DSA_MV88E6XXX all=m
-NET_DSA_MV88E6XXX_GLOBAL2 all=y
 NET_DSA_MV88E6XXX_PTP all=y
 
 #-
@@ -5412,6 +5464,12 @@ NET_DSA_SJA1105_PTP all=y
 NET_DSA_SJA1105_TAS all=y
 NET_DSA_SJA1105_VL all=y
 
+#-
+#- *** FILE: drivers/net/dsa/xrs700x/Kconfig ***
+#-
+NET_DSA_XRS700X_I2C all=m
+NET_DSA_XRS700X_MDIO all=m
+
 #-
 #- *** FILE: drivers/net/ethernet/3com/Kconfig ***
 #-
@@ -5452,7 +5510,6 @@ WD80x3 alpha=m i386=m
 #- file drivers/net/ethernet/aquantia/Kconfig goes here
 #- file drivers/net/ethernet/arc/Kconfig goes here
 #- file drivers/net/ethernet/atheros/Kconfig goes here
-#- file drivers/net/ethernet/aurora/Kconfig goes here
 #- file drivers/net/ethernet/broadcom/Kconfig goes here
 #- file drivers/net/ethernet/brocade/Kconfig goes here
 #- file drivers/net/ethernet/cadence/Kconfig goes here
@@ -5609,12 +5666,6 @@ ATL1E all=m
 ATL1C all=m
 ALX all=m
 
-#-
-#- *** FILE: drivers/net/ethernet/aurora/Kconfig ***
-#-
-NET_VENDOR_AURORA all=y
-AURORA_NB8800 all=m
-
 #-
 #- *** FILE: drivers/net/ethernet/broadcom/Kconfig ***
 #-
@@ -5686,8 +5737,8 @@ CHELSIO_T4VF all=m
 #-
 CHELSIO_INLINE_CRYPTO all=y
 CRYPTO_DEV_CHELSIO_TLS all=m
-CHELSIO_IPSEC_INLINE all=y
-CHELSIO_TLS_DEVICE all=y
+CHELSIO_IPSEC_INLINE all=m
+CHELSIO_TLS_DEVICE all=m
 
 #-
 #- *** FILE: drivers/net/ethernet/cirrus/Kconfig ***
@@ -5886,6 +5937,7 @@ MLX5_FPGA_TLS all=y
 MLX5_TLS all=y
 MLX5_EN_TLS all=y
 MLX5_SW_STEERING all=y
+MLX5_SF all=y
 
 #-
 #- *** FILE: drivers/net/ethernet/mellanox/mlxfw/Kconfig ***
@@ -6192,7 +6244,7 @@ WIZNET_W5100_SPI all=m
 #- *** FILE: drivers/net/ethernet/xilinx/Kconfig ***
 #-
 NET_VENDOR_XILINX all=y
-XILINX_EMACLITE powerpc=m
+XILINX_EMACLITE all=m
 XILINX_AXI_EMAC all=m
 XILINX_LL_TEMAC all=m
 
@@ -6768,7 +6820,7 @@ MT7603E all=m
 #-
 MT7615E all=m
 MT7663U all=m
-MT7663S all=y
+MT7663S all=m
 
 #-
 #- *** FILE: drivers/net/wireless/mediatek/mt76/mt76x0/Kconfig ***
@@ -6787,6 +6839,11 @@ MT76x2U all=m
 #-
 MT7915E all=m
 
+#-
+#- *** FILE: drivers/net/wireless/mediatek/mt76/mt7921/Kconfig ***
+#-
+MT7921E all=m
+
 #-
 #- *** FILE: drivers/net/wireless/mediatek/mt7601u/Kconfig ***
 #-
@@ -6970,6 +7027,7 @@ NFC_TRF7970A all=m
 NFC_MEI_PHY all=m
 NFC_SIM all=m
 NFC_PORT100 all=m
+NFC_VIRTUAL_NCI all=m
 #- file drivers/nfc/fdp/Kconfig goes here
 #- file drivers/nfc/pn544/Kconfig goes here
 #- file drivers/nfc/pn533/Kconfig goes here
@@ -7062,6 +7120,11 @@ NTB_TRANSPORT all=m
 #-
 NTB_AMD all=m
 
+#-
+#- *** FILE: drivers/ntb/hw/epf/Kconfig ***
+#-
+NTB_EPF all=m
+
 #-
 #- *** FILE: drivers/ntb/hw/idt/Kconfig ***
 #-
@@ -7123,6 +7186,7 @@ NVMEM all=y
 NVMEM_SYSFS all=y
 NVMEM_SPMI_SDAM all=m
 RAVE_SP_EEPROM all=m
+NVMEM_RMEM all=m
 
 #-
 #- *** FILE: drivers/of/Kconfig ***
@@ -7167,6 +7231,14 @@ PCI_HYPERV all=m
 #- file drivers/pci/endpoint/Kconfig goes here
 #- file drivers/pci/switch/Kconfig goes here
 
+#-
+#- *** FILE: drivers/pci/controller/Kconfig ***
+#-
+VMD all=m
+#- file drivers/pci/controller/dwc/Kconfig goes here
+#- file drivers/pci/controller/mobiveil/Kconfig goes here
+#- file drivers/pci/controller/cadence/Kconfig goes here
+
 #-
 #- *** FILE: drivers/pci/controller/dwc/Kconfig ***
 #-
@@ -7187,6 +7259,7 @@ PCI_ENDPOINT_CONFIGFS all=y
 #- *** FILE: drivers/pci/endpoint/functions/Kconfig ***
 #-
 PCI_EPF_TEST all=m
+PCI_EPF_NTB all=m
 
 #-
 #- *** FILE: drivers/pci/hotplug/Kconfig ***
@@ -7218,7 +7291,6 @@ PCIEASPM_POWER_SUPERSAVE all=n
 PCIEASPM_PERFORMANCE all=n
 PCIE_DPC all=y
 PCIE_PTM all=y
-PCIE_BW all=y
 PCIE_EDR all=y
 
 #-
@@ -7351,7 +7423,6 @@ PINCTRL_MCP23S08 all=m
 #- file drivers/pinctrl/uniphier/Kconfig goes here
 #- file drivers/pinctrl/vt8500/Kconfig goes here
 #- file drivers/pinctrl/mediatek/Kconfig goes here
-#- file drivers/pinctrl/zte/Kconfig goes here
 #- file drivers/pinctrl/meson/Kconfig goes here
 #- file drivers/pinctrl/cirrus/Kconfig goes here
 #- file drivers/pinctrl/visconti/Kconfig goes here
@@ -7428,8 +7499,19 @@ SURFACE_PLATFORMS all=y
 SURFACE3_WMI all=m
 SURFACE_3_BUTTON all=m
 SURFACE_3_POWER_OPREGION all=m
+SURFACE_ACPI_NOTIFY all=m
+SURFACE_AGGREGATOR_CDEV all=m
 SURFACE_GPE all=m
+SURFACE_HOTPLUG all=m
 SURFACE_PRO3_BUTTON all=m
+#- file drivers/platform/surface/aggregator/Kconfig goes here
+
+#-
+#- *** FILE: drivers/platform/surface/aggregator/Kconfig ***
+#-
+SURFACE_AGGREGATOR all=m
+SURFACE_AGGREGATOR_BUS all=y
+SURFACE_AGGREGATOR_ERROR_INJECTION all=y
 
 #-
 #- *** FILE: drivers/platform/x86/Kconfig ***
@@ -7437,7 +7519,6 @@ SURFACE_PRO3_BUTTON all=m
 X86_PLATFORM_DEVICES i386=y x86_64=y
 ACPI_WMI all=m
 WMI_BMOF all=m
-ALIENWARE_WMI all=m
 HUAWEI_WMI all=m
 INTEL_WMI_SBL_FW_UPDATE all=m
 INTEL_WMI_THUNDERBOLT all=m
@@ -7455,18 +7536,7 @@ ASUS_WMI all=m
 ASUS_NB_WMI all=m
 EEEPC_LAPTOP all=m
 EEEPC_WMI all=m
-DCDBAS i386=m x86_64=m
-DELL_SMBIOS all=m
-DELL_SMBIOS_WMI all=y
-DELL_SMBIOS_SMM all=y
-DELL_LAPTOP all=m
-DELL_RBTN all=m
-DELL_RBU i386=m x86_64=m
-DELL_SMO8800 all=m
-DELL_WMI all=m
-DELL_WMI_SYSMAN all=m
-DELL_WMI_AIO all=m
-DELL_WMI_LED all=m
+#- file drivers/platform/x86/dell/Kconfig goes here
 AMILO_RFKILL all=m
 FUJITSU_LAPTOP all=m
 FUJITSU_TABLET all=m
@@ -7521,8 +7591,6 @@ 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_MFLD_THERMAL all=m
-INTEL_MID_POWER_BUTTON all=m
 INTEL_MRFLD_PWRBTN all=m
 INTEL_PMC_CORE all=y
 INTEL_PMT_CLASS all=m
@@ -7535,6 +7603,24 @@ INTEL_SCU_PLATFORM all=m
 INTEL_SCU_IPC_UTIL all=m
 INTEL_TELEMETRY all=m
 
+#-
+#- *** FILE: drivers/platform/x86/dell/Kconfig ***
+#-
+X86_PLATFORM_DRIVERS_DELL all=y
+ALIENWARE_WMI all=m
+DCDBAS i386=m x86_64=m
+DELL_LAPTOP all=m
+DELL_RBU i386=m x86_64=m
+DELL_RBTN all=m
+DELL_SMBIOS all=m
+DELL_SMBIOS_WMI all=y
+DELL_SMBIOS_SMM all=y
+DELL_SMO8800 all=m
+DELL_WMI all=m
+DELL_WMI_AIO all=m
+DELL_WMI_LED all=m
+DELL_WMI_SYSMAN all=m
+
 #-
 #- *** FILE: drivers/platform/x86/intel_speed_select_if/Kconfig ***
 #-
@@ -7619,6 +7705,7 @@ CHARGER_LP8727 all=m
 CHARGER_GPIO all=m
 CHARGER_MANAGER all=y
 CHARGER_LT3651 all=m
+CHARGER_LTC4162L all=m
 CHARGER_MAX14577 all=m
 CHARGER_MAX77693 all=m
 CHARGER_MP2629 all=m
@@ -7629,6 +7716,7 @@ CHARGER_BQ24735 all=m
 CHARGER_BQ2515X all=m
 CHARGER_BQ25890 all=m
 CHARGER_BQ25980 all=m
+CHARGER_BQ256XX all=m
 CHARGER_SMB347 all=m
 CHARGER_TPS65217 all=m
 BATTERY_GAUGE_LTC2941 all=m
@@ -7646,6 +7734,8 @@ CHARGER_WILCO all=m
 POWERCAP all=y
 INTEL_RAPL all=m
 IDLE_INJECT all=y
+DTPM all=y
+DTPM_CPU all=y
 
 #-
 #- *** FILE: drivers/pps/Kconfig ***
@@ -7694,6 +7784,7 @@ PWM_SL28CPLD all=m
 #-
 #- *** FILE: drivers/rapidio/Kconfig ***
 #-
+RAPIDIO all=m
 #- file drivers/rapidio/devices/Kconfig goes here
 RAPIDIO_DISC_TIMEOUT all=30
 RAPIDIO_ENABLE_RX_TX_PORTS all=y
@@ -7707,15 +7798,15 @@ RAPIDIO_MPORT_CDEV all=m
 #-
 #- *** FILE: drivers/rapidio/devices/Kconfig ***
 #-
-RAPIDIO_TSI721 all=y
+RAPIDIO_TSI721 all=m
 
 #-
 #- *** FILE: drivers/rapidio/switches/Kconfig ***
 #-
-RAPIDIO_TSI57X all=y
-RAPIDIO_CPS_XX all=y
-RAPIDIO_TSI568 all=y
-RAPIDIO_CPS_GEN2 all=y
+RAPIDIO_TSI57X all=m
+RAPIDIO_CPS_XX all=m
+RAPIDIO_TSI568 all=m
+RAPIDIO_CPS_GEN2 all=m
 RAPIDIO_RXS_GEN3 all=m
 
 #-
@@ -7731,7 +7822,6 @@ REGULATOR_88PM800 all=m
 REGULATOR_ACT8865 all=m
 REGULATOR_AD5398 all=m
 REGULATOR_ANATOP all=m
-REGULATOR_AB3100 all=m
 REGULATOR_AB8500 all=y
 REGULATOR_ARIZONA_LDO1 all=m
 REGULATOR_ARIZONA_MICSUPP all=m
@@ -7768,6 +7858,7 @@ REGULATOR_MC13783 all=m
 REGULATOR_MC13892 all=m
 REGULATOR_MP8859 all=m
 REGULATOR_MT6311 all=m
+REGULATOR_MT6315 all=m
 REGULATOR_MT6323 all=m
 REGULATOR_MT6358 all=m
 REGULATOR_MT6360 all=m
@@ -7933,7 +8024,6 @@ RTC_DRV_V3020 all=m
 RTC_DRV_WM831X all=m
 RTC_DRV_WM8350 all=m
 RTC_DRV_PCF50633 all=m
-RTC_DRV_AB3100 all=m
 RTC_DRV_AB8500 all=m
 RTC_DRV_CROS_EC all=m
 #- on-CPU RTC drivers
@@ -8030,7 +8120,6 @@ SCSI_SNIC_DEBUG_FS all=y
 SCSI_DMX3191D all=m
 SCSI_FDOMAIN_PCI all=m
 SCSI_FDOMAIN_ISA all=m
-SCSI_GDTH all=m
 SCSI_ISCI all=m
 SCSI_GENERIC_NCR5380 alpha=m i386=m
 SCSI_IPS all=m sparc=n sparc64=n
@@ -8234,11 +8323,6 @@ SCSI_UFS_DWC_TC_PLATFORM all=m
 SCSI_UFS_BSG all=y
 SCSI_UFS_CRYPTO all=y
 
-#-
-#- *** FILE: drivers/sfi/Kconfig ***
-#-
-SFI all=y
-
 #-
 #- *** FILE: drivers/siox/Kconfig ***
 #-
@@ -8267,17 +8351,6 @@ QCOM_CPR all=m
 #-
 SOC_TI all=y
 
-#-
-#- *** FILE: drivers/soc/xilinx/Kconfig ***
-#-
-XILINX_VCU all=m
-
-#-
-#- *** FILE: drivers/soc/zte/Kconfig ***
-#-
-SOC_ZTE all=y
-ZX2967_PM_DOMAINS all=y
-
 #-
 #- *** FILE: drivers/soundwire/Kconfig ***
 #-
@@ -8411,6 +8484,7 @@ COMEDI_BOND all=m
 COMEDI_TEST all=m
 COMEDI_PARPORT all=m
 COMEDI_SSV_DNP all=m
+COMEDI_ISA_DRIVERS all=y
 COMEDI_PCL711 all=m
 COMEDI_PCL724 all=m
 COMEDI_PCL726 all=m
@@ -8419,10 +8493,14 @@ COMEDI_PCL812 all=m
 COMEDI_PCL816 all=m
 COMEDI_PCL818 all=m
 COMEDI_PCM3724 all=m
+COMEDI_AMPLC_DIO200_ISA all=m
+COMEDI_AMPLC_PC236_ISA all=m
+COMEDI_AMPLC_PC263_ISA all=m
 COMEDI_RTI800 all=m
 COMEDI_RTI802 all=m
 COMEDI_DAC02 all=m
 COMEDI_DAS16M1 all=m
+COMEDI_DAS08_ISA all=m
 COMEDI_DAS16 all=m
 COMEDI_DAS800 all=m
 COMEDI_DAS1800 all=m
@@ -8685,7 +8763,6 @@ KS7010 all=m
 #- *** FILE: drivers/staging/media/Kconfig ***
 #-
 STAGING_MEDIA all=y
-#- file drivers/staging/media/allegro-dvt/Kconfig goes here
 #- file drivers/staging/media/atomisp/Kconfig goes here
 #- file drivers/staging/media/hantro/Kconfig goes here
 #- file drivers/staging/media/imx/Kconfig goes here
@@ -9110,7 +9187,6 @@ SERIAL_ALTERA_JTAGUART all=m
 SERIAL_ALTERA_UART all=m
 SERIAL_ALTERA_UART_MAXPORTS all=4
 SERIAL_ALTERA_UART_BAUDRATE all=115200
-SERIAL_IFX6X60 all=m
 SERIAL_PCH_UART all=m
 SERIAL_XILINX_PS_UART all=m
 SERIAL_ARC all=m
@@ -9189,10 +9265,14 @@ USB_XUSBATM all=m
 #-
 #- *** FILE: drivers/usb/cdns3/Kconfig ***
 #-
+USB_CDNS_SUPPORT all=m
 USB_CDNS3 all=m
 USB_CDNS3_GADGET all=y
 USB_CDNS3_HOST all=y
 USB_CDNS3_PCI_WRAP all=m
+USB_CDNSP_PCI all=m
+USB_CDNSP_GADGET all=y
+USB_CDNSP_HOST all=y
 
 #-
 #- *** FILE: drivers/usb/chipidea/Kconfig ***
@@ -9354,8 +9434,6 @@ USB_DUMMY_HCD all=m
 #- *** FILE: drivers/usb/gadget/udc/bdc/Kconfig ***
 #-
 USB_BDC_UDC all=m
-#- Platform Support
-USB_BDC_PCI all=m
 
 #-
 #- *** FILE: drivers/usb/host/Kconfig ***
@@ -9538,6 +9616,7 @@ USB_SERIAL_WISHBONE all=m
 USB_SERIAL_SSU100 all=m
 USB_SERIAL_QT2 all=m
 USB_SERIAL_UPD78F0730 all=m
+USB_SERIAL_XR all=m
 USB_SERIAL_DEBUG all=m
 
 #-
@@ -9737,7 +9816,7 @@ FB_DEFERRED_IO all=y
 FB_HECUBA i386=m x86_64=m
 FB_SVGALIB all=m
 FB_MACMODES all=n ppc=y ppc64=y
-FB_BACKLIGHT all=y
+FB_BACKLIGHT all=m
 FB_MODE_HELPERS all=y
 FB_TILEBLITTING all=y
 #- Frame buffer hardware drivers
@@ -9881,6 +9960,12 @@ LOGO_SUN_CLUT224 sparc=y sparc64=y
 VIRT_DRIVERS all=y
 #- file drivers/virt/vboxguest/Kconfig goes here
 #- file drivers/virt/nitro_enclaves/Kconfig goes here
+#- file drivers/virt/acrn/Kconfig goes here
+
+#-
+#- *** FILE: drivers/virt/acrn/Kconfig ***
+#-
+ACRN_HSM all=m
 
 #-
 #- *** FILE: drivers/virt/nitro_enclaves/Kconfig ***
@@ -9895,7 +9980,7 @@ VBOXGUEST all=m
 #-
 #- *** FILE: drivers/virtio/Kconfig ***
 #-
-VIRTIO all=m
+VIRTIO all=y
 VIRTIO_MENU all=y
 VIRTIO_PCI all=m
 VIRTIO_PCI_LEGACY all=y
@@ -10078,7 +10163,7 @@ USBPCWATCHDOG all=m
 #-
 XEN_BALLOON all=y
 XEN_BALLOON_MEMORY_HOTPLUG all=y
-XEN_BALLOON_MEMORY_HOTPLUG_LIMIT x86_64=512 x86=4
+XEN_MEMORY_HOTPLUG_LIMIT all=512
 XEN_SCRUB_PAGES_DEFAULT all=y
 XEN_DEV_EVTCHN all=m
 XEN_BACKEND all=y
@@ -10089,7 +10174,6 @@ XEN_GNTDEV all=m
 XEN_GNTDEV_DMABUF all=y
 XEN_GRANT_DEV_ALLOC all=m
 XEN_GRANT_DMA_ALLOC all=y
-XEN_MEMORY_HOTPLUG_LIMIT all=512
 XEN_PCIDEV_BACKEND all=m
 XEN_PVCALLS_FRONTEND all=m
 XEN_PVCALLS_BACKEND all=y
@@ -10384,11 +10468,11 @@ F2FS_FS_XATTR all=y
 F2FS_FS_POSIX_ACL all=y
 F2FS_FS_SECURITY all=y
 F2FS_CHECK_FS all=y
-F2FS_IO_TRACE all=y
 F2FS_FAULT_INJECTION all=n
 F2FS_FS_COMPRESSION all=y
 F2FS_FS_LZO all=y
 F2FS_FS_LZ4 all=y
+F2FS_FS_LZ4HC all=y
 F2FS_FS_ZSTD all=y
 F2FS_FS_LZORLE all=y
 
@@ -10832,6 +10916,7 @@ AUDITSYSCALL all=y
 #- file kernel/Kconfig.preempt goes here
 TICK_CPU_ACCOUNTING all=y
 VIRT_CPU_ACCOUNTING_GEN all=n
+IRQ_TIME_ACCOUNTING all=n
 SCHED_THERMAL_PRESSURE all=y
 BSD_PROCESS_ACCT all=y
 BSD_PROCESS_ACCT_V3 all=y
@@ -10938,7 +11023,7 @@ MODULES all=y
 MODULE_FORCE_LOAD all=y
 MODULE_UNLOAD all=y
 MODULE_FORCE_UNLOAD all=y
-MODVERSIONS all=n
+MODVERSIONS all=y
 MODULE_SRCVERSION_ALL all=n
 MODULE_SIG all=y
 MODULE_SIG_FORCE all=n
@@ -10953,7 +11038,6 @@ MODULE_COMPRESS all=y
 MODULE_COMPRESS_GZIP all=n
 MODULE_COMPRESS_XZ all=y
 MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS all=n
-UNUSED_SYMBOLS all=y
 #- file tree. goes here
 #- file block/Kconfig goes here
 #- file kernel/Kconfig.locks goes here
@@ -11173,7 +11257,9 @@ DEBUG_INFO all=y
 DEBUG_INFO_REDUCED all=n
 DEBUG_INFO_COMPRESSED all=y
 DEBUG_INFO_SPLIT all=y
+DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT all=n
 DEBUG_INFO_DWARF4 all=y
+DEBUG_INFO_DWARF5 all=n
 DEBUG_INFO_BTF all=n
 GDB_SCRIPTS all=y
 FRAME_WARN all=2048
@@ -11205,15 +11291,18 @@ DEBUG_SLAB all=n
 SLUB_DEBUG_ON all=n
 SLUB_STATS all=n
 DEBUG_KMEMLEAK all=n
+DEBUG_STACK_USAGE all=n
 SCHED_STACK_END_CHECK all=y
 DEBUG_VM all=n
 DEBUG_VM_PGTABLE all=n
 DEBUG_VIRTUAL all=n
 MEMORY_NOTIFIER_ERROR_INJECT all=m
+DEBUG_PER_CPU_MAPS all=n
 DEBUG_KMAP_LOCAL all=n
 DEBUG_KMAP_LOCAL_FORCE_MAP all=n
 DEBUG_HIGHMEM arm=n i386=n sparc=n
 #- file lib/Kconfig.kasan goes here
+#- file lib/Kconfig.kfence goes here
 DEBUG_SHIRQ all=n
 PANIC_ON_OOPS all=n
 PANIC_TIMEOUT all=180
@@ -11245,6 +11334,7 @@ LOCK_TORTURE_TEST all=m
 WW_MUTEX_SELFTEST all=m
 SCF_TORTURE_TEST all=m
 CSD_LOCK_WAIT_DEBUG all=n
+DEBUG_IRQFLAGS all=n
 WARN_ALL_UNSEEDED_RANDOM all=y
 DEBUG_KOBJECT all=n
 DEBUG_KOBJECT_RELEASE all=n
@@ -11262,6 +11352,8 @@ LATENCYTOP all=n
 #- file kernel/trace/Kconfig goes here
 PROVIDE_OHCI1394_DMA_INIT all=n
 #- file samples/Kconfig goes here
+STRICT_DEVMEM all=y
+IO_STRICT_DEVMEM all=y
 #- file arch/$(SRCARCH)/Kconfig.debug goes here
 #- file lib/kunit/Kconfig goes here
 NOTIFIER_ERROR_INJECTION all=m
@@ -11317,6 +11409,7 @@ TEST_MEMINIT all=m
 TEST_HMM all=m
 TEST_FREE_PAGES all=m
 TEST_FPU all=m
+MEMTEST all=y
 HYPERV_TESTING all=y
 #- file Documentation/Kconfig goes here
 
@@ -11325,6 +11418,14 @@ HYPERV_TESTING all=y
 #-
 KASAN all=n
 
+#-
+#- *** FILE: lib/Kconfig.kfence ***
+#-
+KFENCE all=y
+KFENCE_STATIC_KEYS all=y
+KFENCE_SAMPLE_INTERVAL all=100
+KFENCE_NUM_OBJECTS all=255
+
 #-
 #- *** FILE: lib/Kconfig.kgdb ***
 #-
@@ -11433,14 +11534,14 @@ ZSWAP_ZPOOL_DEFAULT_ZBUD all=y
 ZSWAP_ZPOOL_DEFAULT_Z3FOLD all=n
 ZSWAP_ZPOOL_DEFAULT_ZSMALLOC all=n
 ZSWAP_DEFAULT_ON all=y
-ZBUD all=m
+ZBUD all=y
 Z3FOLD all=m
 ZSMALLOC all=y
 ZSMALLOC_STAT all=y
 DEFERRED_STRUCT_PAGE_INIT all=n
 IDLE_PAGE_TRACKING all=y
 ZONE_DEVICE all=y
-HMM_MIRROR all=n
+HMM_MIRROR all=y
 DEVICE_PRIVATE all=y
 PERCPU_STATS all=n
 GUP_TEST all=n
@@ -11678,7 +11779,7 @@ BRIDGE_CFM all=y
 #-
 #- *** FILE: net/bridge/netfilter/Kconfig ***
 #-
-NF_TABLES_BRIDGE all=y
+NF_TABLES_BRIDGE all=m
 NFT_BRIDGE_META all=m
 NFT_BRIDGE_REJECT all=m
 NF_LOG_BRIDGE all=m
@@ -11783,6 +11884,7 @@ NET_DSA_TAG_HELLCREEK all=m
 NET_DSA_TAG_KSZ all=m
 NET_DSA_TAG_OCELOT all=m
 NET_DSA_TAG_SJA1105 all=m
+NET_DSA_TAG_XRS700X all=m
 
 #-
 #- *** FILE: net/hsr/Kconfig ***
@@ -12239,6 +12341,7 @@ IP_VS_SH all=m
 IP_VS_MH all=m
 IP_VS_SED all=m
 IP_VS_NQ all=m
+IP_VS_TWOS all=m
 IP_VS_SH_TAB_BITS all=8
 IP_VS_MH_TAB_INDEX all=12
 IP_VS_FTP all=m
@@ -12557,6 +12660,7 @@ GCC_PLUGIN_RANDSTRUCT_PERFORMANCE all=y
 SECURITY_DMESG_RESTRICT all=y
 SECURITY all=y
 SECURITY_NETWORK all=y
+PAGE_TABLE_ISOLATION all=y
 SECURITY_INFINIBAND all=y
 SECURITY_NETWORK_XFRM all=y
 SECURITY_PATH all=y
@@ -12829,6 +12933,7 @@ SND_FIREFACE all=m
 #- *** FILE: sound/hda/Kconfig ***
 #-
 SND_HDA_PREALLOC_SIZE all=2048
+SND_INTEL_BYT_PREFER_SOF all=y
 
 #-
 #- *** FILE: sound/isa/Kconfig ***
@@ -13029,7 +13134,6 @@ SND_SOC all=m
 #- file sound/soc/rockchip/Kconfig goes here
 #- file sound/soc/samsung/Kconfig goes here
 #- file sound/soc/sh/Kconfig goes here
-#- file sound/soc/sirf/Kconfig goes here
 #- file sound/soc/sof/Kconfig goes here
 #- file sound/soc/spear/Kconfig goes here
 #- file sound/soc/sprd/Kconfig goes here
@@ -13038,12 +13142,10 @@ SND_SOC all=m
 #- file sound/soc/sunxi/Kconfig goes here
 #- file sound/soc/tegra/Kconfig goes here
 #- file sound/soc/ti/Kconfig goes here
-#- file sound/soc/txx9/Kconfig goes here
 #- file sound/soc/uniphier/Kconfig goes here
 #- file sound/soc/ux500/Kconfig goes here
 #- file sound/soc/xilinx/Kconfig goes here
 #- file sound/soc/xtensa/Kconfig goes here
-#- file sound/soc/zte/Kconfig goes here
 #- file sound/soc/codecs/Kconfig goes here
 #- file sound/soc/generic/Kconfig goes here
 
@@ -13161,6 +13263,7 @@ SND_SOC_RK3328 all=m
 SND_SOC_RT1308_SDW all=m
 SND_SOC_RT5616 all=m
 SND_SOC_RT5631 all=m
+SND_SOC_RT5659 all=m
 SND_SOC_RT5670 all=m
 SND_SOC_RT5677 all=m
 SND_SOC_RT5677_SPI all=m
@@ -13171,7 +13274,6 @@ SND_SOC_RT715_SDW all=m
 SND_SOC_SGTL5000 all=m
 SND_SOC_SIMPLE_AMPLIFIER all=m
 SND_SOC_SIMPLE_MUX all=m
-SND_SOC_SIRF_AUDIO_CODEC all=m
 SND_SOC_SPDIF all=m
 SND_SOC_SSM2305 all=m
 SND_SOC_SSM2602_SPI all=m
@@ -13246,6 +13348,8 @@ SND_SOC_NAU8824 all=m
 SND_SOC_TPA6130A2 all=m
 SND_SOC_LPASS_WSA_MACRO all=m
 SND_SOC_LPASS_VA_MACRO all=m
+SND_SOC_LPASS_RX_MACRO all=m
+SND_SOC_LPASS_TX_MACRO all=m
 
 #-
 #- *** FILE: sound/soc/dwc/Kconfig ***
@@ -13322,6 +13426,7 @@ SND_SOC_INTEL_BDW_RT5677_MACH all=m
 SND_SOC_INTEL_BROADWELL_MACH all=m
 SND_SOC_INTEL_BYTCR_RT5640_MACH all=m
 SND_SOC_INTEL_BYTCR_RT5651_MACH all=m
+SND_SOC_INTEL_BYTCR_WM5102_MACH all=m
 SND_SOC_INTEL_CHT_BSW_RT5672_MACH all=m
 SND_SOC_INTEL_CHT_BSW_RT5645_MACH all=m
 SND_SOC_INTEL_CHT_BSW_MAX98090_TI_MACH all=m
@@ -13380,23 +13485,23 @@ SND_SOC_SOF_DEBUG all=n
 #- *** FILE: sound/soc/sof/intel/Kconfig ***
 #-
 SND_SOC_SOF_INTEL_TOPLEVEL all=y
-SND_SOC_SOF_BAYTRAIL_SUPPORT all=y
-SND_SOC_SOF_BROADWELL_SUPPORT all=y
-SND_SOC_SOF_MERRIFIELD_SUPPORT all=y
-SND_SOC_SOF_APOLLOLAKE_SUPPORT all=y
-SND_SOC_SOF_GEMINILAKE_SUPPORT all=y
-SND_SOC_SOF_CANNONLAKE_SUPPORT all=y
-SND_SOC_SOF_COFFEELAKE_SUPPORT all=y
-SND_SOC_SOF_ICELAKE_SUPPORT all=y
-SND_SOC_SOF_COMETLAKE_LP_SUPPORT all=y
-SND_SOC_SOF_TIGERLAKE_SUPPORT all=y
-SND_SOC_SOF_ELKHARTLAKE_SUPPORT all=y
-SND_SOC_SOF_JASPERLAKE_SUPPORT all=y
-SND_SOC_SOF_ALDERLAKE_SUPPORT all=y
+SND_SOC_SOF_BAYTRAIL all=m
+SND_SOC_SOF_BROADWELL all=m
+SND_SOC_SOF_MERRIFIELD all=m
+SND_SOC_SOF_APOLLOLAKE all=m
+SND_SOC_SOF_GEMINILAKE all=m
+SND_SOC_SOF_CANNONLAKE all=m
+SND_SOC_SOF_COFFEELAKE all=m
+SND_SOC_SOF_COMETLAKE all=m
+SND_SOC_SOF_ICELAKE all=m
+SND_SOC_SOF_JASPERLAKE all=m
+SND_SOC_SOF_TIGERLAKE all=m
+SND_SOC_SOF_ELKHARTLAKE all=m
+SND_SOC_SOF_ALDERLAKE all=m
 SND_SOC_SOF_HDA_LINK all=y
<Skipped 439 lines>
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/kernel.git/commitdiff/0b2a12c600104f62414d1781c8a44668c2c7fd2d



More information about the pld-cvs-commit mailing list