]> git.pld-linux.org Git - packages/kernel.git/commitdiff
Up to 5.15.0.
authorArkadiusz Miśkiewicz <arekm@maven.pl>
Tue, 2 Nov 2021 10:16:28 +0000 (11:16 +0100)
committerArkadiusz Miśkiewicz <arekm@maven.pl>
Tue, 2 Nov 2021 10:16:28 +0000 (11:16 +0100)
kernel-aufs5.patch
kernel-multiarch.config
kernel.spec
update-source.sh

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