From c2c0f25cba50bfcba203019d305e6b97eaebe9ed Mon Sep 17 00:00:00 2001 From: =?utf8?q?Arkadiusz=20Mi=C5=9Bkiewicz?= Date: Thu, 24 Sep 2015 14:25:32 +0200 Subject: [PATCH] - up to 4.2.1; builds on x8664; not tested --- kernel-apparmor.patch | 150 ++++----- kernel-aufs4.patch | 598 ++++++++++++++++++----------------- kernel-imq.patch | 125 +++++--- kernel-multiarch.config | 297 ++++++++++++----- kernel-virtio-gl-accel.patch | 2 +- kernel.spec | 14 +- 6 files changed, 665 insertions(+), 521 deletions(-) diff --git a/kernel-apparmor.patch b/kernel-apparmor.patch index cab89b93..f83524d5 100644 --- a/kernel-apparmor.patch +++ b/kernel-apparmor.patch @@ -1,30 +1,12 @@ -From d29d73fa5d7b5d016f9c17236fff2a741acea247 Mon Sep 17 00:00:00 2001 +From e37c855a09ba7a8fa69334e9e3c7f5b0f66de896 Mon Sep 17 00:00:00 2001 From: John Johansen Date: Mon, 4 Oct 2010 15:03:36 -0700 -Subject: [PATCH 1/3] UBUNTU: SAUCE: AppArmor: basic networking rules +Subject: UBUNTU: SAUCE: AppArmor: basic networking rules Base support for network mediation. Signed-off-by: John Johansen -Conflicts: - security/apparmor/Makefile - security/apparmor/policy.c ---- - security/apparmor/.gitignore | 1 + - security/apparmor/Makefile | 42 +++++++++- - security/apparmor/apparmorfs.c | 1 + - security/apparmor/include/audit.h | 4 + - security/apparmor/include/net.h | 44 ++++++++++ - security/apparmor/include/policy.h | 3 + - security/apparmor/lsm.c | 112 +++++++++++++++++++++++++ - security/apparmor/net.c | 162 +++++++++++++++++++++++++++++++++++++ - security/apparmor/policy.c | 1 + - security/apparmor/policy_unpack.c | 46 +++++++++++ - 10 files changed, 414 insertions(+), 2 deletions(-) - create mode 100644 security/apparmor/include/net.h - create mode 100644 security/apparmor/net.c - diff --git a/security/apparmor/.gitignore b/security/apparmor/.gitignore index 9cdec70..d5b291e 100644 --- a/security/apparmor/.gitignore @@ -110,7 +92,7 @@ index d693df8..5dbb72f 100644 + $(call cmd,make-af) + $(call cmd,make-sock) diff --git a/security/apparmor/apparmorfs.c b/security/apparmor/apparmorfs.c -index 7db9954..18fc02c 100644 +index ad4fa49..6362c5a 100644 --- a/security/apparmor/apparmorfs.c +++ b/security/apparmor/apparmorfs.c @@ -806,6 +806,7 @@ static struct aa_fs_entry aa_fs_entry_features[] = { @@ -122,10 +104,10 @@ index 7db9954..18fc02c 100644 AA_FS_DIR("rlimit", aa_fs_entry_rlimit), AA_FS_DIR("caps", aa_fs_entry_caps), diff --git a/security/apparmor/include/audit.h b/security/apparmor/include/audit.h -index 30e8d76..61abec5 100644 +index ba3dfd1..5d3c419 100644 --- a/security/apparmor/include/audit.h +++ b/security/apparmor/include/audit.h -@@ -126,6 +126,10 @@ struct apparmor_audit_data { +@@ -125,6 +125,10 @@ struct apparmor_audit_data { u32 denied; kuid_t ouid; } fs; @@ -215,7 +197,7 @@ index c28b0f2..b524d88 100644 unsigned char *hash; diff --git a/security/apparmor/lsm.c b/security/apparmor/lsm.c -index fb99e18..de55a7f 100644 +index dec607c..47fd244 100644 --- a/security/apparmor/lsm.c +++ b/security/apparmor/lsm.c @@ -32,6 +32,7 @@ @@ -226,7 +208,7 @@ index fb99e18..de55a7f 100644 #include "include/path.h" #include "include/policy.h" #include "include/procattr.h" -@@ -615,6 +616,104 @@ static int apparmor_task_setrlimit(struct task_struct *task, +@@ -605,6 +606,104 @@ static int apparmor_task_setrlimit(struct task_struct *task, return error; } @@ -328,29 +310,29 @@ index fb99e18..de55a7f 100644 + return aa_revalidate_sk(OP_SOCK_SHUTDOWN, sk); +} + - static struct security_operations apparmor_ops = { - .name = "apparmor", - -@@ -647,6 +746,19 @@ static struct security_operations apparmor_ops = { - .getprocattr = apparmor_getprocattr, - .setprocattr = apparmor_setprocattr, + static struct security_hook_list apparmor_hooks[] = { + LSM_HOOK_INIT(ptrace_access_check, apparmor_ptrace_access_check), + LSM_HOOK_INIT(ptrace_traceme, apparmor_ptrace_traceme), +@@ -634,6 +733,19 @@ static struct security_hook_list apparmor_hooks[] = { + LSM_HOOK_INIT(getprocattr, apparmor_getprocattr), + LSM_HOOK_INIT(setprocattr, apparmor_setprocattr), -+ .socket_create = apparmor_socket_create, -+ .socket_bind = apparmor_socket_bind, -+ .socket_connect = apparmor_socket_connect, -+ .socket_listen = apparmor_socket_listen, -+ .socket_accept = apparmor_socket_accept, -+ .socket_sendmsg = apparmor_socket_sendmsg, -+ .socket_recvmsg = apparmor_socket_recvmsg, -+ .socket_getsockname = apparmor_socket_getsockname, -+ .socket_getpeername = apparmor_socket_getpeername, -+ .socket_getsockopt = apparmor_socket_getsockopt, -+ .socket_setsockopt = apparmor_socket_setsockopt, -+ .socket_shutdown = apparmor_socket_shutdown, -+ - .cred_alloc_blank = apparmor_cred_alloc_blank, - .cred_free = apparmor_cred_free, - .cred_prepare = apparmor_cred_prepare, ++ LSM_HOOK_INIT(socket_create, apparmor_socket_create), ++ LSM_HOOK_INIT(socket_bind, apparmor_socket_bind), ++ LSM_HOOK_INIT(socket_connect, apparmor_socket_connect), ++ LSM_HOOK_INIT(socket_listen, apparmor_socket_listen), ++ LSM_HOOK_INIT(socket_accept, apparmor_socket_accept), ++ LSM_HOOK_INIT(socket_sendmsg, apparmor_socket_sendmsg), ++ LSM_HOOK_INIT(socket_recvmsg, apparmor_socket_recvmsg), ++ LSM_HOOK_INIT(socket_getsockname, apparmor_socket_getsockname), ++ LSM_HOOK_INIT(socket_getpeername, apparmor_socket_getpeername), ++ LSM_HOOK_INIT(socket_getsockopt, apparmor_socket_getsockopt), ++ LSM_HOOK_INIT(socket_setsockopt, apparmor_socket_setsockopt), ++ LSM_HOOK_INIT(socket_shutdown, apparmor_socket_shutdown), ++ + LSM_HOOK_INIT(cred_alloc_blank, apparmor_cred_alloc_blank), + LSM_HOOK_INIT(cred_free, apparmor_cred_free), + LSM_HOOK_INIT(cred_prepare, apparmor_cred_prepare), diff --git a/security/apparmor/net.c b/security/apparmor/net.c new file mode 100644 index 0000000..003dd18 @@ -603,13 +585,12 @@ index a689f10..1a35e6b 100644 /* generic policy dfa - optional and may be NULL */ profile->policy.dfa = unpack_dfa(e); -- -1.8.3.2 +cgit v0.10.2 -From b452a37e97af826ba6c7548230e07c95bd13d9c4 Mon Sep 17 00:00:00 2001 +From 6b77d90baf3807b70ca17309ad6c0bd39f3297e7 Mon Sep 17 00:00:00 2001 From: John Johansen Date: Fri, 29 Jun 2012 17:34:00 -0700 -Subject: [PATCH 2/3] apparmor: Fix quieting of audit messages for network - mediation +Subject: apparmor: Fix quieting of audit messages for network mediation If a profile specified a quieting of network denials for a given rule by either the quiet or deny rule qualifiers, the resultant quiet mask for @@ -623,9 +604,6 @@ denied requests was applied incorrectly, resulting in two potential bugs. they had been specifically marked as quieted. Signed-off-by: John Johansen ---- - security/apparmor/net.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/security/apparmor/net.c b/security/apparmor/net.c index 003dd18..6e6e5c9 100644 @@ -641,12 +619,12 @@ index 003dd18..6e6e5c9 100644 if (denied & kill_mask) audit_type = AUDIT_APPARMOR_KILL; -- -1.8.3.2 +cgit v0.10.2 -From 0f113c1f052be315f5097d8b7294a620b0adda87 Mon Sep 17 00:00:00 2001 +From a71049ba973b214e88eae89f9cb0c4965d184ead Mon Sep 17 00:00:00 2001 From: John Johansen Date: Wed, 16 May 2012 10:58:05 -0700 -Subject: [PATCH 3/3] UBUNTU: SAUCE: apparmor: Add the ability to mediate mount +Subject: UBUNTU: SAUCE: apparmor: Add the ability to mediate mount Add the ability for apparmor to do mediation of mount operations. Mount rules require an updated apparmor_parser (2.8 series) for policy compilation. @@ -686,24 +664,6 @@ See the apparmor userspace for full documentation Signed-off-by: John Johansen Acked-by: Kees Cook -Conflicts: - security/apparmor/Makefile - security/apparmor/apparmorfs.c ---- - security/apparmor/Makefile | 2 +- - security/apparmor/apparmorfs.c | 15 +- - security/apparmor/audit.c | 4 + - security/apparmor/domain.c | 2 +- - security/apparmor/include/apparmor.h | 3 +- - security/apparmor/include/audit.h | 11 + - security/apparmor/include/domain.h | 2 + - security/apparmor/include/mount.h | 54 +++ - security/apparmor/lsm.c | 59 ++++ - security/apparmor/mount.c | 620 +++++++++++++++++++++++++++++++++++ - 10 files changed, 768 insertions(+), 4 deletions(-) - create mode 100644 security/apparmor/include/mount.h - create mode 100644 security/apparmor/mount.c - diff --git a/security/apparmor/Makefile b/security/apparmor/Makefile index 5dbb72f..89b3445 100644 --- a/security/apparmor/Makefile @@ -718,7 +678,7 @@ index 5dbb72f..89b3445 100644 clean-files := capability_names.h rlim_names.h net_names.h diff --git a/security/apparmor/apparmorfs.c b/security/apparmor/apparmorfs.c -index 18fc02c..e709030 100644 +index 6362c5a..4917747 100644 --- a/security/apparmor/apparmorfs.c +++ b/security/apparmor/apparmorfs.c @@ -799,7 +799,18 @@ static struct aa_fs_entry aa_fs_entry_domain[] = { @@ -751,7 +711,7 @@ index 18fc02c..e709030 100644 AA_FS_DIR("rlimit", aa_fs_entry_rlimit), AA_FS_DIR("caps", aa_fs_entry_caps), diff --git a/security/apparmor/audit.c b/security/apparmor/audit.c -index 031d2d9..02d804c 100644 +index 89c7865..7fdb5d7 100644 --- a/security/apparmor/audit.c +++ b/security/apparmor/audit.c @@ -44,6 +44,10 @@ const char *const op_table[] = { @@ -766,10 +726,10 @@ index 031d2d9..02d804c 100644 "post_create", "bind", diff --git a/security/apparmor/domain.c b/security/apparmor/domain.c -index 26c607c..23936c5 100644 +index dc0027b..a2e3813 100644 --- a/security/apparmor/domain.c +++ b/security/apparmor/domain.c -@@ -238,7 +238,7 @@ static const char *next_name(int xtype, const char *name) +@@ -236,7 +236,7 @@ static const char *next_name(int xtype, const char *name) * * Returns: refcounted profile, or NULL on failure (MAYBE NULL) */ @@ -779,7 +739,7 @@ index 26c607c..23936c5 100644 struct aa_profile *new_profile = NULL; struct aa_namespace *ns = profile->ns; diff --git a/security/apparmor/include/apparmor.h b/security/apparmor/include/apparmor.h -index 8fb1488..22b172c 100644 +index e4ea626..ce6ff6a 100644 --- a/security/apparmor/include/apparmor.h +++ b/security/apparmor/include/apparmor.h @@ -30,8 +30,9 @@ @@ -794,7 +754,7 @@ index 8fb1488..22b172c 100644 /* Control parameters settable through module/boot flags */ extern enum audit_mode aa_g_audit; diff --git a/security/apparmor/include/audit.h b/security/apparmor/include/audit.h -index 61abec5..a9835c3 100644 +index 5d3c419..b9f1d57 100644 --- a/security/apparmor/include/audit.h +++ b/security/apparmor/include/audit.h @@ -72,6 +72,10 @@ enum aa_ops { @@ -808,7 +768,7 @@ index 61abec5..a9835c3 100644 OP_CREATE, OP_POST_CREATE, OP_BIND, -@@ -121,6 +125,13 @@ struct apparmor_audit_data { +@@ -120,6 +124,13 @@ struct apparmor_audit_data { unsigned long max; } rlim; struct { @@ -896,7 +856,7 @@ index 0000000..bc17a53 + +#endif /* __AA_MOUNT_H */ diff --git a/security/apparmor/lsm.c b/security/apparmor/lsm.c -index de55a7f..e0dd95f 100644 +index 47fd244..fb92441 100644 --- a/security/apparmor/lsm.c +++ b/security/apparmor/lsm.c @@ -36,6 +36,7 @@ @@ -907,7 +867,7 @@ index de55a7f..e0dd95f 100644 /* Flag indicating whether initialization completed */ int apparmor_initialized __initdata; -@@ -502,6 +503,60 @@ static int apparmor_file_mprotect(struct vm_area_struct *vma, +@@ -492,6 +493,60 @@ static int apparmor_file_mprotect(struct vm_area_struct *vma, !(vma->vm_flags & VM_SHARED) ? MAP_PRIVATE : 0); } @@ -968,17 +928,17 @@ index de55a7f..e0dd95f 100644 static int apparmor_getprocattr(struct task_struct *task, char *name, char **value) { -@@ -722,6 +777,10 @@ static struct security_operations apparmor_ops = { - .capget = apparmor_capget, - .capable = apparmor_capable, +@@ -710,6 +765,10 @@ static struct security_hook_list apparmor_hooks[] = { + LSM_HOOK_INIT(capget, apparmor_capget), + LSM_HOOK_INIT(capable, apparmor_capable), -+ .sb_mount = apparmor_sb_mount, -+ .sb_umount = apparmor_sb_umount, -+ .sb_pivotroot = apparmor_sb_pivotroot, -+ - .path_link = apparmor_path_link, - .path_unlink = apparmor_path_unlink, - .path_symlink = apparmor_path_symlink, ++ LSM_HOOK_INIT(sb_mount, apparmor_sb_mount), ++ LSM_HOOK_INIT(sb_umount, apparmor_sb_umount), ++ LSM_HOOK_INIT(sb_pivotroot, apparmor_sb_pivotroot), ++ + LSM_HOOK_INIT(path_link, apparmor_path_link), + LSM_HOOK_INIT(path_unlink, apparmor_path_unlink), + LSM_HOOK_INIT(path_symlink, apparmor_path_symlink), diff --git a/security/apparmor/mount.c b/security/apparmor/mount.c new file mode 100644 index 0000000..478aa4d @@ -1606,5 +1566,5 @@ index 0000000..478aa4d + return error; +} -- -1.8.3.2 +cgit v0.10.2 diff --git a/kernel-aufs4.patch b/kernel-aufs4.patch index 505b512a..8ab7d274 100644 --- a/kernel-aufs4.patch +++ b/kernel-aufs4.patch @@ -13,16 +13,16 @@ index 011f433..b1083f6 100644 endif # MISC_FILESYSTEMS diff --git a/fs/Makefile b/fs/Makefile -index cb92fd4..8c2df12 100644 +index cb20e4b..dd81418 100644 --- a/fs/Makefile +++ b/fs/Makefile -@@ -127,3 +127,4 @@ obj-y += exofs/ # Multiple modules +@@ -126,3 +126,4 @@ obj-y += exofs/ # Multiple modules obj-$(CONFIG_CEPH_FS) += ceph/ obj-$(CONFIG_PSTORE) += pstore/ obj-$(CONFIG_EFIVAR_FS) += efivarfs/ +obj-$(CONFIG_AUFS_FS) += aufs/ diff --git a/include/uapi/linux/Kbuild b/include/uapi/linux/Kbuild -index 1a0006a..ddad01a 100644 +index 1ff9942..31efc0a 100644 --- a/include/uapi/linux/Kbuild +++ b/include/uapi/linux/Kbuild @@ -59,6 +59,7 @@ header-y += atmsvc.h @@ -36,10 +36,10 @@ index 1a0006a..ddad01a 100644 aufs4.x-rcN base patch diff --git a/MAINTAINERS b/MAINTAINERS -index d8afd29..feac5ea 100644 +index 8133cef..04beb19 100644 --- a/MAINTAINERS +++ b/MAINTAINERS -@@ -1880,6 +1880,19 @@ F: include/linux/audit.h +@@ -1939,6 +1939,19 @@ F: include/linux/audit.h F: include/uapi/linux/audit.h F: kernel/audit* @@ -60,10 +60,10 @@ index d8afd29..feac5ea 100644 M: Miguel Ojeda Sandonis W: http://miguelojeda.es/auxdisplay.htm diff --git a/drivers/block/loop.c b/drivers/block/loop.c -index d7173cb..0160952 100644 +index f7a4c9d..23103ad 100644 --- a/drivers/block/loop.c +++ b/drivers/block/loop.c -@@ -540,6 +540,24 @@ static inline int is_loop_device(struct file *file) +@@ -560,6 +560,24 @@ static inline int is_loop_device(struct file *file) return i && S_ISBLK(i->i_mode) && MAJOR(i->i_rdev) == LOOP_MAJOR; } @@ -89,7 +89,7 @@ index d7173cb..0160952 100644 static ssize_t loop_attr_show(struct device *dev, char *page, diff --git a/fs/dcache.c b/fs/dcache.c -index 37b5afd..bc261e2 100644 +index 7a3f3e5..0b40298 100644 --- a/fs/dcache.c +++ b/fs/dcache.c @@ -1164,7 +1164,7 @@ enum d_walk_ret { @@ -135,10 +135,10 @@ index 819ef3f..fd0414e 100644 { mm_segment_t old_fs; diff --git a/fs/splice.c b/fs/splice.c -index bfe62ae..fa5eee5 100644 +index 5fc1e50..5f8385a 100644 --- a/fs/splice.c +++ b/fs/splice.c -@@ -1101,8 +1101,8 @@ EXPORT_SYMBOL(generic_splice_sendpage); +@@ -1102,8 +1102,8 @@ EXPORT_SYMBOL(generic_splice_sendpage); /* * Attempt to initiate a splice from pipe to file. */ @@ -149,7 +149,7 @@ index bfe62ae..fa5eee5 100644 { ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, loff_t *, size_t, unsigned int); -@@ -1118,9 +1118,9 @@ static long do_splice_from(struct pipe_inode_info *pipe, struct file *out, +@@ -1119,9 +1119,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. */ @@ -175,10 +175,10 @@ index f87d308..9a290b3 100644 static inline void fput_light(struct file *file, int fput_needed) { diff --git a/include/linux/fs.h b/include/linux/fs.h -index 35ec87e..3229f97 100644 +index a0653e5..86080ea 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h -@@ -1649,6 +1649,12 @@ ssize_t rw_copy_check_uvector(int type, const struct iovec __user * uvector, +@@ -1661,6 +1661,12 @@ ssize_t rw_copy_check_uvector(int type, const struct iovec __user * uvector, struct iovec *fast_pointer, struct iovec **ret_pointer); @@ -209,10 +209,10 @@ index da2751d..2e0fca6 100644 aufs4.x-rcN mmap patch diff --git a/fs/buffer.c b/fs/buffer.c -index c7a5602..8c50a22 100644 +index 1cf7a53..076aff86 100644 --- a/fs/buffer.c +++ b/fs/buffer.c -@@ -2450,7 +2450,7 @@ int block_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf, +@@ -2473,7 +2473,7 @@ int block_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf, * Update file times before taking page lock. We may end up failing the * fault so this update may be superfluous but who really cares... */ @@ -222,10 +222,10 @@ index c7a5602..8c50a22 100644 ret = __block_page_mkwrite(vma, vmf, get_block); sb_end_pagefault(sb); diff --git a/fs/proc/base.c b/fs/proc/base.c -index 093ca14..fc1ac03 100644 +index 87782e8..b287e64 100644 --- a/fs/proc/base.c +++ b/fs/proc/base.c -@@ -1744,7 +1744,7 @@ static int proc_map_files_get_link(struct dentry *dentry, struct path *path) +@@ -1934,7 +1934,7 @@ static int proc_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) { @@ -235,7 +235,7 @@ index 093ca14..fc1ac03 100644 rc = 0; } diff --git a/fs/proc/nommu.c b/fs/proc/nommu.c -index d4a3574..1397181 100644 +index f8595e8..cb8eda0 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) @@ -251,7 +251,7 @@ index d4a3574..1397181 100644 ino = inode->i_ino; } diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c -index 6dee68d..9afa35d 100644 +index ca1e091..8940e47 100644 --- a/fs/proc/task_mmu.c +++ b/fs/proc/task_mmu.c @@ -279,7 +279,10 @@ show_map_vma(struct seq_file *m, struct vm_area_struct *vma, int is_pid) @@ -276,7 +276,7 @@ index 6dee68d..9afa35d 100644 struct mm_walk walk = { .hugetlb_entry = gather_hugetlb_stats, diff --git a/fs/proc/task_nommu.c b/fs/proc/task_nommu.c -index 599ec2e..1740207 100644 +index e0d64c9..7aa92db 100644 --- a/fs/proc/task_nommu.c +++ b/fs/proc/task_nommu.c @@ -160,7 +160,10 @@ static int nommu_vma_show(struct seq_file *m, struct vm_area_struct *vma, @@ -292,10 +292,10 @@ index 599ec2e..1740207 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 0755b9f..2ee5500 100644 +index 2e872f9..2494ed2 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h -@@ -1172,6 +1172,28 @@ static inline int fixup_user_fault(struct task_struct *tsk, +@@ -1173,6 +1173,28 @@ static inline int fixup_user_fault(struct task_struct *tsk, } #endif @@ -325,10 +325,10 @@ index 0755b9f..2ee5500 100644 extern int access_remote_vm(struct mm_struct *mm, unsigned long addr, void *buf, int len, int write); diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h -index 8d37e26..ce89d4c 100644 +index 0038ac7..409940d 100644 --- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h -@@ -241,6 +241,7 @@ struct vm_region { +@@ -259,6 +259,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 */ @@ -336,7 +336,7 @@ index 8d37e26..ce89d4c 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 -@@ -305,6 +306,7 @@ struct vm_area_struct { +@@ -323,6 +324,7 @@ struct vm_area_struct { unsigned long vm_pgoff; /* Offset (within vm_file) in PAGE_SIZE units, *not* PAGE_CACHE_SIZE */ struct file * vm_file; /* File we map to (can be NULL). */ @@ -345,7 +345,7 @@ index 8d37e26..ce89d4c 100644 #ifndef CONFIG_MMU diff --git a/kernel/fork.c b/kernel/fork.c -index 03c1eaa..7e215ba 100644 +index 1bfefc6..a86bd7f 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -456,7 +456,7 @@ static int dup_mmap(struct mm_struct *mm, struct mm_struct *oldmm) @@ -371,10 +371,10 @@ index 98c4eae..3f0c9b9 100644 obj-y += init-mm.o diff --git a/mm/filemap.c b/mm/filemap.c -index 6bf5e42..a863d0f 100644 +index 1283fc8..128f18f 100644 --- a/mm/filemap.c +++ b/mm/filemap.c -@@ -2062,7 +2062,7 @@ int filemap_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf) +@@ -2089,7 +2089,7 @@ int filemap_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf) int ret = VM_FAULT_LOCKED; sb_start_pagefault(inode->i_sb); @@ -383,27 +383,8 @@ index 6bf5e42..a863d0f 100644 lock_page(page); if (page->mapping != inode->i_mapping) { unlock_page(page); -diff --git a/mm/madvise.c b/mm/madvise.c -index d551475..1ebf71b 100644 ---- a/mm/madvise.c -+++ b/mm/madvise.c -@@ -320,12 +320,12 @@ static long madvise_remove(struct vm_area_struct *vma, - * vma's reference to the file) can go away as soon as we drop - * mmap_sem. - */ -- get_file(f); -+ vma_get_file(vma); - up_read(¤t->mm->mmap_sem); - error = vfs_fallocate(f, - FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, - offset, end - start); -- fput(f); -+ vma_fput(vma); - down_read(¤t->mm->mmap_sem); - return error; - } diff --git a/mm/memory.c b/mm/memory.c -index 22e037e..62096a2 100644 +index a84fbb7..13973d2 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -2034,7 +2034,7 @@ static inline int wp_page_reuse(struct mm_struct *mm, @@ -416,7 +397,7 @@ index 22e037e..62096a2 100644 return VM_FAULT_WRITE; diff --git a/mm/mmap.c b/mm/mmap.c -index bb50cac..1ab5e596 100644 +index aa632ad..3ff75d3 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -274,7 +274,7 @@ static struct vm_area_struct *remove_vma(struct vm_area_struct *vma) @@ -495,28 +476,11 @@ index bb50cac..1ab5e596 100644 if (new_vma->vm_ops && new_vma->vm_ops->open) new_vma->vm_ops->open(new_vma); vma_link(mm, new_vma, prev, rb_link, rb_parent); -diff --git a/mm/msync.c b/mm/msync.c -index bb04d53..5c24c54 100644 ---- a/mm/msync.c -+++ b/mm/msync.c -@@ -84,10 +84,10 @@ SYSCALL_DEFINE3(msync, unsigned long, start, size_t, len, int, flags) - start = vma->vm_end; - if ((flags & MS_SYNC) && file && - (vma->vm_flags & VM_SHARED)) { -- get_file(file); -+ vma_get_file(vma); - up_read(&mm->mmap_sem); - error = vfs_fsync_range(file, fstart, fend, 1); -- fput(file); -+ vma_fput(vma); - if (error || start >= end) - goto out; - down_read(&mm->mmap_sem); diff --git a/mm/nommu.c b/mm/nommu.c -index e544508..dd6f74a 100644 +index 58ea364..f937b7e 100644 --- a/mm/nommu.c +++ b/mm/nommu.c -@@ -693,7 +693,7 @@ static void __put_nommu_region(struct vm_region *region) +@@ -671,7 +671,7 @@ static void __put_nommu_region(struct vm_region *region) up_write(&nommu_region_sem); if (region->vm_file) @@ -525,7 +489,7 @@ index e544508..dd6f74a 100644 /* IO memory and memory shared directly out of the pagecache * from ramfs/tmpfs mustn't be released here */ -@@ -858,7 +858,7 @@ static void delete_vma(struct mm_struct *mm, struct vm_area_struct *vma) +@@ -829,7 +829,7 @@ static void delete_vma(struct mm_struct *mm, struct vm_area_struct *vma) if (vma->vm_ops && vma->vm_ops->close) vma->vm_ops->close(vma); if (vma->vm_file) @@ -534,7 +498,7 @@ index e544508..dd6f74a 100644 put_nommu_region(vma->vm_region); kmem_cache_free(vm_area_cachep, vma); } -@@ -1398,7 +1398,7 @@ unsigned long do_mmap_pgoff(struct file *file, +@@ -1354,7 +1354,7 @@ unsigned long do_mmap_pgoff(struct file *file, goto error_just_free; } } @@ -543,7 +507,7 @@ index e544508..dd6f74a 100644 kmem_cache_free(vm_region_jar, region); region = pregion; result = start; -@@ -1474,10 +1474,10 @@ error_just_free: +@@ -1429,10 +1429,10 @@ error_just_free: up_write(&nommu_region_sem); error: if (region->vm_file) @@ -554,11 +518,11 @@ index e544508..dd6f74a 100644 - fput(vma->vm_file); + vma_fput(vma); kmem_cache_free(vm_area_cachep, vma); - kleave(" = %d", ret); return ret; + diff --git a/mm/prfile.c b/mm/prfile.c new file mode 100644 -index 0000000..6aa5ab5 +index 0000000..b323b8a --- /dev/null +++ b/mm/prfile.c @@ -0,0 +1,86 @@ @@ -583,7 +547,7 @@ index 0000000..6aa5ab5 +{ +#ifdef PRFILE_TRACE + if (pr) -+ pr_info("%s:%d: %s, %p\n", func, line, func2, ++ pr_info("%s:%d: %s, %s\n", func, line, func2, + f ? (char *)f->f_path.dentry->d_name.name : "(null)"); +#endif +} @@ -651,7 +615,7 @@ index 0000000..6aa5ab5 aufs4.x-rcN standalone patch diff --git a/fs/dcache.c b/fs/dcache.c -index bc261e2..8d7951d 100644 +index 0b40298..4844e61 100644 --- a/fs/dcache.c +++ b/fs/dcache.c @@ -1269,6 +1269,7 @@ rename_retry: @@ -663,10 +627,10 @@ index bc261e2..8d7951d 100644 /* * Search for at least 1 mount point in the dentry's subdirs. diff --git a/fs/file_table.c b/fs/file_table.c -index 294174d..3cea027 100644 +index 7f9d407..8c9ec1d 100644 --- a/fs/file_table.c +++ b/fs/file_table.c -@@ -147,6 +147,7 @@ over: +@@ -146,6 +146,7 @@ over: } return ERR_PTR(-ENFILE); } @@ -674,7 +638,7 @@ index 294174d..3cea027 100644 /** * alloc_file - allocate and initialize a 'struct file' -@@ -308,6 +309,7 @@ void put_filp(struct file *file) +@@ -307,6 +308,7 @@ void put_filp(struct file *file) file_free(file); } } @@ -683,7 +647,7 @@ index 294174d..3cea027 100644 void __init files_init(unsigned long mempages) { diff --git a/fs/inode.c b/fs/inode.c -index ea37cd1..58f5f58 100644 +index d30640f..1ecc715 100644 --- a/fs/inode.c +++ b/fs/inode.c @@ -58,6 +58,7 @@ static struct hlist_head *inode_hashtable __read_mostly; @@ -695,7 +659,7 @@ index ea37cd1..58f5f58 100644 /* * Empty aops. Can be used for the cases where the user does not diff --git a/fs/namespace.c b/fs/namespace.c -index 1b9e111..d45b81b 100644 +index c7cb8a5..08723de 100644 --- a/fs/namespace.c +++ b/fs/namespace.c @@ -463,6 +463,7 @@ void __mnt_drop_write(struct vfsmount *mnt) @@ -706,7 +670,7 @@ index 1b9e111..d45b81b 100644 /** * mnt_drop_write - give up write access to a mount -@@ -1768,6 +1769,7 @@ int iterate_mounts(int (*f)(struct vfsmount *, void *), void *arg, +@@ -1779,6 +1780,7 @@ int iterate_mounts(int (*f)(struct vfsmount *, void *), void *arg, } return 0; } @@ -787,10 +751,10 @@ index 92e48c7..d2c4b68 100644 static int fsnotify_mark_destroy(void *ignored) { diff --git a/fs/open.c b/fs/open.c -index 98e5a52..a94e2e7 100644 +index e33dab2..b84b828 100644 --- a/fs/open.c +++ b/fs/open.c -@@ -62,6 +62,7 @@ int do_truncate(struct dentry *dentry, loff_t length, unsigned int time_attrs, +@@ -64,6 +64,7 @@ int do_truncate(struct dentry *dentry, loff_t length, unsigned int time_attrs, mutex_unlock(&dentry->d_inode->i_mutex); return ret; } @@ -798,14 +762,14 @@ index 98e5a52..a94e2e7 100644 long vfs_truncate(struct path *path, loff_t length) { -@@ -676,6 +677,7 @@ int open_check_o_direct(struct file *f) +@@ -678,6 +679,7 @@ int open_check_o_direct(struct file *f) } return 0; } +EXPORT_SYMBOL(open_check_o_direct); static int do_dentry_open(struct file *f, - int (*open)(struct inode *, struct file *), + struct inode *inode, diff --git a/fs/read_write.c b/fs/read_write.c index fd0414e..8ace6ec 100644 --- a/fs/read_write.c @@ -827,10 +791,10 @@ index fd0414e..8ace6ec 100644 ssize_t __kernel_write(struct file *file, const char *buf, size_t count, loff_t *pos) { diff --git a/fs/splice.c b/fs/splice.c -index fa5eee5..bfb3324 100644 +index 5f8385a..f76067e 100644 --- a/fs/splice.c +++ b/fs/splice.c -@@ -1114,6 +1114,7 @@ long do_splice_from(struct pipe_inode_info *pipe, struct file *out, +@@ -1115,6 +1115,7 @@ long do_splice_from(struct pipe_inode_info *pipe, struct file *out, return splice_write(pipe, out, ppos, len, flags); } @@ -838,7 +802,7 @@ index fa5eee5..bfb3324 100644 /* * Attempt to initiate a splice from a file to a pipe. -@@ -1140,6 +1141,7 @@ long do_splice_to(struct file *in, loff_t *ppos, +@@ -1141,6 +1142,7 @@ long do_splice_to(struct file *in, loff_t *ppos, return splice_read(in, ppos, pipe, len, flags); } @@ -847,7 +811,7 @@ index fa5eee5..bfb3324 100644 /** * splice_direct_to_actor - splices data directly between two non-pipes diff --git a/fs/xattr.c b/fs/xattr.c -index 4ef6985..6bb6303 100644 +index 072fee1..a7677af 100644 --- a/fs/xattr.c +++ b/fs/xattr.c @@ -207,6 +207,7 @@ vfs_getxattr_alloc(struct dentry *dentry, const char *name, char **xattr_value, @@ -859,10 +823,10 @@ index 4ef6985..6bb6303 100644 /* Compare an extended attribute value with the given value */ int vfs_xattr_cmp(struct dentry *dentry, const char *xattr_name, diff --git a/security/commoncap.c b/security/commoncap.c -index f2875cd..ebf06ec 100644 +index d103f5a4..393654e 100644 --- a/security/commoncap.c +++ b/security/commoncap.c -@@ -975,9 +975,11 @@ int cap_mmap_addr(unsigned long addr) +@@ -970,12 +970,14 @@ int cap_mmap_addr(unsigned long addr) } return ret; } @@ -874,6 +838,9 @@ index f2875cd..ebf06ec 100644 return 0; } +EXPORT_SYMBOL(cap_mmap_file); + + #ifdef CONFIG_SECURITY + diff --git a/security/device_cgroup.c b/security/device_cgroup.c index 188c1d2..426d9af 100644 --- a/security/device_cgroup.c @@ -895,74 +862,74 @@ index 188c1d2..426d9af 100644 int devcgroup_inode_mknod(int mode, dev_t dev) { diff --git a/security/security.c b/security/security.c -index 8e9b1f4..c1c7cd1 100644 +index 595fffa..346bad6 100644 --- a/security/security.c +++ b/security/security.c -@@ -430,6 +430,7 @@ int security_path_rmdir(struct path *dir, struct dentry *dentry) +@@ -438,6 +438,7 @@ int security_path_rmdir(struct path *dir, struct dentry *dentry) return 0; - return security_ops->path_rmdir(dir, dentry); + return call_int_hook(path_rmdir, 0, dir, dentry); } +EXPORT_SYMBOL(security_path_rmdir); int security_path_unlink(struct path *dir, struct dentry *dentry) { -@@ -446,6 +447,7 @@ int security_path_symlink(struct path *dir, struct dentry *dentry, +@@ -454,6 +455,7 @@ int security_path_symlink(struct path *dir, struct dentry *dentry, return 0; - return security_ops->path_symlink(dir, dentry, old_name); + return call_int_hook(path_symlink, 0, dir, dentry, old_name); } +EXPORT_SYMBOL(security_path_symlink); int security_path_link(struct dentry *old_dentry, struct path *new_dir, struct dentry *new_dentry) -@@ -454,6 +456,7 @@ int security_path_link(struct dentry *old_dentry, struct path *new_dir, +@@ -462,6 +464,7 @@ int security_path_link(struct dentry *old_dentry, struct path *new_dir, return 0; - return security_ops->path_link(old_dentry, new_dir, new_dentry); + return call_int_hook(path_link, 0, old_dentry, new_dir, new_dentry); } +EXPORT_SYMBOL(security_path_link); int security_path_rename(struct path *old_dir, struct dentry *old_dentry, struct path *new_dir, struct dentry *new_dentry, -@@ -481,6 +484,7 @@ int security_path_truncate(struct path *path) +@@ -489,6 +492,7 @@ int security_path_truncate(struct path *path) return 0; - return security_ops->path_truncate(path); + return call_int_hook(path_truncate, 0, path); } +EXPORT_SYMBOL(security_path_truncate); int security_path_chmod(struct path *path, umode_t mode) { -@@ -488,6 +492,7 @@ int security_path_chmod(struct path *path, umode_t mode) +@@ -496,6 +500,7 @@ int security_path_chmod(struct path *path, umode_t mode) return 0; - return security_ops->path_chmod(path, mode); + return call_int_hook(path_chmod, 0, path, mode); } +EXPORT_SYMBOL(security_path_chmod); int security_path_chown(struct path *path, kuid_t uid, kgid_t gid) { -@@ -495,6 +500,7 @@ int security_path_chown(struct path *path, kuid_t uid, kgid_t gid) +@@ -503,6 +508,7 @@ int security_path_chown(struct path *path, kuid_t uid, kgid_t gid) return 0; - return security_ops->path_chown(path, uid, gid); + return call_int_hook(path_chown, 0, path, uid, gid); } +EXPORT_SYMBOL(security_path_chown); int security_path_chroot(struct path *path) { -@@ -580,6 +586,7 @@ int security_inode_readlink(struct dentry *dentry) +@@ -588,6 +594,7 @@ int security_inode_readlink(struct dentry *dentry) return 0; - return security_ops->inode_readlink(dentry); + return call_int_hook(inode_readlink, 0, dentry); } +EXPORT_SYMBOL(security_inode_readlink); - int security_inode_follow_link(struct dentry *dentry, struct nameidata *nd) - { -@@ -594,6 +601,7 @@ int security_inode_permission(struct inode *inode, int mask) + int security_inode_follow_link(struct dentry *dentry, struct inode *inode, + bool rcu) +@@ -603,6 +610,7 @@ int security_inode_permission(struct inode *inode, int mask) return 0; - return security_ops->inode_permission(inode, mask); + return call_int_hook(inode_permission, 0, inode, mask); } +EXPORT_SYMBOL(security_inode_permission); int security_inode_setattr(struct dentry *dentry, struct iattr *attr) { -@@ -716,6 +724,7 @@ int security_file_permission(struct file *file, int mask) +@@ -741,6 +749,7 @@ int security_file_permission(struct file *file, int mask) return fsnotify_perm(file, mask); } @@ -970,7 +937,7 @@ index 8e9b1f4..c1c7cd1 100644 int security_file_alloc(struct file *file) { -@@ -775,6 +784,7 @@ int security_mmap_file(struct file *file, unsigned long prot, +@@ -800,6 +809,7 @@ int security_mmap_file(struct file *file, unsigned long prot, return ret; return ima_file_mmap(file, prot); } @@ -980,7 +947,7 @@ index 8e9b1f4..c1c7cd1 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 2015-06-28 17:35:44.344717109 +0200 ++++ linux/Documentation/ABI/testing/debugfs-aufs 2015-09-24 10:47:58.244719488 +0200 @@ -0,0 +1,50 @@ +What: /debug/aufs/si_/ +Date: March 2009 @@ -1034,7 +1001,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 2015-06-28 17:35:44.344717109 +0200 ++++ linux/Documentation/ABI/testing/sysfs-aufs 2015-09-24 10:47:58.244719488 +0200 @@ -0,0 +1,31 @@ +What: /sys/fs/aufs/si_/ +Date: March 2009 @@ -1069,7 +1036,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 2015-06-28 17:35:44.344717109 +0200 ++++ linux/Documentation/filesystems/aufs/design/01intro.txt 2015-09-24 10:47:58.244719488 +0200 @@ -0,0 +1,170 @@ + +# Copyright (C) 2005-2015 Junjiro R. Okajima @@ -1243,7 +1210,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 2015-06-28 17:35:44.344717109 +0200 ++++ linux/Documentation/filesystems/aufs/design/02struct.txt 2015-09-24 10:47:58.244719488 +0200 @@ -0,0 +1,258 @@ + +# Copyright (C) 2005-2015 Junjiro R. Okajima @@ -1505,7 +1472,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 2015-06-28 17:35:44.344717109 +0200 ++++ linux/Documentation/filesystems/aufs/design/03atomic_open.txt 2015-09-24 10:47:58.244719488 +0200 @@ -0,0 +1,85 @@ + +# Copyright (C) 2015 Junjiro R. Okajima @@ -1594,7 +1561,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 2015-06-28 17:35:44.344717109 +0200 ++++ linux/Documentation/filesystems/aufs/design/03lookup.txt 2015-09-24 10:47:58.244719488 +0200 @@ -0,0 +1,113 @@ + +# Copyright (C) 2005-2015 Junjiro R. Okajima @@ -1711,7 +1678,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 2015-06-28 17:35:44.344717109 +0200 ++++ linux/Documentation/filesystems/aufs/design/04branch.txt 2015-09-24 10:47:58.244719488 +0200 @@ -0,0 +1,74 @@ + +# Copyright (C) 2005-2015 Junjiro R. Okajima @@ -1789,7 +1756,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 2015-06-28 17:35:44.344717109 +0200 ++++ linux/Documentation/filesystems/aufs/design/05wbr_policy.txt 2015-09-24 10:47:58.244719488 +0200 @@ -0,0 +1,64 @@ + +# Copyright (C) 2005-2015 Junjiro R. Okajima @@ -1857,7 +1824,7 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/design/05wbr_policy.tx + copyup policy. 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 2015-06-28 17:35:44.344717109 +0200 ++++ linux/Documentation/filesystems/aufs/design/06fhsm.txt 2015-09-24 10:47:58.244719488 +0200 @@ -0,0 +1,120 @@ + +# Copyright (C) 2011-2015 Junjiro R. Okajima @@ -1981,7 +1948,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 2015-06-28 17:35:44.344717109 +0200 ++++ linux/Documentation/filesystems/aufs/design/06mmap.txt 2015-09-24 10:47:58.244719488 +0200 @@ -0,0 +1,72 @@ + +# Copyright (C) 2005-2015 Junjiro R. Okajima @@ -2057,7 +2024,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 2015-06-28 17:35:44.344717109 +0200 ++++ linux/Documentation/filesystems/aufs/design/06xattr.txt 2015-09-24 10:47:58.244719488 +0200 @@ -0,0 +1,96 @@ + +# Copyright (C) 2014-2015 Junjiro R. Okajima @@ -2157,7 +2124,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 2015-06-28 17:35:44.344717109 +0200 ++++ linux/Documentation/filesystems/aufs/design/07export.txt 2015-09-24 10:47:58.248052907 +0200 @@ -0,0 +1,58 @@ + +# Copyright (C) 2005-2015 Junjiro R. Okajima @@ -2219,7 +2186,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 2015-06-28 17:35:44.344717109 +0200 ++++ linux/Documentation/filesystems/aufs/design/08shwh.txt 2015-09-24 10:47:58.248052907 +0200 @@ -0,0 +1,52 @@ + +# Copyright (C) 2005-2015 Junjiro R. Okajima @@ -2275,7 +2242,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 2015-06-28 17:35:44.344717109 +0200 ++++ linux/Documentation/filesystems/aufs/design/10dynop.txt 2015-09-24 10:47:58.248052907 +0200 @@ -0,0 +1,47 @@ + +# Copyright (C) 2010-2015 Junjiro R. Okajima @@ -2326,7 +2293,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 2015-06-28 17:35:44.344717109 +0200 ++++ linux/Documentation/filesystems/aufs/README 2015-09-24 10:47:58.244719488 +0200 @@ -0,0 +1,383 @@ + +Aufs4 -- advanced multi layered unification filesystem version 4.x @@ -2691,7 +2658,7 @@ diff -urN /usr/share/empty/Documentation/filesystems/aufs/README linux/Documenta +The Parted Magic Project made a donation (2013/9 and 11). +Pavel Barta made a donation (2013/10). +Nikolay Pertsev made a donation (2014/5). -+James B made a donation (2014/7). ++James B made a donation (2014/7 and 2015/7). +Stefano Di Biase made a donation (2014/8). +Daniel Epellei made a donation (2015/1). + @@ -2713,7 +2680,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 2015-06-28 17:35:44.344717109 +0200 ++++ linux/fs/aufs/aufs.h 2015-09-24 10:47:58.248052907 +0200 @@ -0,0 +1,59 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -2776,7 +2743,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 2015-06-28 17:36:09.025073697 +0200 ++++ linux/fs/aufs/branch.c 2015-09-24 10:47:58.248052907 +0200 @@ -0,0 +1,1414 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -4194,7 +4161,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 2015-06-28 17:36:09.025073697 +0200 ++++ linux/fs/aufs/branch.h 2015-09-24 10:47:58.248052907 +0200 @@ -0,0 +1,279 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -4477,7 +4444,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 2015-06-28 17:35:44.348050491 +0200 ++++ linux/fs/aufs/conf.mk 2015-09-24 10:47:58.248052907 +0200 @@ -0,0 +1,38 @@ + +AuConfStr = CONFIG_AUFS_FS=${CONFIG_AUFS_FS} @@ -4519,7 +4486,7 @@ diff -urN /usr/share/empty/fs/aufs/conf.mk linux/fs/aufs/conf.mk +-include ${srctree}/${src}/conf_priv.mk diff -urN /usr/share/empty/fs/aufs/cpup.c linux/fs/aufs/cpup.c --- /usr/share/empty/fs/aufs/cpup.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/cpup.c 2015-06-28 17:36:09.025073697 +0200 ++++ linux/fs/aufs/cpup.c 2015-09-24 10:47:58.248052907 +0200 @@ -0,0 +1,1319 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -5842,7 +5809,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 2015-06-28 17:35:44.348050491 +0200 ++++ linux/fs/aufs/cpup.h 2015-09-24 10:47:58.248052907 +0200 @@ -0,0 +1,94 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -5940,7 +5907,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 2015-06-28 17:35:44.348050491 +0200 ++++ linux/fs/aufs/dbgaufs.c 2015-09-24 10:47:58.248052907 +0200 @@ -0,0 +1,432 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -6376,7 +6343,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 2015-06-28 17:35:44.348050491 +0200 ++++ linux/fs/aufs/dbgaufs.h 2015-09-24 10:47:58.248052907 +0200 @@ -0,0 +1,48 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -6428,7 +6395,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 2015-06-28 17:35:44.348050491 +0200 ++++ linux/fs/aufs/dcsub.c 2015-09-24 10:47:58.248052907 +0200 @@ -0,0 +1,224 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -6656,7 +6623,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 2015-06-28 17:36:09.025073697 +0200 ++++ linux/fs/aufs/dcsub.h 2015-09-24 10:47:58.251386326 +0200 @@ -0,0 +1,136 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -6796,7 +6763,7 @@ diff -urN /usr/share/empty/fs/aufs/dcsub.h linux/fs/aufs/dcsub.h +#endif /* __AUFS_DCSUB_H__ */ diff -urN /usr/share/empty/fs/aufs/debug.c linux/fs/aufs/debug.c --- /usr/share/empty/fs/aufs/debug.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/debug.c 2015-06-28 17:36:09.025073697 +0200 ++++ linux/fs/aufs/debug.c 2015-09-24 10:47:58.251386326 +0200 @@ -0,0 +1,440 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -7240,7 +7207,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 2015-06-28 17:35:44.348050491 +0200 ++++ linux/fs/aufs/debug.h 2015-09-24 10:47:58.251386326 +0200 @@ -0,0 +1,225 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -7469,7 +7436,7 @@ diff -urN /usr/share/empty/fs/aufs/debug.h linux/fs/aufs/debug.h +#endif /* __AUFS_DEBUG_H__ */ diff -urN /usr/share/empty/fs/aufs/dentry.c linux/fs/aufs/dentry.c --- /usr/share/empty/fs/aufs/dentry.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/dentry.c 2015-06-28 17:36:09.025073697 +0200 ++++ linux/fs/aufs/dentry.c 2015-09-24 10:47:58.251386326 +0200 @@ -0,0 +1,1105 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -8578,7 +8545,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 2015-06-28 17:35:44.348050491 +0200 ++++ linux/fs/aufs/dentry.h 2015-09-24 10:47:58.251386326 +0200 @@ -0,0 +1,233 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -8815,7 +8782,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 2015-06-28 17:36:09.025073697 +0200 ++++ linux/fs/aufs/dinfo.c 2015-09-24 10:47:58.251386326 +0200 @@ -0,0 +1,550 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -9369,7 +9336,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 2015-06-28 17:36:09.025073697 +0200 ++++ linux/fs/aufs/dir.c 2015-09-24 10:47:58.251386326 +0200 @@ -0,0 +1,753 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -10126,7 +10093,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 2015-06-28 17:35:44.348050491 +0200 ++++ linux/fs/aufs/dir.h 2015-09-24 10:47:58.251386326 +0200 @@ -0,0 +1,131 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -10261,7 +10228,7 @@ diff -urN /usr/share/empty/fs/aufs/dir.h linux/fs/aufs/dir.h +#endif /* __AUFS_DIR_H__ */ diff -urN /usr/share/empty/fs/aufs/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 2015-06-28 17:35:44.348050491 +0200 ++++ linux/fs/aufs/dynop.c 2015-09-24 10:47:58.251386326 +0200 @@ -0,0 +1,369 @@ +/* + * Copyright (C) 2010-2015 Junjiro R. Okajima @@ -10634,7 +10601,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 2015-06-28 17:35:44.348050491 +0200 ++++ linux/fs/aufs/dynop.h 2015-09-24 10:47:58.251386326 +0200 @@ -0,0 +1,74 @@ +/* + * Copyright (C) 2010-2015 Junjiro R. Okajima @@ -10712,7 +10679,7 @@ diff -urN /usr/share/empty/fs/aufs/dynop.h linux/fs/aufs/dynop.h +#endif /* __AUFS_DYNOP_H__ */ diff -urN /usr/share/empty/fs/aufs/export.c linux/fs/aufs/export.c --- /usr/share/empty/fs/aufs/export.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/export.c 2015-06-28 17:36:09.025073697 +0200 ++++ linux/fs/aufs/export.c 2015-09-24 10:47:58.251386326 +0200 @@ -0,0 +1,832 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -11548,7 +11515,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 2015-06-28 17:35:44.348050491 +0200 ++++ linux/fs/aufs/fhsm.c 2015-09-24 10:47:58.251386326 +0200 @@ -0,0 +1,426 @@ +/* + * Copyright (C) 2011-2015 Junjiro R. Okajima @@ -11978,7 +11945,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 2015-06-28 17:36:09.025073697 +0200 ++++ linux/fs/aufs/file.c 2015-09-24 10:47:58.251386326 +0200 @@ -0,0 +1,841 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -12823,7 +12790,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 2015-06-28 17:35:44.348050491 +0200 ++++ linux/fs/aufs/file.h 2015-09-24 10:47:58.251386326 +0200 @@ -0,0 +1,291 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -13118,7 +13085,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 2015-06-28 17:35:44.348050491 +0200 ++++ linux/fs/aufs/finfo.c 2015-09-24 10:47:58.251386326 +0200 @@ -0,0 +1,157 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -13279,7 +13246,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 2015-06-28 17:36:09.025073697 +0200 ++++ linux/fs/aufs/f_op.c 2015-09-24 10:47:58.251386326 +0200 @@ -0,0 +1,738 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -14021,7 +13988,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 2015-06-28 17:35:44.348050491 +0200 ++++ linux/fs/aufs/fstype.h 2015-09-24 10:47:58.254719746 +0200 @@ -0,0 +1,400 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -14425,7 +14392,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/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 2015-06-28 17:35:44.348050491 +0200 ++++ linux/fs/aufs/hfsnotify.c 2015-09-24 10:47:58.254719746 +0200 @@ -0,0 +1,288 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -14717,7 +14684,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 2015-06-28 17:36:09.025073697 +0200 ++++ linux/fs/aufs/hfsplus.c 2015-09-24 10:47:58.254719746 +0200 @@ -0,0 +1,56 @@ +/* + * Copyright (C) 2010-2015 Junjiro R. Okajima @@ -14777,7 +14744,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 2015-06-28 17:36:09.025073697 +0200 ++++ linux/fs/aufs/hnotify.c 2015-09-24 10:47:58.254719746 +0200 @@ -0,0 +1,710 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -15491,7 +15458,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 2015-06-28 17:35:44.348050491 +0200 ++++ linux/fs/aufs/iinfo.c 2015-09-24 10:47:58.254719746 +0200 @@ -0,0 +1,277 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -15772,7 +15739,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 2015-06-28 17:36:09.025073697 +0200 ++++ linux/fs/aufs/inode.c 2015-09-24 10:47:58.254719746 +0200 @@ -0,0 +1,500 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -16276,7 +16243,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 2015-06-28 17:35:44.348050491 +0200 ++++ linux/fs/aufs/inode.h 2015-09-24 10:47:58.254719746 +0200 @@ -0,0 +1,673 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -16953,7 +16920,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 2015-06-28 17:35:44.348050491 +0200 ++++ linux/fs/aufs/ioctl.c 2015-09-24 10:47:58.254719746 +0200 @@ -0,0 +1,219 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -17176,7 +17143,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 2015-06-28 17:36:09.025073697 +0200 ++++ linux/fs/aufs/i_op_add.c 2015-09-24 10:47:58.254719746 +0200 @@ -0,0 +1,932 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -18112,8 +18079,8 @@ diff -urN /usr/share/empty/fs/aufs/i_op_add.c linux/fs/aufs/i_op_add.c +} diff -urN /usr/share/empty/fs/aufs/i_op.c linux/fs/aufs/i_op.c --- /usr/share/empty/fs/aufs/i_op.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/i_op.c 2015-06-28 17:36:09.025073697 +0200 -@@ -0,0 +1,1447 @@ ++++ linux/fs/aufs/i_op.c 2015-09-24 10:47:58.254719746 +0200 +@@ -0,0 +1,1483 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * @@ -19358,101 +19325,137 @@ diff -urN /usr/share/empty/fs/aufs/i_op.c linux/fs/aufs/i_op.c + +/* ---------------------------------------------------------------------- */ + -+static int h_readlink(struct dentry *dentry, int bindex, char __user *buf, -+ int bufsiz) -+{ -+ int err; -+ struct super_block *sb; -+ struct dentry *h_dentry; -+ struct inode *inode, *h_inode; ++/* ++ * Assumption: ++ * - the number of symlinks is not so many. ++ * ++ * Structure: ++ * - sbinfo (instead of iinfo) contains an hlist of struct au_symlink. ++ * If iinfo contained the hlist, then it would be rather large waste of memory ++ * I am afraid. ++ * - struct au_symlink contains the necessary info for h_inode follow_link() and ++ * put_link(). ++ */ + -+ err = -EINVAL; -+ h_dentry = au_h_dptr(dentry, bindex); -+ h_inode = d_inode(h_dentry); -+ if (unlikely(!h_inode->i_op->readlink)) -+ goto out; ++struct au_symlink { ++ union { ++ struct hlist_node hlist; ++ struct rcu_head rcu; ++ }; + -+ err = security_inode_readlink(h_dentry); -+ if (unlikely(err)) -+ goto out; ++ struct inode *h_inode; ++ void *h_cookie; ++}; + -+ sb = dentry->d_sb; -+ inode = d_inode(dentry); -+ if (!au_test_ro(sb, bindex, inode)) { -+ vfsub_touch_atime(au_sbr_mnt(sb, bindex), h_dentry); -+ fsstack_copy_attr_atime(inode, h_inode); -+ } -+ err = h_inode->i_op->readlink(h_dentry, buf, bufsiz); ++static void au_symlink_add(struct super_block *sb, struct au_symlink *slink, ++ struct inode *h_inode, void *cookie) ++{ ++ struct au_sbinfo *sbinfo; + -+out: -+ return err; ++ ihold(h_inode); ++ slink->h_inode = h_inode; ++ slink->h_cookie = cookie; ++ sbinfo = au_sbi(sb); ++ au_sphl_add(&slink->hlist, &sbinfo->si_symlink); +} + -+static int aufs_readlink(struct dentry *dentry, char __user *buf, int bufsiz) ++static void au_symlink_del(struct super_block *sb, struct au_symlink *slink) +{ -+ int err; -+ -+ err = aufs_read_lock(dentry, AuLock_IR | AuLock_GEN); -+ if (unlikely(err)) -+ goto out; -+ err = au_d_hashed_positive(dentry); -+ if (!err) -+ err = h_readlink(dentry, au_dbstart(dentry), buf, bufsiz); -+ aufs_read_unlock(dentry, AuLock_IR); ++ struct au_sbinfo *sbinfo; + -+out: -+ return err; ++ /* do not iput() within rcu */ ++ iput(slink->h_inode); ++ slink->h_inode = NULL; ++ sbinfo = au_sbi(sb); ++ au_sphl_del_rcu(&slink->hlist, &sbinfo->si_symlink); ++ kfree_rcu(slink, rcu); +} + -+static void *aufs_follow_link(struct dentry *dentry, struct nameidata *nd) ++static const char *aufs_follow_link(struct dentry *dentry, void **cookie) +{ ++ const char *ret; ++ struct inode *inode, *h_inode; ++ struct dentry *h_dentry; ++ struct au_symlink *slink; + int err; -+ mm_segment_t old_fs; -+ union { -+ char *k; -+ char __user *u; -+ } buf; -+ -+ err = -ENOMEM; -+ buf.k = (void *)__get_free_page(GFP_NOFS); -+ if (unlikely(!buf.k)) -+ goto out; ++ aufs_bindex_t bindex; + ++ ret = NULL; /* supress a warning */ + err = aufs_read_lock(dentry, AuLock_IR | AuLock_GEN); + if (unlikely(err)) -+ goto out_name; ++ goto out; + + err = au_d_hashed_positive(dentry); -+ if (!err) { -+ old_fs = get_fs(); -+ set_fs(KERNEL_DS); -+ err = h_readlink(dentry, au_dbstart(dentry), buf.u, PATH_MAX); -+ set_fs(old_fs); ++ if (unlikely(err)) ++ goto out_unlock; ++ ++ err = -EINVAL; ++ inode = d_inode(dentry); ++ bindex = au_ibstart(inode); ++ h_inode = au_h_iptr(inode, bindex); ++ if (unlikely(!h_inode->i_op->follow_link)) ++ goto out_unlock; ++ ++ err = -ENOMEM; ++ slink = kmalloc(sizeof(*slink), GFP_NOFS); ++ if (unlikely(!slink)) ++ goto out_unlock; ++ ++ err = -EBUSY; ++ h_dentry = NULL; ++ if (au_dbstart(dentry) <= bindex) { ++ h_dentry = au_h_dptr(dentry, bindex); ++ if (h_dentry) ++ dget(h_dentry); + } -+ aufs_read_unlock(dentry, AuLock_IR); ++ if (!h_dentry) { ++ h_dentry = d_find_any_alias(h_inode); ++ if (IS_ERR(h_dentry)) { ++ err = PTR_ERR(h_dentry); ++ goto out_free; ++ } ++ } ++ if (unlikely(!h_dentry)) ++ goto out_free; + -+ if (err >= 0) { -+ buf.k[err] = 0; -+ /* will be freed by put_link */ -+ nd_set_link(nd, buf.k); -+ return NULL; /* success */ ++ err = 0; ++ AuDbg("%pf\n", h_inode->i_op->follow_link); ++ AuDbgDentry(h_dentry); ++ ret = h_inode->i_op->follow_link(h_dentry, cookie); ++ dput(h_dentry); ++ ++ if (!IS_ERR_OR_NULL(ret)) { ++ au_symlink_add(inode->i_sb, slink, h_inode, *cookie); ++ *cookie = slink; ++ AuDbg("slink %p\n", slink); ++ goto out_unlock; /* success */ + } + -+out_name: -+ free_page((unsigned long)buf.k); ++out_free: ++ slink->h_inode = NULL; ++ kfree_rcu(slink, rcu); ++out_unlock: ++ aufs_read_unlock(dentry, AuLock_IR); +out: -+ AuTraceErr(err); -+ return ERR_PTR(err); ++ if (unlikely(err)) ++ ret = ERR_PTR(err); ++ AuTraceErrPtr(ret); ++ return ret; +} + -+static void aufs_put_link(struct dentry *dentry __maybe_unused, -+ struct nameidata *nd, void *cookie __maybe_unused) ++static void aufs_put_link(struct inode *inode, void *cookie) +{ -+ char *p; ++ struct au_symlink *slink; ++ struct inode *h_inode; + -+ p = nd_get_link(nd); -+ if (!IS_ERR_OR_NULL(p)) -+ free_page((unsigned long)p); ++ slink = cookie; ++ AuDbg("slink %p\n", slink); ++ h_inode = slink->h_inode; ++ AuDbg("%pf\n", h_inode->i_op->put_link); ++ AuDbgInode(h_inode); ++ if (h_inode->i_op->put_link) ++ h_inode->i_op->put_link(h_inode, slink->h_cookie); ++ au_symlink_del(inode->i_sb, slink); +} + +/* ---------------------------------------------------------------------- */ @@ -19503,7 +19506,7 @@ diff -urN /usr/share/empty/fs/aufs/i_op.c linux/fs/aufs/i_op.c + .removexattr = aufs_removexattr, +#endif + -+ .readlink = aufs_readlink, ++ .readlink = generic_readlink, + .follow_link = aufs_follow_link, + .put_link = aufs_put_link, + @@ -19563,7 +19566,7 @@ 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 2015-06-28 17:36:09.025073697 +0200 ++++ linux/fs/aufs/i_op_del.c 2015-09-24 10:47:58.254719746 +0200 @@ -0,0 +1,510 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -20077,7 +20080,7 @@ 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 2015-06-28 17:36:09.025073697 +0200 ++++ linux/fs/aufs/i_op_ren.c 2015-09-24 10:47:58.254719746 +0200 @@ -0,0 +1,1017 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -21098,7 +21101,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 2015-06-28 17:35:44.344717109 +0200 ++++ linux/fs/aufs/Kconfig 2015-09-24 10:47:58.248052907 +0200 @@ -0,0 +1,185 @@ +config AUFS_FS + tristate "Aufs (Advanced multi layered unification filesystem) support" @@ -21287,7 +21290,7 @@ diff -urN /usr/share/empty/fs/aufs/Kconfig linux/fs/aufs/Kconfig +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 2015-06-28 17:35:44.348050491 +0200 ++++ linux/fs/aufs/loop.c 2015-09-24 10:47:58.254719746 +0200 @@ -0,0 +1,145 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -21436,7 +21439,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 2015-06-28 17:35:44.348050491 +0200 ++++ linux/fs/aufs/loop.h 2015-09-24 10:47:58.254719746 +0200 @@ -0,0 +1,52 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -21492,7 +21495,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 2015-06-28 17:35:44.348050491 +0200 ++++ linux/fs/aufs/magic.mk 2015-09-24 10:47:58.254719746 +0200 @@ -0,0 +1,30 @@ + +# defined in ${srctree}/fs/fuse/inode.c @@ -21526,7 +21529,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 2015-06-28 17:35:44.344717109 +0200 ++++ linux/fs/aufs/Makefile 2015-09-24 10:47:58.248052907 +0200 @@ -0,0 +1,44 @@ + +include ${src}/magic.mk @@ -21574,7 +21577,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 2015-06-28 17:35:44.348050491 +0200 ++++ linux/fs/aufs/module.c 2015-09-24 10:47:58.254719746 +0200 @@ -0,0 +1,210 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -21788,7 +21791,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 2015-06-28 17:35:44.348050491 +0200 ++++ linux/fs/aufs/module.h 2015-09-24 10:47:58.254719746 +0200 @@ -0,0 +1,104 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -21896,7 +21899,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 2015-06-28 17:36:09.025073697 +0200 ++++ linux/fs/aufs/mvdown.c 2015-09-24 10:47:58.254719746 +0200 @@ -0,0 +1,694 @@ +/* + * Copyright (C) 2011-2015 Junjiro R. Okajima @@ -22594,7 +22597,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 2015-06-28 17:36:09.028407078 +0200 ++++ linux/fs/aufs/opts.c 2015-09-24 10:47:58.254719746 +0200 @@ -0,0 +1,1835 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -24433,7 +24436,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 2015-06-28 17:35:44.351383872 +0200 ++++ linux/fs/aufs/opts.h 2015-09-24 10:47:58.254719746 +0200 @@ -0,0 +1,210 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -24647,7 +24650,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 2015-06-28 17:36:09.028407078 +0200 ++++ linux/fs/aufs/plink.c 2015-09-24 10:47:58.254719746 +0200 @@ -0,0 +1,528 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -25179,7 +25182,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 2015-06-28 17:35:44.351383872 +0200 ++++ linux/fs/aufs/poll.c 2015-09-24 10:47:58.254719746 +0200 @@ -0,0 +1,52 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -25235,7 +25238,7 @@ diff -urN /usr/share/empty/fs/aufs/poll.c linux/fs/aufs/poll.c +} diff -urN /usr/share/empty/fs/aufs/posix_acl.c linux/fs/aufs/posix_acl.c --- /usr/share/empty/fs/aufs/posix_acl.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/posix_acl.c 2015-06-28 17:35:44.351383872 +0200 ++++ linux/fs/aufs/posix_acl.c 2015-09-24 10:47:58.254719746 +0200 @@ -0,0 +1,99 @@ +/* + * Copyright (C) 2014-2015 Junjiro R. Okajima @@ -25338,7 +25341,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 2015-06-28 17:35:44.351383872 +0200 ++++ linux/fs/aufs/procfs.c 2015-09-24 10:47:58.254719746 +0200 @@ -0,0 +1,169 @@ +/* + * Copyright (C) 2010-2015 Junjiro R. Okajima @@ -25511,7 +25514,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 2015-06-28 17:36:09.028407078 +0200 ++++ linux/fs/aufs/rdu.c 2015-09-24 10:47:58.254719746 +0200 @@ -0,0 +1,388 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -25903,7 +25906,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 2015-06-28 17:35:44.351383872 +0200 ++++ linux/fs/aufs/rwsem.h 2015-09-24 10:47:58.254719746 +0200 @@ -0,0 +1,191 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -26098,8 +26101,8 @@ 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 2015-06-28 17:36:09.028407078 +0200 -@@ -0,0 +1,356 @@ ++++ linux/fs/aufs/sbinfo.c 2015-09-24 10:47:58.254719746 +0200 +@@ -0,0 +1,360 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * @@ -26137,6 +26140,8 @@ diff -urN /usr/share/empty/fs/aufs/sbinfo.c linux/fs/aufs/sbinfo.c + AuDebugOn(!hlist_empty(&sbinfo->si_plink[i].head)); + AuDebugOn(atomic_read(&sbinfo->si_nowait.nw_len)); + ++ AuDebugOn(!hlist_empty(&sbinfo->si_symlink.head)); ++ + au_rw_write_lock(&sbinfo->si_rwsem); + au_br_free(sbinfo); + au_rw_write_unlock(&sbinfo->si_rwsem); @@ -26203,6 +26208,8 @@ diff -urN /usr/share/empty/fs/aufs/sbinfo.c linux/fs/aufs/sbinfo.c + + sbinfo->si_mntflags = au_opts_plink(AuOpt_Def); + ++ au_sphl_init(&sbinfo->si_symlink); ++ + sbinfo->si_xino_jiffy = jiffies; + sbinfo->si_xino_expire + = msecs_to_jiffies(AUFS_XINO_DEF_SEC * MSEC_PER_SEC); @@ -26458,7 +26465,7 @@ diff -urN /usr/share/empty/fs/aufs/sbinfo.c linux/fs/aufs/sbinfo.c +} diff -urN /usr/share/empty/fs/aufs/spl.h linux/fs/aufs/spl.h --- /usr/share/empty/fs/aufs/spl.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/spl.h 2015-06-28 17:35:44.351383872 +0200 ++++ linux/fs/aufs/spl.h 2015-09-24 10:47:58.254719746 +0200 @@ -0,0 +1,111 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -26573,7 +26580,7 @@ diff -urN /usr/share/empty/fs/aufs/spl.h linux/fs/aufs/spl.h +#endif /* __AUFS_SPL_H__ */ 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 2015-06-28 17:36:09.028407078 +0200 ++++ linux/fs/aufs/super.c 2015-09-24 10:47:58.254719746 +0200 @@ -0,0 +1,1004 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -27581,8 +27588,8 @@ 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 2015-06-28 17:36:09.028407078 +0200 -@@ -0,0 +1,635 @@ ++++ linux/fs/aufs/super.h 2015-09-24 10:47:58.254719746 +0200 +@@ -0,0 +1,638 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima + * @@ -27728,6 +27735,9 @@ diff -urN /usr/share/empty/fs/aufs/super.h linux/fs/aufs/super.h + /* include/asm-ia64/siginfo.h defines a macro named si_flags */ + unsigned int si_mntflags; + ++ /* symlink to follow_link() and put_link() */ ++ struct au_sphlhead si_symlink; ++ + /* external inode number (bitmap and translation table) */ + vfs_readf_t si_xread; + vfs_writef_t si_xwrite; @@ -28220,7 +28230,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 2015-06-28 17:35:44.351383872 +0200 ++++ linux/fs/aufs/sysaufs.c 2015-09-24 10:47:58.254719746 +0200 @@ -0,0 +1,104 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -28328,7 +28338,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 2015-06-28 17:35:44.351383872 +0200 ++++ linux/fs/aufs/sysaufs.h 2015-09-24 10:47:58.254719746 +0200 @@ -0,0 +1,101 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -28433,7 +28443,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 2015-06-28 17:35:44.351383872 +0200 ++++ linux/fs/aufs/sysfs.c 2015-09-24 10:47:58.254719746 +0200 @@ -0,0 +1,372 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -28809,7 +28819,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 2015-06-28 17:36:09.028407078 +0200 ++++ linux/fs/aufs/sysrq.c 2015-09-24 10:47:58.254719746 +0200 @@ -0,0 +1,157 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -28970,7 +28980,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 2015-06-28 17:35:44.351383872 +0200 ++++ linux/fs/aufs/vdir.c 2015-09-24 10:47:58.258053165 +0200 @@ -0,0 +1,888 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -29862,7 +29872,7 @@ diff -urN /usr/share/empty/fs/aufs/vdir.c linux/fs/aufs/vdir.c +} diff -urN /usr/share/empty/fs/aufs/vfsub.c linux/fs/aufs/vfsub.c --- /usr/share/empty/fs/aufs/vfsub.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/vfsub.c 2015-06-28 17:36:09.028407078 +0200 ++++ linux/fs/aufs/vfsub.c 2015-09-24 10:47:58.258053165 +0200 @@ -0,0 +1,848 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -30714,7 +30724,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 2015-06-28 17:35:44.351383872 +0200 ++++ linux/fs/aufs/vfsub.h 2015-09-24 10:47:58.258053165 +0200 @@ -0,0 +1,286 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -31004,7 +31014,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 2015-06-28 17:36:09.028407078 +0200 ++++ linux/fs/aufs/wbr_policy.c 2015-09-24 10:47:58.258053165 +0200 @@ -0,0 +1,765 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -31773,7 +31783,7 @@ diff -urN /usr/share/empty/fs/aufs/wbr_policy.c linux/fs/aufs/wbr_policy.c +}; diff -urN /usr/share/empty/fs/aufs/whout.c linux/fs/aufs/whout.c --- /usr/share/empty/fs/aufs/whout.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux/fs/aufs/whout.c 2015-06-28 17:36:09.028407078 +0200 ++++ linux/fs/aufs/whout.c 2015-09-24 10:47:58.258053165 +0200 @@ -0,0 +1,1063 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -32840,7 +32850,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 2015-06-28 17:35:44.351383872 +0200 ++++ linux/fs/aufs/whout.h 2015-09-24 10:47:58.258053165 +0200 @@ -0,0 +1,85 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -32929,7 +32939,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 2015-06-28 17:35:44.351383872 +0200 ++++ linux/fs/aufs/wkq.c 2015-09-24 10:47:58.258053165 +0200 @@ -0,0 +1,213 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -33146,7 +33156,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 2015-06-28 17:35:44.351383872 +0200 ++++ linux/fs/aufs/wkq.h 2015-09-24 10:47:58.258053165 +0200 @@ -0,0 +1,91 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -33241,7 +33251,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 2015-06-28 17:36:09.028407078 +0200 ++++ linux/fs/aufs/xattr.c 2015-09-24 10:47:58.258053165 +0200 @@ -0,0 +1,344 @@ +/* + * Copyright (C) 2014-2015 Junjiro R. Okajima @@ -33589,7 +33599,7 @@ diff -urN /usr/share/empty/fs/aufs/xattr.c linux/fs/aufs/xattr.c +#endif 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 2015-06-28 17:36:09.028407078 +0200 ++++ linux/fs/aufs/xino.c 2015-09-24 10:47:58.258053165 +0200 @@ -0,0 +1,1297 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -34890,7 +34900,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 2015-06-28 17:36:09.028407078 +0200 ++++ linux/include/uapi/linux/aufs_type.h 2015-09-24 10:47:58.258053165 +0200 @@ -0,0 +1,419 @@ +/* + * Copyright (C) 2005-2015 Junjiro R. Okajima @@ -34933,7 +34943,7 @@ diff -urN /usr/share/empty/include/uapi/linux/aufs_type.h linux/include/uapi/lin + +#include + -+#define AUFS_VERSION "4.x-rcN-20150622" ++#define AUFS_VERSION "4.x-rcN-20150921" + +/* todo? move this to linux-2.6.19/include/magic.h */ +#define AUFS_SUPER_MAGIC ('a' << 24 | 'u' << 16 | 'f' << 8 | 's') @@ -35314,10 +35324,10 @@ diff -urN /usr/share/empty/include/uapi/linux/aufs_type.h linux/include/uapi/lin aufs4.x-rcN loopback patch diff --git a/drivers/block/loop.c b/drivers/block/loop.c -index 0160952..866f8e2 100644 +index 23103ad..5c3263f 100644 --- a/drivers/block/loop.c +++ b/drivers/block/loop.c -@@ -419,7 +419,7 @@ static int do_req_filebacked(struct loop_device *lo, struct request *rq) +@@ -417,7 +417,7 @@ static int do_req_filebacked(struct loop_device *lo, struct request *rq) } struct switch_request { @@ -35326,7 +35336,7 @@ index 0160952..866f8e2 100644 struct completion wait; }; -@@ -439,6 +439,7 @@ static void do_loop_switch(struct loop_device *lo, struct switch_request *p) +@@ -437,6 +437,7 @@ static void do_loop_switch(struct loop_device *lo, struct switch_request *p) mapping = file->f_mapping; mapping_set_gfp_mask(old_file->f_mapping, lo->old_gfp_mask); lo->lo_backing_file = file; @@ -35334,7 +35344,7 @@ index 0160952..866f8e2 100644 lo->lo_blocksize = S_ISBLK(mapping->host->i_mode) ? mapping->host->i_bdev->bd_block_size : PAGE_SIZE; lo->old_gfp_mask = mapping_gfp_mask(mapping); -@@ -450,11 +451,13 @@ static void do_loop_switch(struct loop_device *lo, struct switch_request *p) +@@ -448,11 +449,13 @@ static void do_loop_switch(struct loop_device *lo, struct switch_request *p) * First it needs to flush existing IO, it does this by sending a magic * BIO down the pipe. The completion of this BIO does the actual switch. */ @@ -35349,7 +35359,7 @@ index 0160952..866f8e2 100644 /* freeze queue and wait for completion of scheduled requests */ blk_mq_freeze_queue(lo->lo_queue); -@@ -473,7 +476,16 @@ static int loop_switch(struct loop_device *lo, struct file *file) +@@ -471,7 +474,16 @@ static int loop_switch(struct loop_device *lo, struct file *file) */ static int loop_flush(struct loop_device *lo) { @@ -35366,8 +35376,8 @@ index 0160952..866f8e2 100644 + return f; } - /* -@@ -488,6 +500,7 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev, + static void loop_reread_partitions(struct loop_device *lo, +@@ -508,6 +520,7 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev, unsigned int arg) { struct file *file, *old_file; @@ -35375,7 +35385,7 @@ index 0160952..866f8e2 100644 struct inode *inode; int error; -@@ -504,9 +517,16 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev, +@@ -524,9 +537,16 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev, file = fget(arg); if (!file) goto out; @@ -35392,7 +35402,7 @@ index 0160952..866f8e2 100644 error = -EINVAL; -@@ -518,17 +538,21 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev, +@@ -538,17 +558,21 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev, goto out_putf; /* and ... switch */ @@ -35405,7 +35415,7 @@ index 0160952..866f8e2 100644 + if (old_virt_file) + fput(old_virt_file); if (lo->lo_flags & LO_FLAGS_PARTSCAN) - ioctl_by_bdev(bdev, BLKRRPART, 0); + loop_reread_partitions(lo, bdev); return 0; out_putf: @@ -35415,7 +35425,7 @@ index 0160952..866f8e2 100644 out: return error; } -@@ -689,7 +713,7 @@ static void loop_config_discard(struct loop_device *lo) +@@ -709,7 +733,7 @@ static void loop_config_discard(struct loop_device *lo) static int loop_set_fd(struct loop_device *lo, fmode_t mode, struct block_device *bdev, unsigned int arg) { @@ -35424,7 +35434,7 @@ index 0160952..866f8e2 100644 struct inode *inode; struct address_space *mapping; unsigned lo_blocksize; -@@ -704,6 +728,12 @@ static int loop_set_fd(struct loop_device *lo, fmode_t mode, +@@ -724,6 +748,12 @@ static int loop_set_fd(struct loop_device *lo, fmode_t mode, file = fget(arg); if (!file) goto out; @@ -35437,7 +35447,7 @@ index 0160952..866f8e2 100644 error = -EBUSY; if (lo->lo_state != Lo_unbound) -@@ -752,6 +782,7 @@ static int loop_set_fd(struct loop_device *lo, fmode_t mode, +@@ -778,6 +808,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; @@ -35445,7 +35455,7 @@ index 0160952..866f8e2 100644 lo->transfer = NULL; lo->ioctl = NULL; lo->lo_sizelimit = 0; -@@ -783,6 +814,8 @@ static int loop_set_fd(struct loop_device *lo, fmode_t mode, +@@ -809,6 +840,8 @@ static int loop_set_fd(struct loop_device *lo, fmode_t mode, out_putf: fput(file); @@ -35454,7 +35464,7 @@ index 0160952..866f8e2 100644 out: /* This is safe: open() is still holding a reference. */ module_put(THIS_MODULE); -@@ -829,6 +862,7 @@ loop_init_xfer(struct loop_device *lo, struct loop_func_table *xfer, +@@ -855,6 +888,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; @@ -35462,7 +35472,7 @@ index 0160952..866f8e2 100644 gfp_t gfp = lo->old_gfp_mask; struct block_device *bdev = lo->lo_device; -@@ -857,6 +891,7 @@ static int loop_clr_fd(struct loop_device *lo) +@@ -886,6 +920,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; @@ -35470,7 +35480,7 @@ index 0160952..866f8e2 100644 spin_unlock_irq(&lo->lo_lock); loop_release_xfer(lo); -@@ -898,6 +933,8 @@ static int loop_clr_fd(struct loop_device *lo) +@@ -931,6 +966,8 @@ static int loop_clr_fd(struct loop_device *lo) * bd_mutex which is usually taken before lo_ctl_mutex. */ fput(filp); @@ -35480,7 +35490,7 @@ index 0160952..866f8e2 100644 } diff --git a/drivers/block/loop.h b/drivers/block/loop.h -index 301c27f..df84aa0 100644 +index 25e8997..93b6fce 100644 --- a/drivers/block/loop.h +++ b/drivers/block/loop.h @@ -46,7 +46,7 @@ struct loop_device { @@ -35571,10 +35581,10 @@ index ee5780d..da35759 100644 /* ---------------------------------------------------------------------- */ diff --git a/include/linux/fs.h b/include/linux/fs.h -index 3229f97..f63cc0d 100644 +index 86080ea..5f8e0f2 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h -@@ -1696,6 +1696,10 @@ struct super_operations { +@@ -1708,6 +1708,10 @@ struct super_operations { struct shrink_control *); long (*free_cached_objects)(struct super_block *, struct shrink_control *); diff --git a/kernel-imq.patch b/kernel-imq.patch index dc0dc2ab..a8cd77e6 100644 --- a/kernel-imq.patch +++ b/kernel-imq.patch @@ -1,8 +1,8 @@ diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig -index df51d60..e937550 100644 +index c18f9e6..ec43bde 100644 --- a/drivers/net/Kconfig +++ b/drivers/net/Kconfig -@@ -220,6 +220,125 @@ config RIONET_RX_SIZE +@@ -234,6 +234,125 @@ config RIONET_RX_SIZE depends on RIONET default "128" @@ -129,7 +129,7 @@ index df51d60..e937550 100644 tristate "Universal TUN/TAP device driver support" depends on INET diff --git a/drivers/net/Makefile b/drivers/net/Makefile -index e25fdd7..b411742 100644 +index c12cb22..03b82c6 100644 --- a/drivers/net/Makefile +++ b/drivers/net/Makefile @@ -10,6 +10,7 @@ obj-$(CONFIG_IPVLAN) += ipvlan/ @@ -142,10 +142,10 @@ index e25fdd7..b411742 100644 obj-$(CONFIG_MII) += mii.o diff --git a/drivers/net/imq.c b/drivers/net/imq.c new file mode 100644 -index 0000000..b010f39 +index 0000000..c60929b --- /dev/null +++ b/drivers/net/imq.c -@@ -0,0 +1,903 @@ +@@ -0,0 +1,908 @@ +/* + * Pseudo-driver for the intermediate queue device. + * @@ -725,8 +725,6 @@ index 0000000..b010f39 + entry->skb = skb; + } + -+ skb->nf_queue_entry = entry; -+ + dev->stats.rx_bytes += skb->len; + dev->stats.rx_packets++; + @@ -752,6 +750,7 @@ index 0000000..b010f39 + if (unlikely(!q->enqueue)) + goto packet_not_eaten_by_imq_dev; + ++ skb->nf_queue_entry = entry; + root_lock = qdisc_lock(q); + spin_lock(root_lock); + @@ -762,7 +761,6 @@ index 0000000..b010f39 + /* backup skb->cb, as qdisc layer will overwrite it */ + skb_save_cb(skb_shared); + qdisc_enqueue_root(skb_shared, q); /* might kfree_skb */ -+ + if (likely(atomic_read(&skb_shared->users) == users + 1)) { + bool validate; + @@ -798,12 +796,19 @@ index 0000000..b010f39 + */ + if (imq_dev_accurate_stats && txq->xmit_lock_owner != cpu) { + HARD_TX_LOCK(dev, txq, cpu); -+ dev_hard_start_xmit(skb_popd, dev, txq, &dummy_ret); ++ if (!netif_xmit_frozen_or_stopped(txq)) { ++ dev_hard_start_xmit(skb_popd, dev, txq, &dummy_ret); ++ } + HARD_TX_UNLOCK(dev, txq); + } else { -+ dev_hard_start_xmit(skb_popd, dev, txq, &dummy_ret); ++ if (!netif_xmit_frozen_or_stopped(txq)) { ++ dev_hard_start_xmit(skb_popd, dev, txq, &dummy_ret); ++ } + } + } ++ } else { ++ /* No ready skb, then schedule it */ ++ __netif_schedule(q); + } +#endif + rcu_read_unlock_bh(); @@ -1069,10 +1074,10 @@ index 0000000..1babb09 +#endif /* _IMQ_H */ + diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h -index 05b9a69..0c35dff 100644 +index e20979d..9c8f9a1 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h -@@ -3276,6 +3276,19 @@ static inline void netif_tx_unlock_bh(struct net_device *dev) +@@ -3279,6 +3279,19 @@ static inline void netif_tx_unlock_bh(struct net_device *dev) } \ } @@ -1140,20 +1145,20 @@ index 0000000..198ac01 +#endif /* _IP6T_IMQ_H */ + diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h -index f15154a..d76d31a 100644 +index 9b88536..61686b0 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h -@@ -35,6 +35,9 @@ - #include - #include - #include +@@ -37,6 +37,9 @@ + #include + #include + #include +#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE) +#include +#endif /* A. Checksumming of received packets by device. * -@@ -540,6 +543,9 @@ struct sk_buff { +@@ -548,6 +551,9 @@ struct sk_buff { * first. This is owned by whoever has the skb queued ATM. */ char cb[48] __aligned(8); @@ -1163,7 +1168,7 @@ index f15154a..d76d31a 100644 unsigned long _skb_refdst; void (*destructor)(struct sk_buff *skb); -@@ -549,6 +555,9 @@ struct sk_buff { +@@ -557,6 +563,9 @@ struct sk_buff { #if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE) struct nf_conntrack *nfct; #endif @@ -1173,7 +1178,7 @@ index f15154a..d76d31a 100644 #if IS_ENABLED(CONFIG_BRIDGE_NETFILTER) struct nf_bridge_info *nf_bridge; #endif -@@ -616,6 +625,9 @@ struct sk_buff { +@@ -624,6 +633,9 @@ struct sk_buff { __u8 inner_protocol_type:1; __u8 remcsum_offload:1; /* 3 or 5 bit hole */ @@ -1183,7 +1188,7 @@ index f15154a..d76d31a 100644 #ifdef CONFIG_NET_SCHED __u16 tc_index; /* traffic control index */ -@@ -766,6 +778,12 @@ void kfree_skb_list(struct sk_buff *segs); +@@ -774,6 +786,12 @@ void kfree_skb_list(struct sk_buff *segs); void skb_tx_error(struct sk_buff *skb); void consume_skb(struct sk_buff *skb); void __kfree_skb(struct sk_buff *skb); @@ -1196,7 +1201,7 @@ index f15154a..d76d31a 100644 extern struct kmem_cache *skbuff_head_cache; void kfree_skb_partial(struct sk_buff *skb, bool head_stolen); -@@ -3216,6 +3234,10 @@ static inline void __nf_copy(struct sk_buff *dst, const struct sk_buff *src, +@@ -3232,6 +3250,10 @@ static inline void __nf_copy(struct sk_buff *dst, const struct sk_buff *src, if (copy) dst->nfctinfo = src->nfctinfo; #endif @@ -1208,10 +1213,10 @@ index f15154a..d76d31a 100644 dst->nf_bridge = src->nf_bridge; nf_bridge_get(src->nf_bridge); diff --git a/include/net/netfilter/nf_queue.h b/include/net/netfilter/nf_queue.h -index d81d584..1adc20d 100644 +index e863585..40904cb 100644 --- a/include/net/netfilter/nf_queue.h +++ b/include/net/netfilter/nf_queue.h -@@ -29,6 +29,12 @@ struct nf_queue_handler { +@@ -31,6 +31,12 @@ struct nf_queue_handler { void nf_register_queue_handler(const struct nf_queue_handler *qh); void nf_unregister_queue_handler(void); void nf_reinject(struct nf_queue_entry *entry, unsigned int verdict); @@ -1237,11 +1242,28 @@ index 2342bf1..149dec9 100644 static inline void qdisc_run(struct Qdisc *q) { if (qdisc_run_begin(q)) +diff --git a/include/net/sch_generic.h b/include/net/sch_generic.h +index 2738f6f..cc0af3e 100644 +--- a/include/net/sch_generic.h ++++ b/include/net/sch_generic.h +@@ -501,6 +501,12 @@ static inline int qdisc_enqueue(struct sk_buff *skb, struct Qdisc *sch) + return sch->enqueue(skb, sch); + } + ++static inline int qdisc_enqueue_root(struct sk_buff *skb, struct Qdisc *sch) ++{ ++ qdisc_skb_cb(skb)->pkt_len = skb->len; ++ return qdisc_enqueue(skb, sch) & NET_XMIT_MASK; ++} ++ + static inline bool qdisc_is_percpu_stats(const struct Qdisc *q) + { + return q->flags & TCQ_F_CPUSTATS; diff --git a/include/uapi/linux/netfilter.h b/include/uapi/linux/netfilter.h -index ef1b1f8..079e5ff 100644 +index d93f949..23fb6d1 100644 --- a/include/uapi/linux/netfilter.h +++ b/include/uapi/linux/netfilter.h -@@ -13,7 +13,8 @@ +@@ -14,7 +14,8 @@ #define NF_QUEUE 3 #define NF_REPEAT 4 #define NF_STOP 5 @@ -1252,20 +1274,20 @@ index ef1b1f8..079e5ff 100644 /* we overload the higher bits for encoding auxiliary data such as the queue * number or errno values. Not nice, but better than additional function diff --git a/net/core/dev.c b/net/core/dev.c -index aa82f9a..c931d04 100644 +index a8e4dd4..f84cd5a 100644 --- a/net/core/dev.c +++ b/net/core/dev.c -@@ -135,6 +135,9 @@ - #include +@@ -136,6 +136,9 @@ #include #include + #include +#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE) +#include +#endif #include "net-sysfs.h" -@@ -2646,7 +2649,12 @@ static int xmit_one(struct sk_buff *skb, struct net_device *dev, +@@ -2675,7 +2678,12 @@ static int xmit_one(struct sk_buff *skb, struct net_device *dev, unsigned int len; int rc; @@ -1278,7 +1300,7 @@ index aa82f9a..c931d04 100644 dev_queue_xmit_nit(skb, dev); len = skb->len; -@@ -2684,6 +2692,7 @@ out: +@@ -2713,6 +2721,7 @@ out: *ret = rc; return skb; } @@ -1286,7 +1308,7 @@ index aa82f9a..c931d04 100644 static struct sk_buff *validate_xmit_vlan(struct sk_buff *skb, netdev_features_t features) -@@ -2772,6 +2781,7 @@ struct sk_buff *validate_xmit_skb_list(struct sk_buff *skb, struct net_device *d +@@ -2801,6 +2810,7 @@ struct sk_buff *validate_xmit_skb_list(struct sk_buff *skb, struct net_device *d } return head; } @@ -1295,10 +1317,10 @@ index aa82f9a..c931d04 100644 static void qdisc_pkt_len_init(struct sk_buff *skb) { diff --git a/net/core/skbuff.c b/net/core/skbuff.c -index 41ec022..307f02d 100644 +index 7b84330..a313d22 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c -@@ -79,6 +79,86 @@ +@@ -79,6 +79,87 @@ struct kmem_cache *skbuff_head_cache __read_mostly; static struct kmem_cache *skbuff_fclone_cache __read_mostly; @@ -1361,6 +1383,7 @@ index 41ec022..307f02d 100644 +} +EXPORT_SYMBOL(skb_restore_cb); + ++static void skb_copy_stored_cb(struct sk_buff * , const struct sk_buff * ) __attribute__ ((unused)); +static void skb_copy_stored_cb(struct sk_buff *new, const struct sk_buff *__old) +{ + struct skb_cb_table *next; @@ -1385,7 +1408,7 @@ index 41ec022..307f02d 100644 /** * skb_panic - private function for out-of-line support -@@ -691,6 +771,28 @@ static void skb_release_head_state(struct sk_buff *skb) +@@ -643,6 +724,28 @@ static void skb_release_head_state(struct sk_buff *skb) WARN_ON(in_irq()); skb->destructor(skb); } @@ -1397,7 +1420,7 @@ index 41ec022..307f02d 100644 + while (skb->cb_next != NULL) { + if (net_ratelimit()) + pr_warn("IMQ: kfree_skb: skb->cb_next: %08x\n", -+ (unsigned int)skb->cb_next); ++ (unsigned int)(uintptr_t)skb->cb_next); + + skb_restore_cb(skb); + } @@ -1414,7 +1437,7 @@ index 41ec022..307f02d 100644 #if IS_ENABLED(CONFIG_NF_CONNTRACK) nf_conntrack_put(skb->nfct); #endif -@@ -813,6 +915,10 @@ static void __copy_skb_header(struct sk_buff *new, const struct sk_buff *old) +@@ -765,6 +868,10 @@ static void __copy_skb_header(struct sk_buff *new, const struct sk_buff *old) new->sp = secpath_get(old->sp); #endif __nf_copy(new, old, false); @@ -1425,7 +1448,7 @@ index 41ec022..307f02d 100644 /* Note : this field could be in headers_start/headers_end section * It is not yet because we do not want to have a 16 bit hole -@@ -3342,6 +3448,13 @@ void __init skb_init(void) +@@ -3324,6 +3431,13 @@ void __init skb_init(void) 0, SLAB_HWCACHE_ALIGN|SLAB_PANIC, NULL); @@ -1440,7 +1463,7 @@ index 41ec022..307f02d 100644 /** diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c -index bc09cb9..9b6ef9f 100644 +index d5f7716..dd12857 100644 --- a/net/ipv6/ip6_output.c +++ b/net/ipv6/ip6_output.c @@ -64,9 +64,6 @@ static int ip6_finish_output2(struct sock *sk, struct sk_buff *skb) @@ -1468,10 +1491,10 @@ index bc09cb9..9b6ef9f 100644 NULL, dev, ip6_finish_output, diff --git a/net/netfilter/Kconfig b/net/netfilter/Kconfig -index a0f3e6a3..64239c0 100644 +index 6eae69a..ca3b763 100644 --- a/net/netfilter/Kconfig +++ b/net/netfilter/Kconfig -@@ -771,6 +771,18 @@ config NETFILTER_XT_TARGET_LOG +@@ -784,6 +784,18 @@ config NETFILTER_XT_TARGET_LOG To compile it as a module, choose M here. If unsure, say N. @@ -1491,10 +1514,10 @@ index a0f3e6a3..64239c0 100644 tristate '"MARK" target support' depends on NETFILTER_ADVANCED diff --git a/net/netfilter/Makefile b/net/netfilter/Makefile -index a87d8b8..d1080ff 100644 +index 70d026d..5469b14 100644 --- a/net/netfilter/Makefile +++ b/net/netfilter/Makefile -@@ -109,6 +109,7 @@ obj-$(CONFIG_NETFILTER_XT_TARGET_CT) += xt_CT.o +@@ -110,6 +110,7 @@ obj-$(CONFIG_NETFILTER_XT_TARGET_CT) += xt_CT.o obj-$(CONFIG_NETFILTER_XT_TARGET_DSCP) += xt_DSCP.o obj-$(CONFIG_NETFILTER_XT_TARGET_HL) += xt_HL.o obj-$(CONFIG_NETFILTER_XT_TARGET_HMARK) += xt_HMARK.o @@ -1503,10 +1526,10 @@ index a87d8b8..d1080ff 100644 obj-$(CONFIG_NETFILTER_XT_TARGET_LOG) += xt_LOG.o obj-$(CONFIG_NETFILTER_XT_TARGET_NETMAP) += xt_NETMAP.o diff --git a/net/netfilter/core.c b/net/netfilter/core.c -index e616301..302798c 100644 +index a0e5497..a24276c 100644 --- a/net/netfilter/core.c +++ b/net/netfilter/core.c -@@ -178,9 +178,11 @@ next_hook: +@@ -206,9 +206,11 @@ next_hook: ret = NF_DROP_GETERR(verdict); if (ret == 0) ret = -EPERM; @@ -1521,7 +1544,7 @@ index e616301..302798c 100644 if (err == -ECANCELED) goto next_hook; diff --git a/net/netfilter/nf_internals.h b/net/netfilter/nf_internals.h -index ea7f367..06fe0d6 100644 +index 3992106..35cbc7b 100644 --- a/net/netfilter/nf_internals.h +++ b/net/netfilter/nf_internals.h @@ -18,7 +18,7 @@ unsigned int nf_iterate(struct list_head *head, struct sk_buff *skb, @@ -1530,11 +1553,11 @@ index ea7f367..06fe0d6 100644 int nf_queue(struct sk_buff *skb, struct nf_hook_ops *elem, - struct nf_hook_state *state, unsigned int queuenum); + struct nf_hook_state *state, unsigned int queuenum, unsigned int queuetype); + void nf_queue_nf_hook_drop(struct nf_hook_ops *ops); int __init netfilter_queue_init(void); - /* nf_log.c */ diff --git a/net/netfilter/nf_queue.c b/net/netfilter/nf_queue.c -index 2e88032..8524715 100644 +index 8a8b2ab..91ba768 100644 --- a/net/netfilter/nf_queue.c +++ b/net/netfilter/nf_queue.c @@ -28,6 +28,23 @@ @@ -1561,7 +1584,7 @@ index 2e88032..8524715 100644 /* return EBUSY when somebody else is registered, return EEXIST if the * same handler is registered, return 0 in case of success. */ void nf_register_queue_handler(const struct nf_queue_handler *qh) -@@ -112,7 +129,8 @@ EXPORT_SYMBOL_GPL(nf_queue_entry_get_refs); +@@ -129,7 +146,8 @@ void nf_queue_nf_hook_drop(struct nf_hook_ops *ops) int nf_queue(struct sk_buff *skb, struct nf_hook_ops *elem, struct nf_hook_state *state, @@ -1571,7 +1594,7 @@ index 2e88032..8524715 100644 { int status = -ENOENT; struct nf_queue_entry *entry = NULL; -@@ -122,7 +140,17 @@ int nf_queue(struct sk_buff *skb, +@@ -139,7 +157,17 @@ int nf_queue(struct sk_buff *skb, /* QUEUE == DROP if no one is waiting, to be safe. */ rcu_read_lock(); @@ -1590,7 +1613,7 @@ index 2e88032..8524715 100644 if (!qh) { status = -ESRCH; goto err_unlock; -@@ -208,8 +236,10 @@ void nf_reinject(struct nf_queue_entry *entry, unsigned int verdict) +@@ -225,8 +253,10 @@ void nf_reinject(struct nf_queue_entry *entry, unsigned int verdict) local_bh_enable(); break; case NF_QUEUE: diff --git a/kernel-multiarch.config b/kernel-multiarch.config index 704068d1..48b4fa48 100644 --- a/kernel-multiarch.config +++ b/kernel-multiarch.config @@ -7,6 +7,7 @@ CC_STACKPROTECTOR all=y CC_STACKPROTECTOR_NONE all=n CC_STACKPROTECTOR_REGULAR all=n CC_STACKPROTECTOR_STRONG all=y +DEBUG_ENTRY all=n EARLY_PRINTK_EFI all=n EFI_MIXED all=y IOSF_MBI all=m @@ -16,7 +17,9 @@ KEXEC_VERIFY_SIG all=n KVM_DEBUG_FS all=n KVM_DEVICE_ASSIGNMENT all=y PHYSICAL_ALIGN all=0x1000000 +PUNIT_ATOM_DEBUG all=m X86_AMD_PLATFORM_DEVICE all=y +X86_DEBUG_FPU all=n X86_DEBUG_STATIC_CPU_HAS all=n X86_SYSFB all=y XEN_PVH all=y @@ -88,6 +91,7 @@ CRYPTO_ALGAPI all=y CRYPTO_AEAD all=m CRYPTO_BLKCIPHER all=m CRYPTO_HASH all=y +CRYPTO_RSA all=m CRYPTO_MANAGER all=y CRYPTO_USER all=m CRYPTO_MANAGER_DISABLE_TESTS all=y @@ -101,7 +105,9 @@ CRYPTO_TEST all=m #- Authenticated Encryption with Associated Data CRYPTO_CCM all=m CRYPTO_GCM all=m +CRYPTO_CHACHA20POLY1305 all=m CRYPTO_SEQIV all=m +CRYPTO_ECHAINIV all=m #- Block modes CRYPTO_CBC all=m CRYPTO_CTR all=m @@ -123,6 +129,7 @@ CRYPTO_CRC32_PCLMUL all=m CRYPTO_CRCT10DIF all=m CRYPTO_CRCT10DIF_PCLMUL all=m CRYPTO_GHASH all=m +CRYPTO_POLY1305 all=m CRYPTO_MD4 all=m CRYPTO_MD5 all=y CRYPTO_MICHAEL_MIC all=m @@ -164,6 +171,7 @@ CRYPTO_KHAZAD all=m CRYPTO_SALSA20 all=m CRYPTO_SALSA20_586 all=m CRYPTO_SALSA20_X86_64 x86_64=m +CRYPTO_CHACHA20 all=m CRYPTO_SEED all=m CRYPTO_SERPENT all=m CRYPTO_SERPENT_SSE2_X86_64 all=m @@ -180,6 +188,7 @@ CRYPTO_TWOFISH_AVX_X86_64 all=m CRYPTO_DEFLATE all=m CRYPTO_ZLIB all=m CRYPTO_LZO all=y +CRYPTO_842 all=m CRYPTO_LZ4 all=m CRYPTO_LZ4HC all=m #- Random Number Generation @@ -188,9 +197,11 @@ CRYPTO_DRBG_MENU all=m CRYPTO_DRBG_HMAC all=y CRYPTO_DRBG_HASH all=y CRYPTO_DRBG_CTR all=y +CRYPTO_JITTERENTROPY all=m CRYPTO_USER_API_HASH all=m CRYPTO_USER_API_SKCIPHER all=m CRYPTO_USER_API_RNG all=m +CRYPTO_USER_API_AEAD all=m #- file drivers/crypto/Kconfig goes here #- file crypto/asymmetric_keys/Kconfig goes here @@ -216,6 +227,7 @@ A11Y_BRAILLE_CONSOLE=y ACPI ia64=y x86=y ACPI_SLEEP x86=y ACPI_PROCFS_POWER ia64=y x86=y +ACPI_REV_OVERRIDE_POSSIBLE all=y ACPI_EC_DEBUGFS all=m ACPI_AC x86=m ACPI_BATTERY x86=m @@ -239,6 +251,7 @@ ACPI_HOTPLUG_MEMORY all=y ACPI_SBS x86=m ACPI_CUSTOM_METHOD all=m ACPI_BGRT all=y +ACPI_NFIT all=m #- file drivers/acpi/apei/Kconfig goes here ACPI_EXTLOG all=m PMIC_OPREGION all=y @@ -472,7 +485,6 @@ BLK_DEV_RAM all=y BLK_DEV_RAM_COUNT all=16 BLK_DEV_RAM_SIZE all=16384 BLK_DEV_RAM_DAX all=y -BLK_DEV_PMEM all=m CDROM_PKTCDVD all=m CDROM_PKTCDVD_BUFFERS all=8 CDROM_PKTCDVD_WCACHE all=y @@ -530,13 +542,13 @@ PARIDE_ON26 all=m #- ZRAM all=m ZRAM_LZ4_COMPRESS all=y -ZRAM_DEBUG all=n #- #- *** FILE: drivers/bluetooth/Kconfig *** #- BT_HCIBTUSB all=m BT_HCIBTUSB_BCM all=y +BT_HCIBTUSB_RTL all=y BT_HCIBTSDIO all=m BT_HCIUART all=m BT_HCIUART_H4 all=y @@ -705,10 +717,12 @@ COMMON_CLK_WM831X all=m COMMON_CLK_SI5351 all=m COMMON_CLK_PWM all=m COMMON_CLK_CDCE706 all=m -#- file drivers/clk/qcom/Kconfig goes here #- file drivers/clk/bcm/Kconfig goes here +#- file drivers/clk/hisilicon/Kconfig goes here +#- file drivers/clk/qcom/Kconfig goes here #- file drivers/clk/mvebu/Kconfig goes here #- file drivers/clk/samsung/Kconfig goes here +#- file drivers/clk/tegra/Kconfig goes here #- #- *** FILE: drivers/connector/Kconfig *** @@ -907,6 +921,7 @@ DMIID all=y DMI_SYSFS all=m ISCSI_IBFT_FIND all=y ISCSI_IBFT all=m +#- file drivers/firmware/broadcom/Kconfig goes here #- file drivers/firmware/google/Kconfig goes here #- file drivers/firmware/efi/Kconfig goes here @@ -993,6 +1008,8 @@ DRM_TDFX all=m DRM_R128 all=m DRM_RADEON all=m #- file drivers/gpu/drm/radeon/Kconfig goes here +DRM_AMDGPU all=m +#- file drivers/gpu/drm/amd/amdgpu/Kconfig goes here #- file drivers/gpu/drm/nouveau/Kconfig goes here DRM_I810 i386=m x86_64=m #- file drivers/gpu/drm/i915/Kconfig goes here @@ -1017,6 +1034,7 @@ DRM_VGEM all=m #- 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/tegra/Kconfig goes here #- file drivers/gpu/drm/panel/Kconfig goes here @@ -1024,6 +1042,12 @@ DRM_VGEM all=m #- file drivers/gpu/drm/amd/amdkfd/Kconfig goes here #- file drivers/gpu/drm/imx/Kconfig goes here +#- +#- *** FILE: drivers/gpu/drm/amd/amdgpu/Kconfig *** +#- +DRM_AMDGPU_CIK all=y +DRM_AMDGPU_USERPTR all=y + #- #- *** FILE: drivers/gpu/drm/amd/amdkfd/Kconfig *** #- @@ -1101,6 +1125,11 @@ DRM_RADEON_UMS all=n #- DRM_UDL all=m +#- +#- *** FILE: drivers/gpu/drm/virtio/Kconfig *** +#- +DRM_VIRTIO_GPU all=m + #- #- *** FILE: drivers/gpu/drm/vmwgfx/Kconfig *** #- @@ -1364,6 +1393,7 @@ SENSORS_ADS7871 all=m SENSORS_AMC6821 all=m SENSORS_INA209 all=m SENSORS_INA2XX all=m +SENSORS_TC74 all=m SENSORS_THMC50 all=m SENSORS_TMP102 all=m SENSORS_TMP103 all=m @@ -1613,6 +1643,8 @@ MMA8452 all=m KXCJK1013 all=m MMA9551 all=m MMA9553 all=m +STK8312 all=m +STK8BA50 all=m #- #- *** FILE: drivers/iio/adc/Kconfig *** @@ -1667,6 +1699,7 @@ AD5755 all=m AD5764 all=m AD5791 all=m AD7303 all=m +M62332 all=m MAX517 all=m MCP4725 all=m MCP4922 all=m @@ -1713,9 +1746,11 @@ INV_MPU6050_IIO all=m #- #- *** FILE: drivers/iio/light/Kconfig *** #- +ACPI_ALS all=m ADJD_S311 all=m AL3320A all=m APDS9300 all=m +BH1750 all=m CM32181 all=m CM3232 all=m CM3323 all=m @@ -1727,6 +1762,7 @@ HID_SENSOR_PROX all=m JSA1212 all=m SENSORS_LM3533 all=m LTR501 all=m +STK3310 all=m TCS3414 all=m TCS3472 all=m SENSORS_TSL2563 all=m @@ -1740,7 +1776,9 @@ AK8975 all=m AK09911 all=m MAG3110 all=m HID_SENSOR_MAGNETOMETER_3D all=m +MMC35240 all=m IIO_ST_MAGN_3AXIS all=m +BMC150_MAGN all=m #- #- *** FILE: drivers/iio/orientation/Kconfig *** @@ -1897,6 +1935,7 @@ INFINIBAND_SRPT all=m #- *** FILE: drivers/input/Kconfig *** #- INPUT all=y +INPUT_LEDS all=m INPUT_FF_MEMLESS all=m INPUT_POLLDEV all=m INPUT_SPARSEKMAP all=m @@ -2050,6 +2089,7 @@ INPUT_XEN_KBDDEV_FRONTEND all=m INPUT_IDEAPAD_SLIDEBAR all=m INPUT_SOC_BUTTON_ARRAY all=m INPUT_DRV260X_HAPTICS all=m +INPUT_DRV2665_HAPTICS all=m INPUT_DRV2667_HAPTICS all=m #- @@ -2158,6 +2198,7 @@ TOUCHSCREEN_TOUCHWIN all=m TOUCHSCREEN_TI_AM335X_TSC all=m TOUCHSCREEN_UCB1400 all=m sparc=n TOUCHSCREEN_PIXCIR all=m +TOUCHSCREEN_WDT87XX_I2C all=m TOUCHSCREEN_WM831X all=m TOUCHSCREEN_WM97XX all=m TOUCHSCREEN_WM9705 all=y @@ -2391,6 +2432,7 @@ LEDS_LT3593 all=m LEDS_DELL_NETBOOKS all=m LEDS_MC13783 all=m LEDS_TCA6507 all=m +LEDS_TLC591XX all=m LEDS_LM355x all=m LEDS_OT200 all=m LEDS_MENF21BMC all=m @@ -2483,6 +2525,7 @@ DM_SNAPSHOT all=m DM_THIN_PROVISIONING all=m DM_CACHE all=m DM_CACHE_MQ all=m +DM_CACHE_SMQ all=m DM_CACHE_CLEANER all=m DM_ERA all=m DM_MIRROR all=m @@ -2742,6 +2785,7 @@ MEDIA_PCI_SUPPORT all=y #- file drivers/media/pci/saa7146/Kconfig goes here #- file drivers/media/pci/solo6x10/Kconfig goes here #- file drivers/media/pci/tw68/Kconfig goes here +#- file drivers/media/pci/dt3155/Kconfig goes here #- Media capture/analog/hybrid TV support #- file drivers/media/pci/cx18/Kconfig goes here #- file drivers/media/pci/cx23885/Kconfig goes here @@ -2750,6 +2794,7 @@ MEDIA_PCI_SUPPORT all=y #- file drivers/media/pci/bt8xx/Kconfig goes here #- file drivers/media/pci/saa7134/Kconfig goes here #- file drivers/media/pci/saa7164/Kconfig goes here +#- file drivers/media/pci/cobalt/Kconfig goes here #- Media digital TV PCI Adapters #- file drivers/media/pci/ttpci/Kconfig goes here #- file drivers/media/pci/b2c2/Kconfig goes here @@ -2774,6 +2819,11 @@ DVB_B2C2_FLEXCOP_PCI_DEBUG all=n VIDEO_BT848 all=m sparc=n DVB_BT8XX all=m +#- +#- *** FILE: drivers/media/pci/cobalt/Kconfig *** +#- +VIDEO_COBALT all=m + #- #- *** FILE: drivers/media/pci/cx18/Kconfig *** #- @@ -2812,6 +2862,11 @@ DVB_DDBRIDGE all=m #- DVB_DM1105 all=m +#- +#- *** FILE: drivers/media/pci/dt3155/Kconfig *** +#- +VIDEO_DT3155 all=m + #- #- *** FILE: drivers/media/pci/ivtv/Kconfig *** #- @@ -3364,6 +3419,7 @@ VIDEO_V4L2 all=m VIDEO_ADV_DEBUG all=n VIDEO_FIXED_MINOR_RANGES all=n VIDEO_TUNER all=m sparc= +V4L2_FLASH_LED_CLASS all=m VIDEOBUF2_CORE all=m VIDEOBUF2_MEMOPS all=m VIDEOBUF2_VMALLOC all=m @@ -3526,7 +3582,6 @@ SRAM all=n #- file drivers/misc/cb710/Kconfig goes here #- file drivers/misc/ti-st/Kconfig goes here #- file drivers/misc/lis3lv02d/Kconfig goes here -#- file drivers/misc/carma/Kconfig goes here #- file drivers/misc/altera-stapl/Kconfig goes here #- file drivers/misc/mei/Kconfig goes here #- file drivers/misc/vmw_vmci/Kconfig goes here @@ -3592,10 +3647,14 @@ INTEL_MEI_TXE all=m #- #- Intel MIC Bus Driver INTEL_MIC_BUS all=m +#- SCIF Bus Driver +SCIF_BUS all=m #- Intel MIC Host Driver INTEL_MIC_HOST all=m #- Intel MIC Card Driver INTEL_MIC_CARD all=m +#- SCIF Driver +SCIF all=m #- #- *** FILE: drivers/misc/ti-st/Kconfig *** @@ -3654,6 +3713,7 @@ MMC_USDHI6ROL0 all=m MMC_REALTEK_PCI all=m MMC_REALTEK_USB all=m MMC_TOSHIBA_PCI all=m +MMC_MTK all=m #- #- *** FILE: drivers/mtd/Kconfig *** @@ -3844,6 +3904,7 @@ MACVLAN all=m MACVTAP all=m IPVLAN all=m VXLAN all=m +GENEVE all=m NETCONSOLE all=m NETCONSOLE_DYNAMIC all=y NTB_NETDEV all=m @@ -3851,6 +3912,7 @@ RIONET all=m RIONET_TX_SIZE all=128 RIONET_RX_SIZE all=128 TUN all=m +TUN_VNET_CROSS_LE all=n VETH all=m VIRTIO_NET all=m NLMON all=m @@ -4043,6 +4105,7 @@ WD80x3 alpha=m i386=m #- file drivers/net/ethernet/broadcom/Kconfig goes here #- file drivers/net/ethernet/brocade/Kconfig goes here #- file drivers/net/ethernet/calxeda/Kconfig goes here +#- file drivers/net/ethernet/cavium/Kconfig goes here #- file drivers/net/ethernet/chelsio/Kconfig goes here #- file drivers/net/ethernet/cirrus/Kconfig goes here #- file drivers/net/ethernet/cisco/Kconfig goes here @@ -4052,6 +4115,7 @@ DNET all=m #- file drivers/net/ethernet/dec/Kconfig goes here #- file drivers/net/ethernet/dlink/Kconfig goes here #- file drivers/net/ethernet/emulex/Kconfig goes here +#- file drivers/net/ethernet/ezchip/Kconfig goes here #- file drivers/net/ethernet/neterion/Kconfig goes here #- file drivers/net/ethernet/faraday/Kconfig goes here #- file drivers/net/ethernet/freescale/Kconfig goes here @@ -4203,6 +4267,14 @@ MACB all=m #- NET_CALXEDA_XGMAC all=m +#- +#- *** FILE: drivers/net/ethernet/cavium/Kconfig *** +#- +NET_VENDOR_CAVIUM all=m +THUNDER_NIC_PF all=m +THUNDER_NIC_VF all=m +LIQUIDIO all=m + #- #- *** FILE: drivers/net/ethernet/chelsio/Kconfig *** #- @@ -4271,8 +4343,14 @@ NET_VENDOR_EMULEX all=y #- *** FILE: drivers/net/ethernet/emulex/benet/Kconfig *** #- BE2NET all=m +BE2NET_HWMON all=y BE2NET_VXLAN all=y +#- +#- *** FILE: drivers/net/ethernet/ezchip/Kconfig *** +#- +NET_VENDOR_EZCHIP all=y + #- #- *** FILE: drivers/net/ethernet/freescale/Kconfig *** #- @@ -4355,6 +4433,12 @@ MLX4_EN_DCB all=y MLX4_EN_VXLAN all=y MLX4_CORE all=m +#- +#- *** FILE: drivers/net/ethernet/mellanox/mlx5/core/Kconfig *** +#- +MLX5_CORE all=m +MLX5_CORE_EN all=y + #- #- *** FILE: drivers/net/ethernet/micrel/Kconfig *** #- @@ -4462,6 +4546,7 @@ R8169 all=m sparc=n #- #- *** FILE: drivers/net/ethernet/renesas/Kconfig *** #- +NET_VENDOR_RENESAS all=y SH_ETH all=m #- @@ -4488,6 +4573,7 @@ SFC all=m sparc=n SFC_MTD all=y SFC_MCDI_MON all=y SFC_SRIOV all=y +SFC_MCDI_LOGGING all=y #- #- *** FILE: drivers/net/ethernet/silan/Kconfig *** @@ -4630,6 +4716,7 @@ IEEE802154_FAKELB all=m IEEE802154_AT86RF230 all=m IEEE802154_MRF24J40 all=m IEEE802154_CC2520 all=m +IEEE802154_ATUSB all=m #- #- *** FILE: drivers/net/irda/Kconfig *** @@ -4670,7 +4757,6 @@ PHYLIB all=y #- MII PHY device drivers AT803X_PHY all=m AMD_PHY all=m -AMD_XGBE_PHY all=m MARVELL_PHY all=m DAVICOM_PHY all=m QSEMI_PHY all=m @@ -4688,6 +4774,7 @@ NATIONAL_PHY all=m STE10XP all=m LSI_ET1011C_PHY all=m MICREL_PHY all=m +DP83867_PHY all=m FIXED_PHY all=y MDIO_BITBANG all=m MDIO_GPIO all=m @@ -4853,6 +4940,7 @@ MWL8K all=m #- file drivers/net/wireless/orinoco/Kconfig goes here #- file drivers/net/wireless/p54/Kconfig goes here #- file drivers/net/wireless/rt2x00/Kconfig goes here +#- file drivers/net/wireless/mediatek/Kconfig goes here #- file drivers/net/wireless/rtlwifi/Kconfig goes here #- file drivers/net/wireless/ti/Kconfig goes here #- file drivers/net/wireless/zd1211rw/Kconfig goes here @@ -5039,6 +5127,17 @@ LIBERTAS_SPI all=m LIBERTAS_DEBUG all=n LIBERTAS_MESH all=y +#- +#- *** FILE: drivers/net/wireless/mediatek/Kconfig *** +#- +WL_MEDIATEK all=y +#- file drivers/net/wireless/mediatek/mt7601u/Kconfig goes here + +#- +#- *** FILE: drivers/net/wireless/mediatek/mt7601u/Kconfig *** +#- +MT7601U all=m + #- #- *** FILE: drivers/net/wireless/mwifiex/Kconfig *** #- @@ -5177,7 +5276,7 @@ NFC_PORT100 all=m #- file drivers/nfc/microread/Kconfig goes here #- file drivers/nfc/nfcmrvl/Kconfig goes here #- file drivers/nfc/st21nfca/Kconfig goes here -#- file drivers/nfc/st21nfcb/Kconfig goes here +#- file drivers/nfc/st-nci/Kconfig goes here #- file drivers/nfc/nxp-nci/Kconfig goes here #- @@ -5192,6 +5291,7 @@ NFC_MICROREAD_MEI all=m #- NFC_MRVL all=m NFC_MRVL_USB all=m +NFC_MRVL_UART all=m #- #- *** FILE: drivers/nfc/nxp-nci/Kconfig *** @@ -5206,6 +5306,12 @@ NFC_PN544 all=m NFC_PN544_I2C all=m NFC_PN544_MEI all=m +#- +#- *** FILE: drivers/nfc/st-nci/Kconfig *** +#- +NFC_ST_NCI all=m +NFC_ST_NCI_I2C all=m + #- #- *** FILE: drivers/nfc/st21nfca/Kconfig *** #- @@ -5213,15 +5319,35 @@ NFC_ST21NFCA all=m NFC_ST21NFCA_I2C all=m #- -#- *** FILE: drivers/nfc/st21nfcb/Kconfig *** +#- *** FILE: drivers/ntb/Kconfig *** #- -NFC_ST21NFCB all=m -NFC_ST21NFCB_I2C all=m +NTB all=m +#- file drivers/ntb/hw/Kconfig goes here +#- file drivers/ntb/test/Kconfig goes here +NTB_TRANSPORT all=m #- -#- *** FILE: drivers/ntb/Kconfig *** +#- *** FILE: drivers/ntb/hw/intel/Kconfig *** #- -NTB all=m +NTB_INTEL all=m + +#- +#- *** FILE: drivers/ntb/test/Kconfig *** +#- +NTB_PINGPONG all=m +NTB_TOOL all=m + +#- +#- *** FILE: drivers/nvdimm/Kconfig *** +#- +BLK_DEV_PMEM all=m +ND_BLK all=m +BTT all=y + +#- +#- *** FILE: drivers/of/Kconfig *** +#- +OF all=n #- #- *** FILE: drivers/parisc/Kconfig *** @@ -5330,10 +5456,13 @@ PCCARD_NONSTATIC all=y #- GENERIC_PHY all=y PHY_EXYNOS_MIPI_VIDEO all=m +PHY_PXA_28NM_HSIC all=m +PHY_PXA_28NM_USB2 all=m OMAP_USB2 all=m TWL4030_USB all=m BCM_KONA_USB2_PHY all=m PHY_SAMSUNG_USB2 all=m +PHY_TUSB1210 all=m #- #- *** FILE: drivers/pinctrl/Kconfig *** @@ -5385,6 +5514,7 @@ DELL_LAPTOP all=m DELL_WMI all=m DELL_WMI_AIO all=m DELL_SMO8800 all=m +DELL_RBTN all=m FUJITSU_LAPTOP all=m FUJITSU_LAPTOP_DEBUG all=n FUJITSU_TABLET all=m @@ -5432,6 +5562,7 @@ APPLE_GMUX all=m INTEL_RST all=m INTEL_SMARTCONNECT all=m PVPANIC all=m +INTEL_PMC_IPC all=m #- #- *** FILE: drivers/pnp/Kconfig *** @@ -5494,11 +5625,14 @@ CHARGER_GPIO all=m CHARGER_MANAGER all=y CHARGER_BQ2415X all=m CHARGER_BQ24190 all=m +CHARGER_BQ24257 all=m CHARGER_BQ24735 all=m +CHARGER_BQ25890 all=m CHARGER_SMB347 all=m BATTERY_GAUGE_LTC2941 all=m AB8500_BM all=n BATTERY_GOLDFISH all=m +CHARGER_RT9455 all=m #- file drivers/power/reset/Kconfig goes here #- file drivers/power/avs/Kconfig goes here @@ -5616,6 +5750,7 @@ REGULATOR_PCAP all=m REGULATOR_PCF50633 all=m REGULATOR_PFUZE100 all=m REGULATOR_PWM all=m +REGULATOR_QCOM_SPMI all=m REGULATOR_RN5T618 all=m REGULATOR_SKY81452 all=m REGULATOR_TPS51632 all=m @@ -5650,8 +5785,9 @@ RESET_CONTROLLER all=y RTC_LIB all=y RTC_CLASS all=y RTC_HCTOSYS all=y -RTC_SYSTOHC all=y RTC_HCTOSYS_DEVICE all="rtc0" +RTC_SYSTOHC all=y +RTC_SYSTOHC_DEVICE all="rtc0" RTC_DEBUG all=n #- RTC interfaces RTC_INTF_SYSFS all=y @@ -5738,6 +5874,7 @@ RTC_DRV_PS3 ppc64=m RTC_DRV_PCAP all=m RTC_DRV_MC13XXX all=m RTC_DRV_MOXART all=m +RTC_DRV_MT6397 all=m RTC_DRV_XGENE all=m #- HID Sensor RTC drivers RTC_DRV_HID_SENSOR_TIME all=m @@ -5820,6 +5957,8 @@ LIBFC all=m LIBFCOE all=m FCOE all=m FCOE_FNIC all=m +SCSI_SNIC all=m +SCSI_SNIC_DEBUG_FS all=y SCSI_DMX3191D all=m SCSI_DTC3280 alpha=m i386=m SCSI_EATA all=m @@ -6073,6 +6212,7 @@ SPI_SC18IS602 all=m SPI_TOPCLIFF_PCH all=m SPI_XCOMM all=m SPI_XILINX all=m +SPI_ZYNQMP_GQSPI all=m SPI_DESIGNWARE all=y SPI_DW_PCI all=m SPI_DW_MID_DMA all=y @@ -6142,8 +6282,8 @@ STAGING all=y #- file drivers/staging/unisys/Kconfig goes here #- file drivers/staging/clocking-wizard/Kconfig goes here #- file drivers/staging/fbtft/Kconfig goes here -#- file drivers/staging/i2o/Kconfig goes here #- file drivers/staging/fsl-mc/Kconfig goes here +#- file drivers/staging/wilc1000/Kconfig goes here #- #- *** FILE: drivers/staging/comedi/Kconfig *** @@ -6268,6 +6408,7 @@ COMEDI_USBDUX all=m COMEDI_USBDUXFAST all=m COMEDI_USBDUXSIGMA all=m COMEDI_VMK80XX all=m +COMEDI_8255_SA all=m COMEDI_KCOMEDILIB all=m COMEDI_AMPLC_DIO200 all=m COMEDI_AMPLC_PC236 all=m @@ -6293,6 +6434,7 @@ FB_TFT_BD663474 all=m FB_TFT_HX8340BN all=m FB_TFT_HX8347D all=m FB_TFT_HX8353D all=m +FB_TFT_HX8357D all=m FB_TFT_ILI9163 all=m FB_TFT_ILI9320 all=m FB_TFT_ILI9325 all=m @@ -6352,20 +6494,6 @@ WIMAX_GDM72XX_USB_PM all=y #- GS_FPGABOOT all=m -#- -#- *** FILE: drivers/staging/i2o/Kconfig *** -#- -I2O all=m sparc=n -I2O_LCT_NOTIFY_ON_CHANGES all=y -I2O_EXT_ADAPTEC all=y -I2O_EXT_ADAPTEC_DMA64 all=y -I2O_CONFIG all=m sparc64=n -I2O_CONFIG_OLD_IOCTL all=y x86_64=n -I2O_BUS all=m -I2O_BLOCK all=m -I2O_SCSI all=m -I2O_PROC all=m - #- #- *** FILE: drivers/staging/iio/Kconfig *** #- @@ -6499,7 +6627,6 @@ STAGING_MEDIA all=y #- file drivers/staging/media/bcm2048/Kconfig goes here #- file drivers/staging/media/cxd2099/Kconfig goes here #- file drivers/staging/media/davinci_vpfe/Kconfig goes here -#- file drivers/staging/media/dt3155v4l/Kconfig goes here #- file drivers/staging/media/mn88472/Kconfig goes here #- file drivers/staging/media/mn88473/Kconfig goes here #- file drivers/staging/media/omap4iss/Kconfig goes here @@ -6515,13 +6642,6 @@ I2C_BCM2048 all=m #- DVB_CXD2099 all=m -#- -#- *** FILE: drivers/staging/media/dt3155v4l/Kconfig *** -#- -VIDEO_DT3155 all=m -DT3155_CCIR all=y -DT3155_STREAMING all=y - #- #- *** FILE: drivers/staging/media/lirc/Kconfig *** #- @@ -6655,42 +6775,18 @@ TOUCHSCREEN_SYNAPTICS_I2C_RMI4 all=m #- *** FILE: drivers/staging/unisys/Kconfig *** #- UNISYSSPAR all=y -#- file drivers/staging/unisys/visorutil/Kconfig goes here -#- file drivers/staging/unisys/visorchannel/Kconfig goes here -#- file drivers/staging/unisys/visorchipset/Kconfig goes here -#- file drivers/staging/unisys/uislib/Kconfig goes here -#- file drivers/staging/unisys/virtpci/Kconfig goes here -#- file drivers/staging/unisys/virthba/Kconfig goes here +#- file drivers/staging/unisys/visorbus/Kconfig goes here +#- file drivers/staging/unisys/visornic/Kconfig goes here #- -#- *** FILE: drivers/staging/unisys/uislib/Kconfig *** +#- *** FILE: drivers/staging/unisys/visorbus/Kconfig *** #- -UNISYS_UISLIB all=m +UNISYS_VISORBUS all=m #- -#- *** FILE: drivers/staging/unisys/virthba/Kconfig *** +#- *** FILE: drivers/staging/unisys/visornic/Kconfig *** #- -UNISYS_VIRTHBA all=m - -#- -#- *** FILE: drivers/staging/unisys/virtpci/Kconfig *** -#- -UNISYS_VIRTPCI all=m - -#- -#- *** FILE: drivers/staging/unisys/visorchannel/Kconfig *** -#- -UNISYS_VISORCHANNEL all=m - -#- -#- *** FILE: drivers/staging/unisys/visorchipset/Kconfig *** -#- -UNISYS_VISORCHIPSET all=m - -#- -#- *** FILE: drivers/staging/unisys/visorutil/Kconfig *** -#- -UNISYS_VISORUTIL all=m +UNISYS_VISORNIC all=m #- #- *** FILE: drivers/staging/vme/devices/Kconfig *** @@ -6756,12 +6852,15 @@ TCM_FC all=m #- *** FILE: drivers/thermal/Kconfig *** #- THERMAL all=y +THERMAL_WRITABLE_TRIPS all=y THERMAL_DEFAULT_GOV_STEP_WISE all=y THERMAL_DEFAULT_GOV_FAIR_SHARE all=n THERMAL_DEFAULT_GOV_USER_SPACE all=n +THERMAL_DEFAULT_GOV_POWER_ALLOCATOR all=n THERMAL_GOV_FAIR_SHARE all=y THERMAL_GOV_BANG_BANG all=y THERMAL_GOV_USER_SPACE all=y +THERMAL_GOV_POWER_ALLOCATOR all=y CPU_THERMAL all=y THERMAL_EMULATION all=n INTEL_POWERCLAMP all=m @@ -6811,7 +6910,6 @@ TRACE_SINK all=m HVC_DRIVER ppc64=y HVC_CONSOLE ppc64=n HVC_RTAS ppc=y ppc64=y -HVC_BEAT ppc64=n HVC_XEN all=y HVC_XEN_FRONTEND all=y HVC_UDBG all=n @@ -6876,6 +6974,8 @@ SERIAL_OF_PLATFORM ppc=m ppc64=m SERIAL_OF_PLATFORM_NWPSERIAL powerpc=m SERIAL_SCCNXP all=m SERIAL_SC16IS7XX all=m +SERIAL_SC16IS7XX_I2C all=y +SERIAL_SC16IS7XX_SPI all=y SERIAL_TIMBERDALE all=m SERIAL_ALTERA_JTAGUART all=m SERIAL_ALTERA_UART all=m @@ -6903,6 +7003,7 @@ UIO_AEC all=m UIO_SERCOS3 all=m UIO_PCI_GENERIC all=m UIO_NETX all=m +UIO_PRUSS all=m UIO_MF624 all=m #- @@ -6975,6 +7076,7 @@ USB_OTG all=y USB_OTG_WHITELIST all=y USB_OTG_BLACKLIST_HUB all=n USB_OTG_FSM all=m +USB_ULPI_BUS all=m #- #- *** FILE: drivers/usb/dwc2/Kconfig *** @@ -6988,6 +7090,7 @@ USB_DWC2_TRACK_MISSED_SOFS all=n #- *** FILE: drivers/usb/dwc3/Kconfig *** #- USB_DWC3 all=m +USB_DWC3_ULPI all=y USB_DWC3_HOST all=n USB_DWC3_GADGET all=n USB_DWC3_DUAL_ROLE all=y @@ -7347,6 +7450,7 @@ VFIO_PCI_INTX all=y #- VHOST_NET all=m VHOST_SCSI all=m +VHOST_CROSS_ENDIAN_LEGACY all=n #- #- *** FILE: drivers/video/Kconfig *** @@ -7666,6 +7770,7 @@ CADENCE_WATCHDOG all=m DW_WATCHDOG all=m RN5T618_WATCHDOG all=m TWL4030_WATCHDOG powerpc=m +MAX63XX_WATCHDOG all=m RETU_WATCHDOG all=m ACQUIRE_WDT i386=m x86_64=m ADVANTECH_WDT i386=m x86_64=m @@ -7766,7 +7871,6 @@ FS_MBCACHE all=m #- file fs/btrfs/Kconfig goes here #- file fs/nilfs2/Kconfig goes here #- file fs/f2fs/Kconfig goes here -#- file fs/aufs/Kconfig goes here FS_DAX all=y FS_POSIX_ACL all=y FILE_LOCKING all=y @@ -7815,6 +7919,7 @@ MISC_FILESYSTEMS all=y #- file fs/sysv/Kconfig goes here #- file fs/ufs/Kconfig goes here #- file fs/exofs/Kconfig goes here +#- file fs/aufs/Kconfig goes here #- file fs/exofs/Kconfig.ore goes here NETWORK_FILESYSTEMS all=y #- file fs/nfs/Kconfig goes here @@ -7921,6 +8026,7 @@ CIFS_DEBUG all=y CIFS_DEBUG2 all=n CIFS_DFS_UPCALL all=n CIFS_SMB2 all=y +CIFS_SMB311 all=y CIFS_FSCACHE all=y #- @@ -8002,6 +8108,7 @@ F2FS_FS_XATTR all=y F2FS_FS_POSIX_ACL all=y F2FS_FS_SECURITY all=y F2FS_CHECK_FS all=y +F2FS_FS_ENCRYPTION all=y F2FS_IO_TRACE all=y #- @@ -8261,6 +8368,7 @@ OVERLAY_FS all=m PROC_FS all=y PROC_KCORE all=y PROC_SYSCTL all=y +PROC_CHILDREN all=y #- #- *** FILE: fs/pstore/Kconfig *** @@ -8406,11 +8514,11 @@ TASK_DELAY_ACCT all=y TASK_XACCT all=y TASK_IO_ACCOUNTING all=y TREE_RCU all=y +RCU_EXPERT all=n TASKS_RCU all=n RCU_USER_QS all=n RCU_FANOUT all=32 alpha=64 ia64=64 ppc64=64 sparc64=64 x86_64=64 RCU_FANOUT_LEAF all=16 -RCU_FANOUT_EXACT all=n RCU_FAST_NO_HZ all=y RCU_KTHREAD_PRIO all=0 RCU_NOCB_CPU all=n @@ -8717,10 +8825,13 @@ DEBUG_NOTIFIERS all=n DEBUG_CREDENTIALS all=n SPARSE_RCU_POINTER all=n RCU_TORTURE_TEST all=m +RCU_TORTURE_TEST_SLOW_PREINIT all=n RCU_TORTURE_TEST_SLOW_INIT all=n +RCU_TORTURE_TEST_SLOW_CLEANUP all=n RCU_CPU_STALL_TIMEOUT all=60 RCU_CPU_STALL_INFO all=n RCU_TRACE all=n +RCU_EQS_DEBUG all=n DEBUG_BLOCK_EXT_DEVT all=n NOTIFIER_ERROR_INJECTION all=m CPU_NOTIFIER_ERROR_INJECT all=m @@ -8836,6 +8947,7 @@ ZBUD all=m ZSMALLOC all=y PGTABLE_MAPPING all=n ZSMALLOC_STAT all=y +DEFERRED_STRUCT_PAGE_INIT all=n #- #- *** FILE: mm/Kconfig.debug *** @@ -9164,7 +9276,7 @@ SYN_COOKIES all=y NET_IPVTI all=m NET_FOU all=m NET_FOU_IP_TUNNELS all=y -GENEVE all=m +GENEVE_CORE all=m INET_AH all=m INET_ESP all=m INET_IPCOMP all=m @@ -9191,6 +9303,7 @@ TCP_CONG_VENO all=m TCP_CONG_YEAH all=m TCP_CONG_ILLINOIS all=m TCP_CONG_DCTCP all=m +TCP_CONG_CDG all=m DEFAULT_BIC all=n DEFAULT_CUBIC all=y DEFAULT_HTCP all=n @@ -9385,6 +9498,7 @@ MPLS_ROUTING all=m #- #- *** FILE: net/netfilter/Kconfig *** #- +NETFILTER_INGRESS all=y NETFILTER_NETLINK_ACCT all=m NETFILTER_NETLINK_QUEUE all=m NETFILTER_NETLINK_LOG all=m @@ -9418,6 +9532,7 @@ NF_NAT all=m NF_NAT_REDIRECT all=m NF_TABLES all=m NF_TABLES_INET all=m +NF_TABLES_NETDEV all=m NFT_EXTHDR all=m NFT_META all=m NFT_CT all=m @@ -9595,6 +9710,7 @@ NFC_SHDLC all=y #- NFC_NCI all=m NFC_NCI_SPI all=y +NFC_NCI_UART all=m #- #- *** FILE: net/openvswitch/Kconfig *** @@ -9682,6 +9798,7 @@ NET_CLS_RSVP6 all=m NET_CLS_FLOW all=m NET_CLS_CGROUP all=y NET_CLS_BPF all=m +NET_CLS_FLOWER all=m NET_EMATCH all=y NET_EMATCH_STACK all=32 NET_EMATCH_CMP all=m @@ -9726,8 +9843,7 @@ SUNRPC all=m SUNRPC_GSS all=m RPCSEC_GSS_KRB5 all=m SUNRPC_DEBUG all=y -SUNRPC_XPRT_RDMA_CLIENT all=m -SUNRPC_XPRT_RDMA_SERVER all=m +SUNRPC_XPRT_RDMA all=m #- #- *** FILE: net/switchdev/Kconfig *** @@ -10006,6 +10122,11 @@ SND_SCS1X all=m SND_FIREWORKS all=m SND_BEBOB all=m +#- +#- *** FILE: sound/hda/Kconfig *** +#- +SND_HDA_PREALLOC_SIZE all=2048 + #- #- *** FILE: sound/isa/Kconfig *** #- @@ -10161,12 +10282,10 @@ SND_YMFPCI all=m #- *** FILE: sound/pci/hda/Kconfig *** #- SND_HDA_INTEL all=m sparc=n -SND_HDA_PREALLOC_SIZE all=2048 SND_HDA_HWDEP all=y SND_HDA_RECONFIG all=y SND_HDA_INPUT_BEEP all=y SND_HDA_INPUT_BEEP_MODE all=1 -SND_HDA_INPUT_JACK all=y SND_HDA_PATCH_LOADER all=y SND_HDA_CODEC_REALTEK all=m #- Set to Y if you want auto-loading the codec driver @@ -10229,6 +10348,7 @@ SND_SOC all=m #- file sound/soc/omap/Kconfig goes here #- file sound/soc/kirkwood/Kconfig goes here #- file sound/soc/intel/Kconfig goes here +#- file sound/soc/mediatek/Kconfig goes here #- file sound/soc/mxs/Kconfig goes here #- file sound/soc/pxa/Kconfig goes here #- file sound/soc/qcom/Kconfig goes here @@ -10241,6 +10361,7 @@ SND_SOC all=m #- file sound/soc/txx9/Kconfig goes here #- file sound/soc/ux500/Kconfig goes here #- file sound/soc/xtensa/Kconfig goes here +#- file sound/soc/zte/Kconfig goes here #- file sound/soc/codecs/Kconfig goes here #- file sound/soc/generic/Kconfig goes here @@ -10253,6 +10374,7 @@ SND_ATMEL_SOC all=m #- *** FILE: sound/soc/codecs/Kconfig *** #- SND_SOC_ALL_CODECS all=m +SND_SOC_AC97_CODEC all=m SND_SOC_ADAU1701 all=m SND_SOC_AK4104 all=m SND_SOC_AK4554 all=m @@ -10294,6 +10416,7 @@ SND_SOC_STA32X all=m SND_SOC_STA350 all=m SND_SOC_TAS2552 all=m SND_SOC_TAS5086 all=m +SND_SOC_TAS571X all=m SND_SOC_TFA9879 all=m SND_SOC_TLV320AIC23 all=m SND_SOC_TLV320AIC23_I2C all=m @@ -10365,6 +10488,7 @@ SND_SOC_INTEL_BROADWELL_MACH all=m SND_SOC_INTEL_BYTCR_RT5640_MACH all=m SND_SOC_INTEL_CHT_BSW_RT5672_MACH all=m SND_SOC_INTEL_CHT_BSW_RT5645_MACH all=m +SND_SOC_INTEL_CHT_BSW_MAX98090_TI_MACH all=m #- #- *** FILE: sound/soc/qcom/Kconfig *** @@ -10428,28 +10552,54 @@ RD_LZ4 all=y #- #- *** PROBABLY REMOVED OPTIONS *** #- +AMD_XGBE_PHY all=m ARM_AT91_ETHER all=m BLK_DEV_CELLEB ppc64=m BLK_DEV_XIP all=y +DT3155_CCIR all=y +DT3155_STREAMING all=y DWC3_HOST_USB3_LPM_ENABLE all=y EXT2_FS_XIP all=y FS_XIP all=y HID_HUION all=m +HVC_BEAT ppc64=n +I2O all=m sparc=n +I2O_BLOCK all=m +I2O_BUS all=m +I2O_CONFIG all=m sparc64=n +I2O_CONFIG_OLD_IOCTL all=y x86_64=n +I2O_EXT_ADAPTEC all=y +I2O_EXT_ADAPTEC_DMA64 all=y +I2O_LCT_NOTIFY_ON_CHANGES all=y +I2O_PROC all=m +I2O_SCSI all=m INIT_FALLBACK all=y INTEL_MID_DMAC all=m KEYS_DEBUG_PROC_KEYS all=n LINE6_USB all=m LINE6_USB_IMPULSE_RESPONSE all=n MEDIA_PARPORT_SUPPORT all=y +NFC_ST21NFCB all=m +NFC_ST21NFCB_I2C all=m PATA_SCC ppc64=m +RCU_FANOUT_EXACT all=n SERIAL_MFD_HSU all=m SERIAL_MRST_MAX3110 all=m +SND_HDA_INPUT_JACK all=y +SUNRPC_XPRT_RDMA_CLIENT all=m +SUNRPC_XPRT_RDMA_SERVER all=m TCG_ST33_I2C all=m TCG_TIS_I2C_ST33 all=m TCM_USER all=m TIPC_PORTS all=8191 TOUCHSCREEN_CLEARPAD_TM1217 all=m UNISYS_CHANNELSTUB all=m +UNISYS_UISLIB all=m +UNISYS_VIRTHBA all=m +UNISYS_VIRTPCI all=m +UNISYS_VISORCHANNEL all=m +UNISYS_VISORCHIPSET all=m +UNISYS_VISORUTIL all=m VIDEO_BTCX all=m sparc= VIDEO_BWQCAM all=m VIDEO_CQCAM all=m @@ -10457,3 +10607,4 @@ VIDEO_PMS all=m VIDEO_SAA7191 all=m VIDEO_TLG2300 all=m VIDEO_W9966 all=m +ZRAM_DEBUG all=n diff --git a/kernel-virtio-gl-accel.patch b/kernel-virtio-gl-accel.patch index 03fd0014..c539b578 100644 --- a/kernel-virtio-gl-accel.patch +++ b/kernel-virtio-gl-accel.patch @@ -52,7 +52,6 @@ index 0000000..8882bda + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ -+ +#include +#include +#include @@ -60,6 +59,7 @@ index 0000000..8882bda +#include +#include +#include ++#include +#include +#include +#include diff --git a/kernel.spec b/kernel.spec index 2d5f04c9..620a2e30 100644 --- a/kernel.spec +++ b/kernel.spec @@ -69,9 +69,9 @@ %define have_pcmcia 0 %endif -%define rel 1 -%define basever 4.1 -%define postver .8 +%define rel 0.1 +%define basever 4.2 +%define postver .1 # define this to '-%{basever}' for longterm branch %define versuffix -%{basever} @@ -117,10 +117,10 @@ Epoch: 3 License: GPL v2 Group: Base/Kernel Source0: http://www.kernel.org/pub/linux/kernel/v4.x/linux-%{basever}.tar.xz -# Source0-md5: fe9dc0f6729f36400ea81aa41d614c37 +# Source0-md5: 3d5ea06d767e2f35c999eeadafc76523 %if "%{postver}" != ".0" Patch0: http://www.kernel.org/pub/linux/kernel/v4.x/patch-%{version}.xz -# Patch0-md5: 8d941859273f8b3f7e0d7d6d14e3be91 +# Patch0-md5: 3e1cc007d930f8760ef0730609dca035 %endif Source1: kernel.sysconfig @@ -227,8 +227,8 @@ Patch2001: kernel-pwc-uncompress.patch Patch2003: kernel-regressions.patch Patch2004: kernel-libata-ahci-pm.patch -# bzr co lp:apparmor -# ls apparmor/kernel-patches/3.12 +# git://git.kernel.org/pub/scm/linux/kernel/git/jj/linux-apparmor +# branch v4.2-aa2.8-out-of-tree Patch5000: kernel-apparmor.patch # for rescuecd -- 2.44.0