SPDX-License-Identifier: GPL-2.0
-aufs4.17 kbuild patch
+aufs4.x-rcN kbuild patch
diff --git a/fs/Kconfig b/fs/Kconfig
-index bc821a8..7ae814c 100644
+index ac474a6..284cee9 100644
--- a/fs/Kconfig
+++ b/fs/Kconfig
-@@ -251,6 +251,7 @@ source "fs/pstore/Kconfig"
+@@ -255,6 +255,7 @@ source "fs/pstore/Kconfig"
source "fs/sysv/Kconfig"
source "fs/ufs/Kconfig"
source "fs/exofs/Kconfig"
endif # MISC_FILESYSTEMS
diff --git a/fs/Makefile b/fs/Makefile
-index c9375fd..8af5671 100644
+index 293733f..12d19d0 100644
--- a/fs/Makefile
+++ b/fs/Makefile
@@ -128,3 +128,4 @@ obj-y += exofs/ # Multiple modules
obj-$(CONFIG_EFIVAR_FS) += efivarfs/
+obj-$(CONFIG_AUFS_FS) += aufs/
SPDX-License-Identifier: GPL-2.0
-aufs4.17 base patch
+aufs4.x-rcN base patch
diff --git a/MAINTAINERS b/MAINTAINERS
-index 9c125f7..4616bbf 100644
+index 0fe4228..52cedab 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
-@@ -2519,6 +2519,19 @@ F: include/linux/audit.h
+@@ -2541,6 +2541,19 @@ F: include/linux/audit.h
F: include/uapi/linux/audit.h
F: kernel/audit*
+
AUXILIARY DISPLAY DRIVERS
M: Miguel Ojeda Sandonis <miguel.ojeda.sandonis@gmail.com>
- W: http://miguelojeda.es/auxdisplay.htm
+ S: Maintained
diff --git a/drivers/block/loop.c b/drivers/block/loop.c
-index 55cf554..bc965e5 100644
+index 4cb1d1b..5678bf8 100644
--- a/drivers/block/loop.c
+++ b/drivers/block/loop.c
-@@ -713,6 +713,24 @@ static inline int is_loop_device(struct file *file)
- return i && S_ISBLK(i->i_mode) && MAJOR(i->i_rdev) == LOOP_MAJOR;
+@@ -741,6 +741,24 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev,
+ return error;
}
+/*
static ssize_t loop_attr_show(struct device *dev, char *page,
diff --git a/fs/dcache.c b/fs/dcache.c
-index 2acfc69..ff338e2 100644
+index 0e8e5de..88de3b6 100644
--- a/fs/dcache.c
+++ b/fs/dcache.c
-@@ -1234,7 +1234,7 @@ enum d_walk_ret {
+@@ -1240,7 +1240,7 @@ enum d_walk_ret {
*
- * The @enter() and @finish() callbacks are called with d_lock held.
+ * The @enter() callbacks are called with d_lock held.
*/
-static void d_walk(struct dentry *parent, void *data,
+void d_walk(struct dentry *parent, void *data,
- enum d_walk_ret (*enter)(void *, struct dentry *),
- void (*finish)(void *))
+ enum d_walk_ret (*enter)(void *, struct dentry *))
{
+ struct dentry *this_parent;
diff --git a/fs/fcntl.c b/fs/fcntl.c
-index d737ff0..7550799 100644
+index 12273b6..545e686 100644
--- a/fs/fcntl.c
+++ b/fs/fcntl.c
@@ -32,7 +32,7 @@
return error;
diff --git a/fs/inode.c b/fs/inode.c
-index 3b55391..e0c5255 100644
+index 8c86c80..af894e7 100644
--- a/fs/inode.c
+++ b/fs/inode.c
-@@ -1663,7 +1663,7 @@ EXPORT_SYMBOL(generic_update_time);
+@@ -1649,7 +1649,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.
*/
--static int update_time(struct inode *inode, struct timespec *time, int flags)
-+int update_time(struct inode *inode, struct timespec *time, int flags)
+-static int update_time(struct inode *inode, struct timespec64 *time, int flags)
++int update_time(struct inode *inode, struct timespec64 *time, int flags)
{
- int (*update_time)(struct inode *, struct timespec *, int);
+ int (*update_time)(struct inode *, struct timespec64 *, int);
diff --git a/fs/namespace.c b/fs/namespace.c
-index 5f75969..61129ff 100644
+index 8ddd148..ee649e0 100644
--- a/fs/namespace.c
+++ b/fs/namespace.c
@@ -846,6 +846,12 @@ static inline int check_mnt(struct mount *mnt)
* vfsmount lock must be held for write
*/
diff --git a/fs/read_write.c b/fs/read_write.c
-index c4eabbf..ddd6e67 100644
+index 153f8f6..ccc5bc8 100644
--- a/fs/read_write.c
+++ b/fs/read_write.c
@@ -489,6 +489,28 @@ ssize_t __vfs_write(struct file *file, const char __user *p, size_t count,
{
mm_segment_t old_fs;
diff --git a/fs/splice.c b/fs/splice.c
-index 005d09c..f617ab0 100644
+index b3daa97..1dd7f96 100644
--- a/fs/splice.c
+++ b/fs/splice.c
-@@ -837,8 +837,8 @@ EXPORT_SYMBOL(generic_splice_sendpage);
+@@ -838,8 +838,8 @@ EXPORT_SYMBOL(generic_splice_sendpage);
/*
* Attempt to initiate a splice from pipe to file.
*/
{
ssize_t (*splice_write)(struct pipe_inode_info *, struct file *,
loff_t *, size_t, unsigned int);
-@@ -854,9 +854,9 @@ static long do_splice_from(struct pipe_inode_info *pipe, struct file *out,
+@@ -855,9 +855,9 @@ static long do_splice_from(struct pipe_inode_info *pipe, struct file *out,
/*
* Attempt to initiate a splice from a file to a pipe.
*/
static inline void fput_light(struct file *file, int fput_needed)
{
diff --git a/include/linux/fs.h b/include/linux/fs.h
-index 760d8da..09a2542 100644
+index 805bf22..0d0d247f 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
-@@ -1270,6 +1270,7 @@ extern void fasync_free(struct fasync_struct *);
+@@ -1273,6 +1273,7 @@ extern void fasync_free(struct fasync_struct *);
/* can be called from interrupts */
extern void kill_fasync(struct fasync_struct **, int, int);
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);
-@@ -1724,6 +1725,7 @@ struct file_operations {
+@@ -1733,6 +1734,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);
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);
-@@ -1794,6 +1796,12 @@ ssize_t rw_copy_check_uvector(int type, const struct iovec __user * uvector,
+@@ -1803,6 +1805,12 @@ ssize_t rw_copy_check_uvector(int type, const struct iovec __user * uvector,
struct iovec *fast_pointer,
struct iovec **ret_pointer);
extern ssize_t __vfs_read(struct file *, char __user *, size_t, loff_t *);
extern ssize_t vfs_read(struct file *, char __user *, size_t, loff_t *);
extern ssize_t vfs_write(struct file *, const char __user *, size_t, loff_t *);
-@@ -2199,6 +2207,7 @@ extern int current_umask(void);
+@@ -2218,6 +2226,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 timespec *, int);
-+extern int update_time(struct inode *, struct timespec *, int);
+ extern int generic_update_time(struct inode *, struct timespec64 *, int);
++extern int update_time(struct inode *, struct timespec64 *, int);
/* /sys/fs */
extern struct kobject *fs_kobj;
-@@ -2485,6 +2494,7 @@ static inline bool sb_is_blkdev_sb(struct super_block *sb)
+@@ -2505,6 +2514,7 @@ static inline bool sb_is_blkdev_sb(struct super_block *sb)
return false;
}
#endif
+ unsigned int flags);
#endif
diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c
-index 0233863..06e0d7a 100644
+index 5fa4d31..720f070 100644
--- a/kernel/locking/lockdep.c
+++ b/kernel/locking/lockdep.c
@@ -140,7 +140,7 @@ static struct lock_list list_entries[MAX_LOCKDEP_ENTRIES];
#ifdef CONFIG_LOCK_STAT
static DEFINE_PER_CPU(struct lock_class_stats[MAX_LOCKDEP_KEYS], cpu_lock_stats);
SPDX-License-Identifier: GPL-2.0
-aufs4.17 mmap patch
+aufs4.x-rcN mmap patch
diff --git a/fs/proc/base.c b/fs/proc/base.c
-index 1a76d75..77f698e 100644
+index aaffc0c..ab72941 100644
--- a/fs/proc/base.c
+++ b/fs/proc/base.c
-@@ -2024,7 +2024,7 @@ static int map_files_get_link(struct dentry *dentry, struct path *path)
+@@ -2004,7 +2004,7 @@ static int map_files_get_link(struct dentry *dentry, struct path *path)
down_read(&mm->mmap_sem);
vma = find_exact_vma(mm, vm_start, vm_end);
if (vma && vma->vm_file) {
rc = 0;
}
diff --git a/fs/proc/nommu.c b/fs/proc/nommu.c
-index 7563437..7c0dc0f 100644
+index 3b63be6..fb9913b 100644
--- a/fs/proc/nommu.c
+++ b/fs/proc/nommu.c
@@ -45,7 +45,10 @@ static int nommu_region_show(struct seq_file *m, struct vm_region *region)
ino = inode->i_ino;
}
diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c
-index c486ad4..76b71f8 100644
+index dfd73a4..ed2ce10 100644
--- a/fs/proc/task_mmu.c
+++ b/fs/proc/task_mmu.c
-@@ -305,7 +305,10 @@ show_map_vma(struct seq_file *m, struct vm_area_struct *vma, int is_pid)
+@@ -306,7 +306,10 @@ show_map_vma(struct seq_file *m, struct vm_area_struct *vma, int is_pid)
const char *name = NULL;
if (file) {
dev = inode->i_sb->s_dev;
ino = inode->i_ino;
pgoff = ((loff_t)vma->vm_pgoff) << PAGE_SHIFT;
-@@ -1726,7 +1729,7 @@ static int show_numa_map(struct seq_file *m, void *v, int is_pid)
+@@ -1734,7 +1737,7 @@ static int show_numa_map(struct seq_file *m, void *v, int is_pid)
struct proc_maps_private *proc_priv = &numa_priv->proc_maps;
struct vm_area_struct *vma = v;
struct numa_maps *md = &numa_priv->md;
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 02a616e..01b3bb9 100644
+index d3a3842..c4664f2 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
-@@ -1380,6 +1380,28 @@ static inline void unmap_shared_mapping_range(struct address_space *mapping,
+@@ -1431,6 +1431,28 @@ static inline void unmap_shared_mapping_range(struct address_space *mapping,
unmap_mapping_range(mapping, holebegin, holelen, 0);
}
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 2161234..78aa367 100644
+index 99ce070..8babe35 100644
--- a/include/linux/mm_types.h
+++ b/include/linux/mm_types.h
-@@ -251,6 +251,7 @@ struct vm_region {
+@@ -236,6 +236,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 */
int vm_usage; /* region usage count (access under nommu_region_sem) */
bool vm_icache_flushed : 1; /* true if the icache has been flushed for
-@@ -325,6 +326,7 @@ struct vm_area_struct {
+@@ -310,6 +311,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). */
atomic_long_t swap_readahead_info;
diff --git a/kernel/fork.c b/kernel/fork.c
-index a5d21c4..e965e09 100644
+index a191c05..d88ee5a 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
-@@ -473,7 +473,7 @@ static __latent_entropy int dup_mmap(struct mm_struct *mm,
+@@ -506,7 +506,7 @@ static __latent_entropy int dup_mmap(struct mm_struct *mm,
struct inode *inode = file_inode(file);
struct address_space *mapping = file->f_mapping;
atomic_dec(&inode->i_writecount);
i_mmap_lock_write(mapping);
diff --git a/mm/Makefile b/mm/Makefile
-index b4e54a9a..77892ae 100644
+index 8716bda..68afd6d 100644
--- a/mm/Makefile
+++ b/mm/Makefile
@@ -39,7 +39,7 @@ obj-y := filemap.o mempool.o oom_kill.o \
obj-y += init-mm.o
diff --git a/mm/filemap.c b/mm/filemap.c
-index 0604cb0..45d2369 100644
+index 52517f2..250f675 100644
--- a/mm/filemap.c
+++ b/mm/filemap.c
-@@ -2700,7 +2700,7 @@ int filemap_page_mkwrite(struct vm_fault *vmf)
- int ret = VM_FAULT_LOCKED;
+@@ -2700,7 +2700,7 @@ vm_fault_t filemap_page_mkwrite(struct vm_fault *vmf)
+ vm_fault_t ret = VM_FAULT_LOCKED;
sb_start_pagefault(inode->i_sb);
- file_update_time(vmf->vma->vm_file);
if (page->mapping != inode->i_mapping) {
unlock_page(page);
diff --git a/mm/mmap.c b/mm/mmap.c
-index fc41c05..e376869 100644
+index ff1944d..88abe2d 100644
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -180,7 +180,7 @@ static struct vm_area_struct *remove_vma(struct vm_area_struct *vma)
- fput(vma->vm_file);
+ vma_fput(vma);
mpol_put(vma_policy(vma));
- kmem_cache_free(vm_area_cachep, vma);
+ vm_area_free(vma);
return next;
@@ -905,7 +905,7 @@ int __vma_adjust(struct vm_area_struct *vma, unsigned long start,
if (remove_next) {
}
if (next->anon_vma)
anon_vma_merge(vma, next);
-@@ -1820,8 +1820,8 @@ unsigned long mmap_region(struct file *file, unsigned long addr,
+@@ -1818,8 +1818,8 @@ unsigned long mmap_region(struct file *file, unsigned long addr,
return addr;
unmap_and_free_vma:
/* Undo any partial mapping done by a device driver. */
unmap_region(mm, vma, prev, vma->vm_start, vma->vm_end);
-@@ -2645,7 +2645,7 @@ int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
+@@ -2638,7 +2638,7 @@ int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
goto out_free_mpol;
if (new->vm_file)
if (new->vm_ops && new->vm_ops->open)
new->vm_ops->open(new);
-@@ -2664,7 +2664,7 @@ int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
+@@ -2657,7 +2657,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)
unlink_anon_vmas(new);
out_free_mpol:
mpol_put(vma_policy(new));
-@@ -2826,7 +2826,7 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size,
+@@ -2819,7 +2819,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;
- struct file *file;
+ struct file *file, *prfile;
- pr_warn_once("%s (%d) uses deprecated remap_file_pages() syscall. See Documentation/vm/remap_file_pages.txt.\n",
+ pr_warn_once("%s (%d) uses deprecated remap_file_pages() syscall. See Documentation/vm/remap_file_pages.rst.\n",
current->comm, current->pid);
-@@ -2901,10 +2901,27 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size,
+@@ -2894,10 +2894,27 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size,
}
}
out:
up_write(&mm->mmap_sem);
if (populate)
-@@ -3220,7 +3237,7 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap,
+@@ -3204,7 +3221,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)
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 1372373..6362dde 100644
+index 1d22fdb..2b608be 100644
--- a/mm/nommu.c
+++ b/mm/nommu.c
@@ -629,7 +629,7 @@ static void __put_nommu_region(struct vm_region *region)
- fput(vma->vm_file);
+ vma_fput(vma);
put_nommu_region(vma->vm_region);
- kmem_cache_free(vm_area_cachep, vma);
+ vm_area_free(vma);
}
-@@ -1289,7 +1289,7 @@ unsigned long do_mmap(struct file *file,
+@@ -1288,7 +1288,7 @@ unsigned long do_mmap(struct file *file,
goto error_just_free;
}
}
kmem_cache_free(vm_region_jar, region);
region = pregion;
result = start;
-@@ -1364,10 +1364,10 @@ unsigned long do_mmap(struct file *file,
+@@ -1363,7 +1363,7 @@ unsigned long do_mmap(struct file *file,
up_write(&nommu_region_sem);
error:
if (region->vm_file)
+ vmr_fput(region);
kmem_cache_free(vm_region_jar, region);
if (vma->vm_file)
-- fput(vma->vm_file);
-+ vma_fput(vma);
- kmem_cache_free(vm_area_cachep, vma);
- return ret;
-
+ fput(vma->vm_file);
diff --git a/mm/prfile.c b/mm/prfile.c
new file mode 100644
-index 0000000..37e95e1
+index 0000000..a27ac36
--- /dev/null
+++ b/mm/prfile.c
@@ -0,0 +1,86 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
++// SPDX-License-Identifier: GPL-2.0
+/*
+ * Mainly for aufs which mmap(2) different file and wants to print different
+ * path in /proc/PID/maps.
+}
+#endif /* !CONFIG_MMU */
SPDX-License-Identifier: GPL-2.0
-aufs4.17 standalone patch
+aufs4.x-rcN standalone patch
diff --git a/fs/dcache.c b/fs/dcache.c
-index ff338e2..3e2bae8 100644
+index 88de3b6..de0091a 100644
--- a/fs/dcache.c
+++ b/fs/dcache.c
-@@ -1342,6 +1342,7 @@ void d_walk(struct dentry *parent, void *data,
+@@ -1345,6 +1345,7 @@ void d_walk(struct dentry *parent, void *data,
seq = 1;
goto again;
}
struct check_mount {
struct vfsmount *mnt;
-@@ -2942,6 +2943,7 @@ void d_exchange(struct dentry *dentry1, struct dentry *dentry2)
+@@ -2891,6 +2892,7 @@ void d_exchange(struct dentry *dentry1, struct dentry *dentry2)
write_sequnlock(&rename_lock);
}
/**
* d_ancestor - search for an ancestor
diff --git a/fs/exec.c b/fs/exec.c
-index 183059c..35adee4 100644
+index 72e961a..adc7329 100644
--- a/fs/exec.c
+++ b/fs/exec.c
@@ -109,6 +109,7 @@ bool path_noexec(const struct path *path)
#ifdef CONFIG_USELIB
/*
diff --git a/fs/fcntl.c b/fs/fcntl.c
-index 7550799..d403576 100644
+index 545e686..0237ad7 100644
--- a/fs/fcntl.c
+++ b/fs/fcntl.c
@@ -85,6 +85,7 @@ int setfl(int fd, struct file * filp, unsigned long arg)
void __init files_init(void)
{
diff --git a/fs/inode.c b/fs/inode.c
-index e0c5255..ff36056 100644
+index af894e7..169811b 100644
--- a/fs/inode.c
+++ b/fs/inode.c
-@@ -1672,6 +1672,7 @@ int update_time(struct inode *inode, struct timespec *time, int flags)
+@@ -1658,6 +1658,7 @@ int update_time(struct inode *inode, struct timespec64 *time, int flags)
return update_time(inode, time, flags);
}
/**
* touch_atime - update the access time
diff --git a/fs/namespace.c b/fs/namespace.c
-index 61129ff..5d3e0382 100644
+index ee649e0..10923cb 100644
--- a/fs/namespace.c
+++ b/fs/namespace.c
@@ -517,6 +517,7 @@ void __mnt_drop_write(struct vfsmount *mnt)
static void cleanup_group_ids(struct mount *mnt, struct mount *end)
{
diff --git a/fs/notify/group.c b/fs/notify/group.c
-index b7a4b6a..5a69d60 100644
+index aa5468f2..b38d224 100644
--- a/fs/notify/group.c
+++ b/fs/notify/group.c
@@ -22,6 +22,7 @@
int fsnotify_fasync(int fd, struct file *file, int on)
{
diff --git a/fs/notify/mark.c b/fs/notify/mark.c
-index e9191b4..1f8ccfa 100644
+index 61f4c5f..855c655 100644
--- a/fs/notify/mark.c
+++ b/fs/notify/mark.c
-@@ -108,6 +108,7 @@ void fsnotify_get_mark(struct fsnotify_mark *mark)
- WARN_ON_ONCE(!refcount_read(&mark->refcnt));
- refcount_inc(&mark->refcnt);
+@@ -245,6 +245,7 @@ void fsnotify_put_mark(struct fsnotify_mark *mark)
+ queue_delayed_work(system_unbound_wq, &reaper_work,
+ FSNOTIFY_REAPER_DELAY);
}
+EXPORT_SYMBOL_GPL(fsnotify_put_mark);
- static void __fsnotify_recalc_mask(struct fsnotify_mark_connector *conn)
- {
-@@ -392,6 +393,7 @@ void fsnotify_destroy_mark(struct fsnotify_mark *mark,
+ /*
+ * Get mark reference when we found the mark via lockless traversal of object
+@@ -399,6 +400,7 @@ void fsnotify_destroy_mark(struct fsnotify_mark *mark,
mutex_unlock(&group->mark_mutex);
fsnotify_free_mark(mark);
}
/*
* Sorting function for lists of fsnotify marks.
-@@ -606,6 +608,7 @@ int fsnotify_add_mark_locked(struct fsnotify_mark *mark, struct inode *inode,
- fsnotify_put_mark(mark);
+@@ -624,6 +626,7 @@ int fsnotify_add_mark(struct fsnotify_mark *mark, struct inode *inode,
+ mutex_unlock(&group->mark_mutex);
return ret;
}
+EXPORT_SYMBOL_GPL(fsnotify_add_mark);
- int fsnotify_add_mark(struct fsnotify_mark *mark, struct inode *inode,
- struct vfsmount *mnt, int allow_dups)
-@@ -741,6 +744,7 @@ void fsnotify_init_mark(struct fsnotify_mark *mark,
+ /*
+ * Given a list of marks, find the mark associated with given group. If found
+@@ -747,6 +750,7 @@ void fsnotify_init_mark(struct fsnotify_mark *mark,
fsnotify_get_group(group);
mark->group = group;
}
int open_check_o_direct(struct file *f)
{
diff --git a/fs/read_write.c b/fs/read_write.c
-index ddd6e67..aabf92d 100644
+index ccc5bc8..36f52f4 100644
--- a/fs/read_write.c
+++ b/fs/read_write.c
@@ -459,6 +459,7 @@ ssize_t vfs_read(struct file *file, char __user *buf, size_t count, loff_t *pos)
static inline loff_t file_pos_read(struct file *file)
{
diff --git a/fs/splice.c b/fs/splice.c
-index f617ab0..ec0ad02 100644
+index 1dd7f96..a5e3bcb 100644
--- a/fs/splice.c
+++ b/fs/splice.c
-@@ -850,6 +850,7 @@ long do_splice_from(struct pipe_inode_info *pipe, struct file *out,
+@@ -851,6 +851,7 @@ long do_splice_from(struct pipe_inode_info *pipe, struct file *out,
return splice_write(pipe, out, ppos, len, flags);
}
/*
* Attempt to initiate a splice from a file to a pipe.
-@@ -879,6 +880,7 @@ long do_splice_to(struct file *in, loff_t *ppos,
+@@ -880,6 +881,7 @@ long do_splice_to(struct file *in, loff_t *ppos,
return splice_read(in, ppos, pipe, len, flags);
}
/*
* Write out and wait upon all dirty data associated with this
diff --git a/fs/xattr.c b/fs/xattr.c
-index 61cd28b..35570cd 100644
+index f9cb1db..000b62b 100644
--- a/fs/xattr.c
+++ b/fs/xattr.c
-@@ -297,6 +297,7 @@ vfs_getxattr_alloc(struct dentry *dentry, const char *name, char **xattr_value,
+@@ -296,6 +296,7 @@ vfs_getxattr_alloc(struct dentry *dentry, const char *name, char **xattr_value,
*xattr_value = value;
return error;
}
ssize_t
__vfs_getxattr(struct dentry *dentry, struct inode *inode, const char *name,
diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c
-index 06e0d7a..6af91bd 100644
+index 720f070..4f58215 100644
--- a/kernel/locking/lockdep.c
+++ b/kernel/locking/lockdep.c
@@ -151,6 +151,7 @@ inline struct lock_class *lockdep_hlock_class(struct held_lock *hlock)
}
+EXPORT_SYMBOL_GPL(task_work_run);
diff --git a/security/commoncap.c b/security/commoncap.c
-index 1ce701f..a0d106e 100644
+index f4c33ab..70563f1 100644
--- a/security/commoncap.c
+++ b/security/commoncap.c
-@@ -1332,12 +1332,14 @@ int cap_mmap_addr(unsigned long addr)
+@@ -1336,12 +1336,14 @@ int cap_mmap_addr(unsigned long addr)
}
return ret;
}
#ifdef CONFIG_SECURITY
diff --git a/security/device_cgroup.c b/security/device_cgroup.c
-index c65b39b..e363d22 100644
+index cd97929..424fd23 100644
--- a/security/device_cgroup.c
+++ b/security/device_cgroup.c
@@ -8,6 +8,7 @@
}
+EXPORT_SYMBOL_GPL(__devcgroup_check_permission);
diff --git a/security/security.c b/security/security.c
-index 7bc2fde..6bd0468 100644
+index 68f46d8..3bc1348 100644
--- a/security/security.c
+++ b/security/security.c
@@ -537,6 +537,7 @@ int security_path_rmdir(const struct path *dir, struct dentry *dentry)
{
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 2018-07-19 09:46:13.053314374 +0200
++++ linux/Documentation/ABI/testing/debugfs-aufs 2018-08-12 23:43:05.450124426 +0200
@@ -0,0 +1,55 @@
+What: /debug/aufs/si_<id>/
+Date: March 2009
+# 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 2018-07-19 09:46:13.053314374 +0200
++++ linux/fs/aufs/aufs.h 2018-08-12 23:43:05.450124426 +0200
@@ -0,0 +1,61 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+#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 2018-07-19 09:46:13.053314374 +0200
++++ linux/fs/aufs/branch.c 2018-08-12 23:43:05.450124426 +0200
@@ -0,0 +1,1422 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
++// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2005-2018 Junjiro R. Okajima
+ *
+}
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 2018-07-19 09:46:13.053314374 +0200
++++ linux/fs/aufs/branch.h 2018-08-12 23:43:05.453457863 +0200
@@ -0,0 +1,374 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+-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 2018-07-19 09:46:13.056647808 +0200
-@@ -0,0 +1,1442 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
++++ linux/fs/aufs/cpup.c 2018-08-12 23:43:05.453457863 +0200
+@@ -0,0 +1,1441 @@
++// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2005-2018 Junjiro R. Okajima
+ *
+ switch (mode & S_IFMT) {
+ case S_IFREG:
+ isreg = 1;
-+ err = vfsub_create(h_dir, &h_path, S_IRUSR | S_IWUSR,
-+ /*want_excl*/true);
++ err = vfsub_create(h_dir, &h_path, 0600, /*want_excl*/true);
+ if (!err)
+ err = au_do_cpup_regular(cpg, h_src_attr);
+ break;
+}
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 2018-07-19 09:46:13.056647808 +0200
++++ linux/fs/aufs/cpup.h 2018-08-12 23:43:05.453457863 +0200
@@ -0,0 +1,100 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+struct au_dtime {
+ struct dentry *dt_dentry;
+ struct path dt_h_path;
-+ struct timespec dt_atime, dt_mtime;
++ struct timespec64 dt_atime, dt_mtime;
+};
+void au_dtime_store(struct au_dtime *dt, struct dentry *dentry,
+ struct path *h_path);
+#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 2018-07-19 09:46:13.056647808 +0200
++++ linux/fs/aufs/dbgaufs.c 2018-08-12 23:43:05.453457863 +0200
@@ -0,0 +1,478 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
++// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2005-2018 Junjiro R. Okajima
+ *
+#endif
+
+static struct dentry *dbgaufs;
-+static const mode_t dbgaufs_mode = S_IRUSR | S_IRGRP | S_IROTH;
++static const mode_t dbgaufs_mode = 0444;
+
+/* 20 is max digits length of ulong 64 */
+struct dbgaufs_arg {
+}
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 2018-07-19 09:46:13.056647808 +0200
++++ linux/fs/aufs/dbgaufs.h 2018-08-12 23:43:05.453457863 +0200
@@ -0,0 +1,53 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+#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 2018-07-19 09:46:13.056647808 +0200
-@@ -0,0 +1,226 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
++++ linux/fs/aufs/dcsub.c 2018-08-12 23:43:05.453457863 +0200
+@@ -0,0 +1,225 @@
++// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2005-2018 Junjiro R. Okajima
+ *
+};
+
+extern void d_walk(struct dentry *parent, void *data,
-+ enum d_walk_ret (*enter)(void *, struct dentry *),
-+ void (*finish)(void *));
++ enum d_walk_ret (*enter)(void *, struct dentry *));
+
+struct ac_dpages_arg {
+ int err;
+ .arg = arg
+ };
+
-+ d_walk(root, &args, au_call_dpages_append, NULL);
++ d_walk(root, &args, au_call_dpages_append);
+
+ return args.err;
+}
+}
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 2018-07-19 09:46:13.056647808 +0200
++++ linux/fs/aufs/dcsub.h 2018-08-12 23:43:05.453457863 +0200
@@ -0,0 +1,137 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+#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 2018-07-19 09:46:13.056647808 +0200
++++ linux/fs/aufs/debug.c 2018-08-12 23:43:05.453457863 +0200
@@ -0,0 +1,441 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
++// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2005-2018 Junjiro R. Okajima
+ *
+
+atomic_t aufs_debug = ATOMIC_INIT(0);
+MODULE_PARM_DESC(debug, "debug print");
-+module_param_named(debug, aufs_debug, atomic_t, S_IRUGO | S_IWUSR | S_IWGRP);
++module_param_named(debug, aufs_debug, atomic_t, 0664);
+
+DEFINE_MUTEX(au_dbg_mtx); /* just to serialize the dbg msgs */
+char *au_plevel = KERN_DEBUG;
+ inode->i_ino, inode->i_sb ? au_sbtype(inode->i_sb) : "??",
+ atomic_read(&inode->i_count), inode->i_nlink, inode->i_mode,
+ i_size_read(inode), (unsigned long long)inode->i_blocks,
-+ hn, (long long)timespec_to_ns(&inode->i_ctime) & 0x0ffff,
++ hn, (long long)timespec64_to_ns(&inode->i_ctime) & 0x0ffff,
+ inode->i_mapping ? inode->i_mapping->nrpages : 0,
+ inode->i_state, inode->i_flags, inode_peek_iversion(inode),
+ inode->i_generation,
+}
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 2018-07-19 09:46:13.056647808 +0200
++++ linux/fs/aufs/debug.h 2018-08-12 23:43:05.453457863 +0200
@@ -0,0 +1,226 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+#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 2018-07-19 09:46:13.056647808 +0200
++++ linux/fs/aufs/dentry.c 2018-08-12 23:43:05.453457863 +0200
@@ -0,0 +1,1153 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
++// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2005-2018 Junjiro R. Okajima
+ *
+};
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 2018-07-19 09:46:13.056647808 +0200
++++ linux/fs/aufs/dentry.h 2018-08-12 23:43:05.453457863 +0200
@@ -0,0 +1,267 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+#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 2018-07-19 09:46:13.056647808 +0200
++++ linux/fs/aufs/dinfo.c 2018-08-12 23:43:05.453457863 +0200
@@ -0,0 +1,554 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
++// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2005-2018 Junjiro R. Okajima
+ *
+}
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 2018-07-19 09:46:13.056647808 +0200
++++ linux/fs/aufs/dir.c 2018-08-12 23:43:05.453457863 +0200
@@ -0,0 +1,760 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
++// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2005-2018 Junjiro R. Okajima
+ *
+ au_hn_inode_lock_nested(hdir, AuLsc_I_PARENT);
+ h_dir = au_h_iptr(dir, btop);
+ if (h_dir->i_nlink
-+ && timespec_compare(&h_dir->i_mtime, &dt.dt_mtime) < 0) {
++ && timespec64_compare(&h_dir->i_mtime, &dt.dt_mtime) < 0) {
+ dt.dt_h_path = h_path;
+ au_dtime_revert(&dt);
+ }
+};
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 2018-07-19 09:46:13.056647808 +0200
++++ linux/fs/aufs/dir.h 2018-08-12 23:43:05.453457863 +0200
@@ -0,0 +1,132 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+#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 2018-07-19 09:46:13.056647808 +0200
++++ linux/fs/aufs/dirren.c 2018-08-12 23:43:05.453457863 +0200
@@ -0,0 +1,1316 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
++// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2017-2018 Junjiro R. Okajima
+ *
+}
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 2018-07-19 09:46:13.056647808 +0200
++++ linux/fs/aufs/dirren.h 2018-08-12 23:43:05.453457863 +0200
@@ -0,0 +1,140 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+#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 2018-07-19 09:46:13.056647808 +0200
++++ linux/fs/aufs/dynop.c 2018-08-12 23:43:05.456791299 +0200
@@ -0,0 +1,370 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
++// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2010-2018 Junjiro R. Okajima
+ *
+}
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 2018-07-19 09:46:13.056647808 +0200
++++ linux/fs/aufs/dynop.h 2018-08-12 23:43:05.456791299 +0200
@@ -0,0 +1,75 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+#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 2018-07-19 09:46:13.056647808 +0200
++++ linux/fs/aufs/export.c 2018-08-12 23:43:05.456791299 +0200
@@ -0,0 +1,838 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
++// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2005-2018 Junjiro R. Okajima
+ *
+}
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 2018-07-19 09:46:13.056647808 +0200
++++ linux/fs/aufs/fhsm.c 2018-08-12 23:43:05.456791299 +0200
@@ -0,0 +1,427 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
++// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2011-2018 Junjiro R. Okajima
+ *
+}
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 2018-07-19 09:46:13.056647808 +0200
++++ linux/fs/aufs/file.c 2018-08-12 23:43:05.456791299 +0200
@@ -0,0 +1,857 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
++// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2005-2018 Junjiro R. Okajima
+ *
+};
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 2018-07-19 09:46:13.059981241 +0200
++++ linux/fs/aufs/file.h 2018-08-12 23:43:05.456791299 +0200
@@ -0,0 +1,341 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+
+/* poll.c */
+#ifdef CONFIG_AUFS_POLL
-+__poll_t aufs_poll(struct file *file, poll_table *wait);
++__poll_t aufs_poll(struct file *file, struct poll_table_struct *pt);
+#endif
+
+#ifdef CONFIG_AUFS_BR_HFSPLUS
+#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 2018-07-19 09:46:13.059981241 +0200
++++ linux/fs/aufs/finfo.c 2018-08-12 23:43:05.456791299 +0200
@@ -0,0 +1,149 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
++// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2005-2018 Junjiro R. Okajima
+ *
+}
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 2018-07-19 09:46:13.056647808 +0200
++++ linux/fs/aufs/f_op.c 2018-08-12 23:43:05.456791299 +0200
@@ -0,0 +1,818 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
++// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2005-2018 Junjiro R. Okajima
+ *
+};
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 2018-07-19 09:46:13.059981241 +0200
++++ linux/fs/aufs/fstype.h 2018-08-12 23:43:05.456791299 +0200
@@ -0,0 +1,401 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+#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 2018-07-19 09:46:13.059981241 +0200
++++ linux/fs/aufs/hbl.h 2018-08-12 23:43:05.456791299 +0200
@@ -0,0 +1,65 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+#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 2018-07-19 09:46:13.059981241 +0200
++++ linux/fs/aufs/hfsnotify.c 2018-08-12 23:43:05.456791299 +0200
@@ -0,0 +1,290 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
++// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2005-2018 Junjiro R. Okajima
+ *
+
+static int au_hfsn_handle_event(struct fsnotify_group *group,
+ struct inode *inode,
-+ struct fsnotify_mark *inode_mark,
-+ struct fsnotify_mark *vfsmount_mark,
+ u32 mask, const void *data, int data_type,
+ const unsigned char *file_name, u32 cookie,
+ struct fsnotify_iter_info *iter_info)
+ struct au_hnotify *hnotify;
+ struct inode *h_dir, *h_inode;
+ struct qstr h_child_qstr = QSTR_INIT(file_name, strlen(file_name));
++ struct fsnotify_mark *inode_mark;
+
+ AuDebugOn(data_type != FSNOTIFY_EVENT_INODE);
+
+ au_debug_off();
+#endif
+
++ inode_mark = fsnotify_iter_inode_mark(iter_info);
+ AuDebugOn(!inode_mark);
+ hnotify = container_of(inode_mark, struct au_hnotify, hn_mark);
+ err = au_hnotify(h_dir, hnotify, mask, &h_child_qstr, h_inode);
+};
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 2018-07-19 09:46:13.059981241 +0200
++++ linux/fs/aufs/hfsplus.c 2018-08-12 23:43:05.456791299 +0200
@@ -0,0 +1,57 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
++// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2010-2018 Junjiro R. Okajima
+ *
+}
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 2018-07-19 09:46:13.059981241 +0200
++++ linux/fs/aufs/hnotify.c 2018-08-12 23:43:05.456791299 +0200
@@ -0,0 +1,720 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
++// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2005-2018 Junjiro R. Okajima
+ *
+}
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 2018-07-19 09:46:13.059981241 +0200
++++ linux/fs/aufs/iinfo.c 2018-08-12 23:43:05.460124736 +0200
@@ -0,0 +1,286 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
++// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2005-2018 Junjiro R. Okajima
+ *
+}
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 2018-07-19 09:46:13.059981241 +0200
++++ linux/fs/aufs/inode.c 2018-08-12 23:43:05.460124736 +0200
@@ -0,0 +1,528 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
++// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2005-2018 Junjiro R. Okajima
+ *
+}
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 2018-07-19 09:46:13.059981241 +0200
++++ linux/fs/aufs/inode.h 2018-08-12 23:43:05.460124736 +0200
@@ -0,0 +1,696 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+#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 2018-07-19 09:46:13.059981241 +0200
++++ linux/fs/aufs/ioctl.c 2018-08-12 23:43:05.460124736 +0200
@@ -0,0 +1,220 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
++// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2005-2018 Junjiro R. Okajima
+ *
+#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 2018-07-19 09:46:13.059981241 +0200
++++ linux/fs/aufs/i_op_add.c 2018-08-12 23:43:05.456791299 +0200
@@ -0,0 +1,921 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
++// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2005-2018 Junjiro R. Okajima
+ *
+}
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 2018-07-19 09:46:13.059981241 +0200
++++ linux/fs/aufs/i_op.c 2018-08-12 23:43:05.456791299 +0200
@@ -0,0 +1,1460 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
++// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2005-2018 Junjiro R. Okajima
+ *
+ if (((mask & MAY_EXEC)
+ && S_ISREG(h_inode->i_mode)
+ && (path_noexec(h_path)
-+ || !(h_inode->i_mode & S_IXUGO))))
++ || !(h_inode->i_mode & 0111))))
+ goto out;
+
+ /*
+ return (inode->i_mode & (S_IFBLK | S_IFCHR | S_IFIFO | S_IFSOCK));
+}
+
-+static int aufs_update_time(struct inode *inode, struct timespec *ts, int flags)
++static int aufs_update_time(struct inode *inode, struct timespec64 *ts, int flags)
+{
+ int err;
+ aufs_bindex_t bindex;
+};
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 2018-07-19 09:46:13.059981241 +0200
++++ linux/fs/aufs/i_op_del.c 2018-08-12 23:43:05.456791299 +0200
@@ -0,0 +1,512 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
++// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2005-2018 Junjiro R. Okajima
+ *
+}
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 2018-07-19 09:46:13.059981241 +0200
++++ linux/fs/aufs/i_op_ren.c 2018-08-12 23:43:05.460124736 +0200
@@ -0,0 +1,1247 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
++// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2005-2018 Junjiro R. Okajima
+ *
+endif
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 2018-07-19 09:46:13.059981241 +0200
++++ linux/fs/aufs/loop.c 2018-08-12 23:43:05.460124736 +0200
@@ -0,0 +1,148 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
++// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2005-2018 Junjiro R. Okajima
+ *
+}
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 2018-07-19 09:46:13.059981241 +0200
++++ linux/fs/aufs/loop.h 2018-08-12 23:43:05.460124736 +0200
@@ -0,0 +1,53 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+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 2018-07-19 09:46:13.059981241 +0200
++++ linux/fs/aufs/module.c 2018-08-12 23:43:05.460124736 +0200
@@ -0,0 +1,273 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
++// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2005-2018 Junjiro R. Okajima
+ *
+/* this module parameter has no meaning when SYSFS is disabled */
+int sysaufs_brs = 1;
+MODULE_PARM_DESC(brs, "use <sysfs>/fs/aufs/si_*/brN");
-+module_param_named(brs, sysaufs_brs, int, S_IRUGO);
++module_param_named(brs, sysaufs_brs, int, 0444);
+
+/* this module parameter has no meaning when USER_NS is disabled */
+bool au_userns;
+MODULE_PARM_DESC(allow_userns, "allow unprivileged to mount under userns");
-+module_param_named(allow_userns, au_userns, bool, S_IRUGO);
++module_param_named(allow_userns, au_userns, bool, 0444);
+
+/* ---------------------------------------------------------------------- */
+
+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 2018-07-19 09:46:13.059981241 +0200
++++ linux/fs/aufs/module.h 2018-08-12 23:43:05.460124736 +0200
@@ -0,0 +1,102 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+#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 2018-07-19 09:46:13.059981241 +0200
++++ linux/fs/aufs/mvdown.c 2018-08-12 23:43:05.460124736 +0200
@@ -0,0 +1,705 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
++// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2011-2018 Junjiro R. Okajima
+ *
+}
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 2018-07-19 09:46:13.059981241 +0200
++++ linux/fs/aufs/opts.c 2018-08-12 23:43:05.460124736 +0200
@@ -0,0 +1,1891 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
++// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2005-2018 Junjiro R. Okajima
+ *
+}
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 2018-07-19 09:46:13.063314675 +0200
++++ linux/fs/aufs/opts.h 2018-08-12 23:43:05.460124736 +0200
@@ -0,0 +1,225 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+#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 2018-07-19 09:46:13.063314675 +0200
++++ linux/fs/aufs/plink.c 2018-08-12 23:43:05.460124736 +0200
@@ -0,0 +1,516 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
++// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2005-2018 Junjiro R. Okajima
+ *
+}
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 2018-07-19 09:46:13.063314675 +0200
-@@ -0,0 +1,54 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
++++ linux/fs/aufs/poll.c 2018-08-12 23:43:05.460124736 +0200
+@@ -0,0 +1,51 @@
++// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2005-2018 Junjiro R. Okajima
+ *
+
+#include "aufs.h"
+
-+__poll_t aufs_poll(struct file *file, poll_table *wait)
++__poll_t aufs_poll(struct file *file, struct poll_table_struct *pt)
+{
+ __poll_t mask;
+ struct file *h_file;
+ goto out;
+ }
+
-+ /* it is not an error if h_file has no operation */
-+ mask = DEFAULT_POLLMASK;
-+ if (h_file->f_op->poll)
-+ mask = h_file->f_op->poll(h_file, wait);
++ mask = vfs_poll(h_file, pt);
+ fput(h_file); /* instead of au_read_post() */
+
+out:
+}
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 2018-07-19 09:46:13.063314675 +0200
++++ linux/fs/aufs/posix_acl.c 2018-08-12 23:43:05.460124736 +0200
@@ -0,0 +1,103 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
++// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2014-2018 Junjiro R. Okajima
+ *
+}
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 2018-07-19 09:46:13.063314675 +0200
++++ linux/fs/aufs/procfs.c 2018-08-12 23:43:05.460124736 +0200
@@ -0,0 +1,171 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
++// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2010-2018 Junjiro R. Okajima
+ *
+ if (unlikely(!au_procfs_dir))
+ goto out;
+
-+ entry = proc_create(AUFS_PLINK_MAINT_NAME, S_IFREG | S_IWUSR,
++ entry = proc_create(AUFS_PLINK_MAINT_NAME, S_IFREG | 0200,
+ au_procfs_dir, &au_procfs_plm_fop);
+ if (unlikely(!entry))
+ goto out_dir;
+}
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 2018-07-19 09:46:13.063314675 +0200
++++ linux/fs/aufs/rdu.c 2018-08-12 23:43:05.463458173 +0200
@@ -0,0 +1,382 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
++// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2005-2018 Junjiro R. Okajima
+ *
+#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 2018-07-19 09:46:13.063314675 +0200
++++ linux/fs/aufs/rwsem.h 2018-08-12 23:43:05.463458173 +0200
@@ -0,0 +1,73 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+#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 2018-07-19 09:46:13.063314675 +0200
++++ linux/fs/aufs/sbinfo.c 2018-08-12 23:43:05.463458173 +0200
@@ -0,0 +1,312 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
++// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2005-2018 Junjiro R. Okajima
+ *
+}
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 2018-07-19 09:46:13.063314675 +0200
++++ linux/fs/aufs/super.c 2018-08-12 23:43:05.463458173 +0200
@@ -0,0 +1,1043 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
++// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2005-2018 Junjiro R. Okajima
+ *
+};
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 2018-07-19 09:46:13.063314675 +0200
++++ linux/fs/aufs/super.h 2018-08-12 23:43:05.463458173 +0200
@@ -0,0 +1,627 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+#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 2018-07-19 09:46:13.063314675 +0200
++++ linux/fs/aufs/sysaufs.c 2018-08-12 23:43:05.463458173 +0200
@@ -0,0 +1,93 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
++// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2005-2018 Junjiro R. Okajima
+ *
+}
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 2018-07-19 09:46:13.063314675 +0200
++++ linux/fs/aufs/sysaufs.h 2018-08-12 23:43:05.463458173 +0200
@@ -0,0 +1,102 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+#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 2018-07-19 09:46:13.063314675 +0200
++++ linux/fs/aufs/sysfs.c 2018-08-12 23:43:05.463458173 +0200
@@ -0,0 +1,373 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
++// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2005-2018 Junjiro R. Okajima
+ *
+ attr = &br_sysfs->attr;
+ sysfs_attr_init(attr);
+ attr->name = br_sysfs->name;
-+ attr->mode = S_IRUGO;
++ attr->mode = 0444;
+ br_sysfs++;
+ }
+}
+}
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 2018-07-19 09:46:13.063314675 +0200
++++ linux/fs/aufs/sysrq.c 2018-08-12 23:43:05.463458173 +0200
@@ -0,0 +1,160 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
++// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2005-2018 Junjiro R. Okajima
+ *
+
+/* module parameter */
+static char *aufs_sysrq_key = "a";
-+module_param_named(sysrq, aufs_sysrq_key, charp, S_IRUGO);
++module_param_named(sysrq, aufs_sysrq_key, charp, 0444);
+MODULE_PARM_DESC(sysrq, "MagicSysRq key for " AUFS_NAME);
+
+static void au_sysrq(int key __maybe_unused)
+}
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 2018-07-19 09:46:13.063314675 +0200
++++ linux/fs/aufs/vdir.c 2018-08-12 23:43:05.463458173 +0200
@@ -0,0 +1,894 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
++// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2005-2018 Junjiro R. Okajima
+ *
+}
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 2018-07-19 09:46:13.063314675 +0200
++++ linux/fs/aufs/vfsub.c 2018-08-12 23:43:05.463458173 +0200
@@ -0,0 +1,895 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
++// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2005-2018 Junjiro R. Okajima
+ *
+}
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 2018-07-19 09:46:13.063314675 +0200
++++ linux/fs/aufs/vfsub.h 2018-08-12 23:43:05.463458173 +0200
@@ -0,0 +1,355 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+}
+#endif
+
-+static inline int vfsub_update_time(struct inode *h_inode, struct timespec *ts,
-+ int flags)
++static inline int vfsub_update_time(struct inode *h_inode,
++ struct timespec64 *ts, int flags)
+{
+ return update_time(h_inode, ts, flags);
+ /* no vfsub_update_h_iattr() since we don't have struct path */
+#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 2018-07-19 09:46:13.063314675 +0200
-@@ -0,0 +1,831 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
++++ linux/fs/aufs/wbr_policy.c 2018-08-12 23:43:05.463458173 +0200
+@@ -0,0 +1,830 @@
++// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2005-2018 Junjiro R. Okajima
+ *
+ goto out;
+ h_path.dentry = au_h_dptr(dentry, bdst);
+ h_path.mnt = au_sbr_mnt(dentry->d_sb, bdst);
-+ err = vfsub_sio_mkdir(au_h_iptr(dir, bdst), &h_path,
-+ S_IRWXU | S_IRUGO | S_IXUGO);
++ err = vfsub_sio_mkdir(au_h_iptr(dir, bdst), &h_path, 0755);
+ if (unlikely(err))
+ goto out_put;
+ au_fset_cpdown(*flags, MADE_DIR);
+};
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 2018-07-19 09:46:13.063314675 +0200
++++ linux/fs/aufs/whout.c 2018-08-12 23:43:05.463458173 +0200
@@ -0,0 +1,1062 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
++// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2005-2018 Junjiro R. Okajima
+ *
+
+#include "aufs.h"
+
-+#define WH_MASK S_IRUGO
++#define WH_MASK 0444
+
+/*
+ * If a directory contains this file, then it is opaque. We start with the
+
+ err = -EEXIST;
+ if (d_is_negative(path->dentry)) {
-+ int mode = S_IRWXU;
++ int mode = 0700;
+
+ if (au_test_nfs(path->dentry->d_sb))
-+ mode |= S_IXUGO;
++ mode |= 0111;
+ err = vfsub_mkdir(h_dir, path, mode);
+ } else if (d_is_dir(path->dentry))
+ err = 0;
+}
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 2018-07-19 09:46:13.063314675 +0200
++++ linux/fs/aufs/whout.h 2018-08-12 23:43:05.463458173 +0200
@@ -0,0 +1,86 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+#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 2018-07-19 09:46:13.063314675 +0200
++++ linux/fs/aufs/wkq.c 2018-08-12 23:43:05.463458173 +0200
@@ -0,0 +1,391 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
++// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2005-2018 Junjiro R. Okajima
+ *
+}
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 2018-07-19 09:46:13.063314675 +0200
++++ linux/fs/aufs/wkq.h 2018-08-12 23:43:05.463458173 +0200
@@ -0,0 +1,94 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+#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 2018-07-19 09:46:13.066648108 +0200
++++ linux/fs/aufs/xattr.c 2018-08-12 23:43:05.466791610 +0200
@@ -0,0 +1,356 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
++// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2014-2018 Junjiro R. Okajima
+ *
+}
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 2018-07-19 09:46:13.066648108 +0200
++++ linux/fs/aufs/xino.c 2018-08-12 23:43:05.466791610 +0200
@@ -0,0 +1,1593 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
++// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2005-2018 Junjiro R. Okajima
+ *
+ */
+ file = vfsub_filp_open(fpath, O_RDWR | O_CREAT | O_EXCL | O_LARGEFILE
+ /* | __FMODE_NONOTIFY */,
-+ S_IRUGO | S_IWUGO);
++ 0666);
+ if (IS_ERR(file)) {
+ if (!silent)
+ pr_err("open %s(%ld)\n", fpath, PTR_ERR(file));
+ }
+
+ /* no need to mnt_want_write() since we call dentry_open() later */
-+ err = vfs_create(dir, path.dentry, S_IRUGO | S_IWUGO, NULL);
++ err = vfs_create(dir, path.dentry, 0666, NULL);
+ if (unlikely(err)) {
+ file = ERR_PTR(err);
+ pr_err("%pd create err %d\n", dentry, err);
+}
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 2018-07-19 09:46:13.066648108 +0200
++++ linux/include/uapi/linux/aufs_type.h 2018-08-12 23:43:05.466791610 +0200
@@ -0,0 +1,448 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+
+#include <linux/limits.h>
+
-+#define AUFS_VERSION "4.17-20180716"
++#define AUFS_VERSION "4.x-rcN-20180730"
+
+/* todo? move this to linux-2.6.19/include/magic.h */
+#define AUFS_SUPER_MAGIC ('a' << 24 | 'u' << 16 | 'f' << 8 | 's')
+
+#endif /* __AUFS_TYPE_H__ */
SPDX-License-Identifier: GPL-2.0
-aufs4.17 loopback patch
+aufs4.x-rcN loopback patch
diff --git a/drivers/block/loop.c b/drivers/block/loop.c
-index bc965e5..852868a 100644
+index 5678bf8..ec9c4fb 100644
--- a/drivers/block/loop.c
+++ b/drivers/block/loop.c
-@@ -622,6 +622,15 @@ static inline void loop_update_dio(struct loop_device *lo)
+@@ -626,6 +626,15 @@ static inline void loop_update_dio(struct loop_device *lo)
lo->use_dio);
}
static void loop_reread_partitions(struct loop_device *lo,
struct block_device *bdev)
{
-@@ -656,6 +665,7 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev,
+@@ -690,6 +699,7 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev,
unsigned int arg)
{
struct file *file, *old_file;
struct inode *inode;
int error;
-@@ -672,9 +682,16 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev,
- error = loop_validate_file(file, bdev);
- if (error)
- goto out_putf;
+@@ -706,6 +716,12 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev,
+ file = fget(arg);
+ if (!file)
+ goto out;
+ f = loop_real_file(file);
+ if (f) {
+ virt_file = file;
+ get_file(file);
+ }
+ error = loop_validate_file(file, bdev);
+ if (error)
+@@ -713,6 +729,7 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev,
+
inode = file->f_mapping->host;
old_file = lo->lo_backing_file;
+ old_virt_file = lo->lo_backing_virt_file;
error = -EINVAL;
-@@ -689,6 +706,7 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev,
+@@ -724,6 +741,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;
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));
-@@ -696,12 +714,16 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev,
+@@ -731,12 +749,16 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev,
blk_mq_unfreeze_queue(lo->lo_queue);
fput(old_file);
out:
return error;
}
-@@ -895,7 +917,7 @@ static int loop_prepare_queue(struct loop_device *lo)
+@@ -924,7 +946,7 @@ static int loop_prepare_queue(struct loop_device *lo)
static int loop_set_fd(struct loop_device *lo, fmode_t mode,
struct block_device *bdev, unsigned int arg)
{
struct inode *inode;
struct address_space *mapping;
int lo_flags = 0;
-@@ -909,6 +931,12 @@ static int loop_set_fd(struct loop_device *lo, fmode_t mode,
+@@ -938,6 +960,12 @@ static int loop_set_fd(struct loop_device *lo, fmode_t mode,
file = fget(arg);
if (!file)
goto out;
error = -EBUSY;
if (lo->lo_state != Lo_unbound)
-@@ -957,6 +985,7 @@ static int loop_set_fd(struct loop_device *lo, fmode_t mode,
+@@ -970,6 +998,7 @@ static int loop_set_fd(struct loop_device *lo, fmode_t mode,
lo->lo_device = bdev;
lo->lo_flags = lo_flags;
lo->lo_backing_file = file;
lo->transfer = NULL;
lo->ioctl = NULL;
lo->lo_sizelimit = 0;
-@@ -990,6 +1019,8 @@ static int loop_set_fd(struct loop_device *lo, fmode_t mode,
+@@ -1003,6 +1032,8 @@ static int loop_set_fd(struct loop_device *lo, fmode_t mode,
out_putf:
fput(file);
out:
/* This is safe: open() is still holding a reference. */
module_put(THIS_MODULE);
-@@ -1036,6 +1067,7 @@ loop_init_xfer(struct loop_device *lo, struct loop_func_table *xfer,
+@@ -1049,6 +1080,7 @@ loop_init_xfer(struct loop_device *lo, struct loop_func_table *xfer,
static int loop_clr_fd(struct loop_device *lo)
{
struct file *filp = lo->lo_backing_file;
gfp_t gfp = lo->old_gfp_mask;
struct block_device *bdev = lo->lo_device;
-@@ -1067,6 +1099,7 @@ static int loop_clr_fd(struct loop_device *lo)
+@@ -1080,6 +1112,7 @@ static int loop_clr_fd(struct loop_device *lo)
spin_lock_irq(&lo->lo_lock);
lo->lo_state = Lo_rundown;
lo->lo_backing_file = NULL;
spin_unlock_irq(&lo->lo_lock);
loop_release_xfer(lo);
-@@ -1115,6 +1148,8 @@ static int loop_clr_fd(struct loop_device *lo)
+@@ -1128,6 +1161,8 @@ static int loop_clr_fd(struct loop_device *lo)
* bd_mutex which is usually taken before lo_ctl_mutex.
*/
fput(filp);
}
diff --git a/drivers/block/loop.h b/drivers/block/loop.h
-index b78de98..2bbbd92 100644
+index 4d42c7a..a4974ee 100644
--- a/drivers/block/loop.h
+++ b/drivers/block/loop.h
@@ -46,7 +46,7 @@ struct loop_device {
void *key_data;
diff --git a/fs/aufs/f_op.c b/fs/aufs/f_op.c
-index 7ca7f67..3d4e90d 100644
+index 937a20d..1355656 100644
--- a/fs/aufs/f_op.c
+++ b/fs/aufs/f_op.c
@@ -358,7 +358,7 @@ static ssize_t aufs_read_iter(struct kiocb *kio, struct iov_iter *iov_iter)
if (file->f_mapping != h_file->f_mapping) {
file->f_mapping = h_file->f_mapping;
diff --git a/fs/aufs/loop.c b/fs/aufs/loop.c
-index 2d65b8f..5ed7903 100644
+index 3d84349..a642de5 100644
--- a/fs/aufs/loop.c
+++ b/fs/aufs/loop.c
@@ -133,3 +133,19 @@ void au_loopback_fin(void)
#endif /* __KERNEL__ */
diff --git a/fs/aufs/super.c b/fs/aufs/super.c
-index eed37ba..a3a5cd7 100644
+index 4020639..13e315f 100644
--- a/fs/aufs/super.c
+++ b/fs/aufs/super.c
@@ -840,7 +840,10 @@ static const struct super_operations aufs_sop = {
/* ---------------------------------------------------------------------- */
diff --git a/include/linux/fs.h b/include/linux/fs.h
-index 09a2542..11a6346 100644
+index 0d0d247f..50d77f8 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
-@@ -1852,6 +1852,10 @@ struct super_operations {
+@@ -1861,6 +1861,10 @@ struct super_operations {
struct shrink_control *);
long (*free_cached_objects)(struct super_block *,
struct shrink_control *);