From 86dc0f17c1c68e91d62ac309d107694860cbb711 Mon Sep 17 00:00:00 2001 From: V3n3RiX Date: Mon, 27 Aug 2018 12:00:43 +0100 Subject: sys-kernel/linux-{image,sources}-redcore : version bump --- .../files/uksm-for-linux-hardened.patch | 190 +++++++++++---------- 1 file changed, 98 insertions(+), 92 deletions(-) (limited to 'sys-kernel/linux-sources-redcore/files/uksm-for-linux-hardened.patch') diff --git a/sys-kernel/linux-sources-redcore/files/uksm-for-linux-hardened.patch b/sys-kernel/linux-sources-redcore/files/uksm-for-linux-hardened.patch index 733618de..d973274a 100644 --- a/sys-kernel/linux-sources-redcore/files/uksm-for-linux-hardened.patch +++ b/sys-kernel/linux-sources-redcore/files/uksm-for-linux-hardened.patch @@ -1,18 +1,20 @@ diff -Nur a/Documentation/vm/00-INDEX b/Documentation/vm/00-INDEX ---- a/Documentation/vm/00-INDEX 2018-04-08 13:29:52.000000000 +0100 -+++ b/Documentation/vm/00-INDEX 2018-04-11 22:47:44.597845750 +0100 -@@ -20,6 +20,8 @@ - - description of the idle page tracking feature. - ksm.txt +--- a/Documentation/vm/00-INDEX 2018-08-24 12:04:51.000000000 +0100 ++++ b/Documentation/vm/00-INDEX 2018-08-27 10:44:36.340467187 +0100 +@@ -18,7 +18,9 @@ + - explains what hwpoison is + ksm.rst - how to use the Kernel Samepage Merging feature. +-mmu_notifier.rst +uksm.txt + - Introduction to Ultra KSM - numa ++mmu_notifier.txt + - a note about clearing pte/pmd and mmu notifications + numa.rst - information about NUMA specific code in the Linux vm. - numa_memory_policy.txt diff -Nur a/Documentation/vm/uksm.txt b/Documentation/vm/uksm.txt --- a/Documentation/vm/uksm.txt 1970-01-01 01:00:00.000000000 +0100 -+++ b/Documentation/vm/uksm.txt 2018-04-11 22:47:44.597845750 +0100 ++++ b/Documentation/vm/uksm.txt 2018-08-27 10:44:36.340467187 +0100 @@ -0,0 +1,61 @@ +The Ultra Kernel Samepage Merging feature +---------------------------------------------- @@ -76,8 +78,8 @@ diff -Nur a/Documentation/vm/uksm.txt b/Documentation/vm/uksm.txt +2016-09-10 UKSM 0.1.2.5 Fix a bug in dedup ratio calculation. +2017-02-26 UKSM 0.1.2.6 Fix a bug in hugetlbpage handling and a race bug with page migration. diff -Nur a/fs/exec.c b/fs/exec.c ---- a/fs/exec.c 2018-04-11 22:44:55.743399844 +0100 -+++ b/fs/exec.c 2018-04-11 22:51:54.986922932 +0100 +--- a/fs/exec.c 2018-08-27 10:42:48.184976507 +0100 ++++ b/fs/exec.c 2018-08-27 10:47:39.413380371 +0100 @@ -63,6 +63,7 @@ #include #include @@ -86,7 +88,7 @@ diff -Nur a/fs/exec.c b/fs/exec.c #include #include -@@ -1377,6 +1378,7 @@ +@@ -1381,6 +1382,7 @@ /* An exec changes our domain. We are no longer part of the thread group */ current->self_exec_id++; @@ -95,9 +97,9 @@ diff -Nur a/fs/exec.c b/fs/exec.c } EXPORT_SYMBOL(setup_new_exec); diff -Nur a/fs/proc/meminfo.c b/fs/proc/meminfo.c ---- a/fs/proc/meminfo.c 2018-04-08 13:29:52.000000000 +0100 -+++ b/fs/proc/meminfo.c 2018-04-11 22:47:44.597845750 +0100 -@@ -118,6 +118,10 @@ +--- a/fs/proc/meminfo.c 2018-08-24 12:04:51.000000000 +0100 ++++ b/fs/proc/meminfo.c 2018-08-27 10:44:36.341467220 +0100 +@@ -105,6 +105,10 @@ global_zone_page_state(NR_KERNEL_STACK_KB)); show_val_kb(m, "PageTables: ", global_zone_page_state(NR_PAGETABLE)); @@ -109,9 +111,9 @@ diff -Nur a/fs/proc/meminfo.c b/fs/proc/meminfo.c show_val_kb(m, "Quicklists: ", quicklist_total_size()); #endif diff -Nur a/include/asm-generic/pgtable.h b/include/asm-generic/pgtable.h ---- a/include/asm-generic/pgtable.h 2018-04-08 13:29:52.000000000 +0100 -+++ b/include/asm-generic/pgtable.h 2018-04-11 22:47:44.598845782 +0100 -@@ -781,12 +781,25 @@ +--- a/include/asm-generic/pgtable.h 2018-08-24 12:04:51.000000000 +0100 ++++ b/include/asm-generic/pgtable.h 2018-08-27 10:44:36.341467220 +0100 +@@ -817,12 +817,25 @@ extern void untrack_pfn_moved(struct vm_area_struct *vma); #endif @@ -138,7 +140,7 @@ diff -Nur a/include/asm-generic/pgtable.h b/include/asm-generic/pgtable.h } #define my_zero_pfn(addr) page_to_pfn(ZERO_PAGE(addr)) -@@ -795,7 +808,7 @@ +@@ -831,7 +844,7 @@ static inline int is_zero_pfn(unsigned long pfn) { extern unsigned long zero_pfn; @@ -148,8 +150,8 @@ diff -Nur a/include/asm-generic/pgtable.h b/include/asm-generic/pgtable.h static inline unsigned long my_zero_pfn(unsigned long addr) diff -Nur a/include/linux/ksm.h b/include/linux/ksm.h ---- a/include/linux/ksm.h 2018-04-08 13:29:52.000000000 +0100 -+++ b/include/linux/ksm.h 2018-04-11 22:47:44.598845782 +0100 +--- a/include/linux/ksm.h 2018-08-24 12:04:51.000000000 +0100 ++++ b/include/linux/ksm.h 2018-08-27 10:44:36.341467220 +0100 @@ -21,21 +21,6 @@ #ifdef CONFIG_KSM int ksm_madvise(struct vm_area_struct *vma, unsigned long start, @@ -170,9 +172,9 @@ diff -Nur a/include/linux/ksm.h b/include/linux/ksm.h - __ksm_exit(mm); -} - static inline struct stable_node *page_stable_node(struct page *page) - { -@@ -65,6 +50,33 @@ + /* + * When do_swap_page() first faults in from swap what used to be a KSM page, +@@ -54,6 +39,46 @@ void rmap_walk_ksm(struct page *page, struct rmap_walk_control *rwc); void ksm_migrate_page(struct page *newpage, struct page *oldpage); @@ -201,12 +203,25 @@ diff -Nur a/include/linux/ksm.h b/include/linux/ksm.h +static inline void ksm_exit(struct mm_struct *mm) +{ +} ++ ++static inline void set_page_stable_node(struct page *page, ++ struct stable_node *stable_node) ++{ ++ page->mapping = (void *)((unsigned long)stable_node | PAGE_MAPPING_KSM); ++} ++ ++static inline struct stable_node *page_stable_node(struct page *page) ++{ ++ return PageKsm(page) ? page_rmapping(page) : NULL; ++} ++ ++ +#endif /* !CONFIG_UKSM */ + #else /* !CONFIG_KSM */ static inline int ksm_fork(struct mm_struct *mm, struct mm_struct *oldmm) -@@ -106,4 +118,6 @@ +@@ -89,4 +114,6 @@ #endif /* CONFIG_MMU */ #endif /* !CONFIG_KSM */ @@ -214,9 +229,9 @@ diff -Nur a/include/linux/ksm.h b/include/linux/ksm.h + #endif /* __LINUX_KSM_H */ diff -Nur a/include/linux/mm_types.h b/include/linux/mm_types.h ---- a/include/linux/mm_types.h 2018-04-08 13:29:52.000000000 +0100 -+++ b/include/linux/mm_types.h 2018-04-11 22:47:44.598845782 +0100 -@@ -333,6 +333,9 @@ +--- a/include/linux/mm_types.h 2018-08-24 12:04:51.000000000 +0100 ++++ b/include/linux/mm_types.h 2018-08-27 10:44:36.342467252 +0100 +@@ -320,6 +320,9 @@ struct mempolicy *vm_policy; /* NUMA policy for the VMA */ #endif struct vm_userfaultfd_ctx vm_userfaultfd_ctx; @@ -227,8 +242,8 @@ diff -Nur a/include/linux/mm_types.h b/include/linux/mm_types.h struct core_thread { diff -Nur a/include/linux/mmzone.h b/include/linux/mmzone.h ---- a/include/linux/mmzone.h 2018-04-08 13:29:52.000000000 +0100 -+++ b/include/linux/mmzone.h 2018-04-11 22:47:44.598845782 +0100 +--- a/include/linux/mmzone.h 2018-08-24 12:04:51.000000000 +0100 ++++ b/include/linux/mmzone.h 2018-08-27 10:44:36.342467252 +0100 @@ -148,6 +148,9 @@ NR_ZSPAGES, /* allocated in zsmalloc */ #endif @@ -239,7 +254,7 @@ diff -Nur a/include/linux/mmzone.h b/include/linux/mmzone.h NR_VM_ZONE_STAT_ITEMS }; enum node_stat_item { -@@ -866,7 +869,7 @@ +@@ -865,7 +868,7 @@ } /** @@ -250,7 +265,7 @@ diff -Nur a/include/linux/mmzone.h b/include/linux/mmzone.h * @zone - pointer to struct zone variable diff -Nur a/include/linux/sradix-tree.h b/include/linux/sradix-tree.h --- a/include/linux/sradix-tree.h 1970-01-01 01:00:00.000000000 +0100 -+++ b/include/linux/sradix-tree.h 2018-04-11 22:47:44.599845814 +0100 ++++ b/include/linux/sradix-tree.h 2018-08-27 10:44:36.343467284 +0100 @@ -0,0 +1,77 @@ +#ifndef _LINUX_SRADIX_TREE_H +#define _LINUX_SRADIX_TREE_H @@ -331,7 +346,7 @@ diff -Nur a/include/linux/sradix-tree.h b/include/linux/sradix-tree.h +#endif /* _LINUX_SRADIX_TREE_H */ diff -Nur a/include/linux/uksm.h b/include/linux/uksm.h --- a/include/linux/uksm.h 1970-01-01 01:00:00.000000000 +0100 -+++ b/include/linux/uksm.h 2018-04-11 22:47:44.599845814 +0100 ++++ b/include/linux/uksm.h 2018-08-27 10:44:36.343467284 +0100 @@ -0,0 +1,149 @@ +#ifndef __LINUX_UKSM_H +#define __LINUX_UKSM_H @@ -483,18 +498,9 @@ diff -Nur a/include/linux/uksm.h b/include/linux/uksm.h +#endif /* !CONFIG_UKSM */ +#endif /* __LINUX_UKSM_H */ diff -Nur a/kernel/fork.c b/kernel/fork.c ---- a/kernel/fork.c 2018-04-11 22:44:55.753400167 +0100 -+++ b/kernel/fork.c 2018-04-11 22:47:44.599845814 +0100 -@@ -453,7 +453,7 @@ - goto fail_nomem; - charge = len; - } -- tmp = kmem_cache_alloc(vm_area_cachep, GFP_KERNEL); -+ tmp = kmem_cache_zalloc(vm_area_cachep, GFP_KERNEL); - if (!tmp) - goto fail_nomem; - *tmp = *mpnt; -@@ -512,7 +512,7 @@ +--- a/kernel/fork.c 2018-08-27 10:42:48.208977282 +0100 ++++ b/kernel/fork.c 2018-08-27 10:44:36.344467317 +0100 +@@ -542,7 +542,7 @@ __vma_link_rb(mm, tmp, rb_link, rb_parent); rb_link = &tmp->vm_rb.rb_right; rb_parent = &tmp->vm_rb; @@ -504,20 +510,20 @@ diff -Nur a/kernel/fork.c b/kernel/fork.c if (!(tmp->vm_flags & VM_WIPEONFORK)) retval = copy_page_range(mm, oldmm, mpnt); diff -Nur a/lib/Makefile b/lib/Makefile ---- a/lib/Makefile 2018-04-08 13:29:52.000000000 +0100 -+++ b/lib/Makefile 2018-04-11 22:47:44.599845814 +0100 +--- a/lib/Makefile 2018-08-24 12:04:51.000000000 +0100 ++++ b/lib/Makefile 2018-08-27 10:44:36.344467317 +0100 @@ -18,7 +18,7 @@ KCOV_INSTRUMENT_dynamic_debug.o := n lib-y := ctype.o string.o vsprintf.o cmdline.o \ -- rbtree.o radix-tree.o dump_stack.o timerqueue.o\ -+ rbtree.o radix-tree.o sradix-tree.o dump_stack.o timerqueue.o\ +- rbtree.o radix-tree.o timerqueue.o\ ++ rbtree.o radix-tree.o sradix-tree.o timerqueue.o\ idr.o int_sqrt.o extable.o \ sha1.o chacha20.o irq_regs.o argv_split.o \ flex_proportions.o ratelimit.o show_mem.o \ diff -Nur a/lib/sradix-tree.c b/lib/sradix-tree.c --- a/lib/sradix-tree.c 1970-01-01 01:00:00.000000000 +0100 -+++ b/lib/sradix-tree.c 2018-04-11 22:47:44.600845846 +0100 ++++ b/lib/sradix-tree.c 2018-08-27 10:44:36.344467317 +0100 @@ -0,0 +1,476 @@ +#include +#include @@ -996,10 +1002,10 @@ diff -Nur a/lib/sradix-tree.c b/lib/sradix-tree.c + return 0; +} diff -Nur a/mm/Kconfig b/mm/Kconfig ---- a/mm/Kconfig 2018-04-11 22:44:55.761400426 +0100 -+++ b/mm/Kconfig 2018-04-11 22:47:44.600845846 +0100 -@@ -315,6 +315,32 @@ - See Documentation/vm/ksm.txt for more information: KSM is inactive +--- a/mm/Kconfig 2018-08-27 10:42:48.219977637 +0100 ++++ b/mm/Kconfig 2018-08-27 10:44:36.345467349 +0100 +@@ -308,6 +308,32 @@ + See Documentation/vm/ksm.rst for more information: KSM is inactive until a program has madvised that an area is MADV_MERGEABLE, and root has set /sys/kernel/mm/ksm/run to 1 (if CONFIG_SYSFS is set). +choice @@ -1032,8 +1038,8 @@ diff -Nur a/mm/Kconfig b/mm/Kconfig config DEFAULT_MMAP_MIN_ADDR int "Low address space to protect from user allocation" diff -Nur a/mm/Makefile b/mm/Makefile ---- a/mm/Makefile 2018-04-08 13:29:52.000000000 +0100 -+++ b/mm/Makefile 2018-04-11 22:47:44.600845846 +0100 +--- a/mm/Makefile 2018-08-24 12:04:51.000000000 +0100 ++++ b/mm/Makefile 2018-08-27 10:44:36.345467349 +0100 @@ -65,7 +65,8 @@ obj-$(CONFIG_SPARSEMEM_VMEMMAP) += sparse-vmemmap.o obj-$(CONFIG_SLOB) += slob.o @@ -1045,8 +1051,8 @@ diff -Nur a/mm/Makefile b/mm/Makefile obj-$(CONFIG_SLAB) += slab.o obj-$(CONFIG_SLUB) += slub.o diff -Nur a/mm/memory.c b/mm/memory.c ---- a/mm/memory.c 2018-04-08 13:29:52.000000000 +0100 -+++ b/mm/memory.c 2018-04-11 22:47:44.601845879 +0100 +--- a/mm/memory.c 2018-08-24 12:04:51.000000000 +0100 ++++ b/mm/memory.c 2018-08-27 10:44:36.346467381 +0100 @@ -128,6 +128,25 @@ unsigned long highest_memmap_pfn __read_mostly; @@ -1081,7 +1087,7 @@ diff -Nur a/mm/memory.c b/mm/memory.c #if defined(SPLIT_RSS_COUNTING) void sync_mm_rss(struct mm_struct *mm) -@@ -1039,6 +1059,9 @@ +@@ -1035,6 +1055,9 @@ get_page(page); page_dup_rmap(page, false); rss[mm_counter(page)]++; @@ -1091,7 +1097,7 @@ diff -Nur a/mm/memory.c b/mm/memory.c } else if (pte_devmap(pte)) { page = pte_page(pte); -@@ -1052,6 +1075,8 @@ +@@ -1048,6 +1071,8 @@ page_dup_rmap(page, false); rss[mm_counter(page)]++; } @@ -1100,7 +1106,7 @@ diff -Nur a/mm/memory.c b/mm/memory.c } out_set_pte: -@@ -1321,8 +1346,10 @@ +@@ -1317,8 +1342,10 @@ ptent = ptep_get_and_clear_full(mm, addr, pte, tlb->fullmm); tlb_remove_tlb_entry(tlb, pte, addr); @@ -1112,7 +1118,7 @@ diff -Nur a/mm/memory.c b/mm/memory.c if (!PageAnon(page)) { if (pte_dirty(ptent)) { -@@ -2336,8 +2363,10 @@ +@@ -2360,8 +2387,10 @@ clear_page(kaddr); kunmap_atomic(kaddr); flush_dcache_page(dst); @@ -1124,7 +1130,7 @@ diff -Nur a/mm/memory.c b/mm/memory.c } static gfp_t __get_fault_gfp_mask(struct vm_area_struct *vma) -@@ -2486,6 +2515,7 @@ +@@ -2510,6 +2539,7 @@ vmf->address); if (!new_page) goto oom; @@ -1132,7 +1138,7 @@ diff -Nur a/mm/memory.c b/mm/memory.c } else { new_page = alloc_page_vma(GFP_HIGHUSER_MOVABLE, vma, vmf->address); -@@ -2512,7 +2542,9 @@ +@@ -2536,7 +2566,9 @@ mm_counter_file(old_page)); inc_mm_counter_fast(mm, MM_ANONPAGES); } @@ -1143,8 +1149,8 @@ diff -Nur a/mm/memory.c b/mm/memory.c } flush_cache_page(vma, vmf->address, pte_pfn(vmf->orig_pte)); diff -Nur a/mm/mmap.c b/mm/mmap.c ---- a/mm/mmap.c 2018-04-11 22:44:55.762400458 +0100 -+++ b/mm/mmap.c 2018-04-11 22:47:44.602845911 +0100 +--- a/mm/mmap.c 2018-08-27 10:42:48.220977669 +0100 ++++ b/mm/mmap.c 2018-08-27 10:44:36.348467446 +0100 @@ -45,6 +45,7 @@ #include #include @@ -1153,15 +1159,15 @@ diff -Nur a/mm/mmap.c b/mm/mmap.c #include #include -@@ -173,6 +174,7 @@ +@@ -182,6 +183,7 @@ if (vma->vm_file) fput(vma->vm_file); mpol_put(vma_policy(vma)); + uksm_remove_vma(vma); - kmem_cache_free(vm_area_cachep, vma); + vm_area_free(vma); return next; } -@@ -699,9 +701,16 @@ +@@ -708,9 +710,16 @@ long adjust_next = 0; int remove_next = 0; @@ -1178,7 +1184,7 @@ diff -Nur a/mm/mmap.c b/mm/mmap.c if (end >= next->vm_end) { /* * vma expands, overlapping all the next, and -@@ -834,6 +843,7 @@ +@@ -843,6 +852,7 @@ end_changed = true; } vma->vm_pgoff = pgoff; @@ -1186,7 +1192,7 @@ diff -Nur a/mm/mmap.c b/mm/mmap.c if (adjust_next) { next->vm_start += adjust_next << PAGE_SHIFT; next->vm_pgoff += adjust_next; -@@ -939,6 +949,7 @@ +@@ -948,6 +958,7 @@ if (remove_next == 2) { remove_next = 1; end = next->vm_end; @@ -1194,7 +1200,7 @@ diff -Nur a/mm/mmap.c b/mm/mmap.c goto again; } else if (next) -@@ -965,10 +976,14 @@ +@@ -974,10 +985,14 @@ */ VM_WARN_ON(mm->highest_vm_end != vm_end_gap(vma)); } @@ -1209,7 +1215,7 @@ diff -Nur a/mm/mmap.c b/mm/mmap.c validate_mm(mm); return 0; -@@ -1385,6 +1400,9 @@ +@@ -1434,6 +1449,9 @@ vm_flags |= calc_vm_prot_bits(prot, pkey) | calc_vm_flag_bits(flags) | mm->def_flags | VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC; @@ -1219,7 +1225,7 @@ diff -Nur a/mm/mmap.c b/mm/mmap.c if (flags & MAP_LOCKED) if (!can_do_mlock()) return -EPERM; -@@ -1739,6 +1757,7 @@ +@@ -1798,6 +1816,7 @@ allow_write_access(file); } file = vma->vm_file; @@ -1227,15 +1233,15 @@ diff -Nur a/mm/mmap.c b/mm/mmap.c out: perf_event_mmap(vma); -@@ -1780,6 +1799,7 @@ +@@ -1839,6 +1858,7 @@ if (vm_flags & VM_DENYWRITE) allow_write_access(file); free_vma: + uksm_remove_vma(vma); - kmem_cache_free(vm_area_cachep, vma); + vm_area_free(vma); unacct_error: if (charged) -@@ -2604,6 +2624,8 @@ +@@ -2658,6 +2678,8 @@ else err = vma_adjust(vma, vma->vm_start, addr, vma->vm_pgoff, new); @@ -1244,7 +1250,7 @@ diff -Nur a/mm/mmap.c b/mm/mmap.c /* Success. */ if (!err) return 0; -@@ -2896,6 +2918,7 @@ +@@ -2943,6 +2965,7 @@ if ((flags & (~VM_EXEC)) != 0) return -EINVAL; flags |= VM_DATA_DEFAULT_FLAGS | VM_ACCOUNT | mm->def_flags; @@ -1252,7 +1258,7 @@ diff -Nur a/mm/mmap.c b/mm/mmap.c error = get_unmapped_area(NULL, addr, len, 0, MAP_FIXED); if (offset_in_page(error)) -@@ -2953,6 +2976,7 @@ +@@ -2999,6 +3022,7 @@ vma->vm_flags = flags; vma->vm_page_prot = vm_get_page_prot(flags); vma_link(mm, vma, prev, rb_link, rb_parent); @@ -1260,9 +1266,9 @@ diff -Nur a/mm/mmap.c b/mm/mmap.c out: perf_event_mmap(vma); mm->total_vm += len >> PAGE_SHIFT; -@@ -3004,6 +3028,12 @@ - /* mm's last user has gone, and its about to be pulled down */ - mmu_notifier_release(mm); +@@ -3078,6 +3102,12 @@ + up_write(&mm->mmap_sem); + } + /* + * Taking write lock on mmap_sem does not harm others, @@ -1273,7 +1279,7 @@ diff -Nur a/mm/mmap.c b/mm/mmap.c if (mm->locked_vm) { vma = mm->mmap; while (vma) { -@@ -3056,6 +3086,11 @@ +@@ -3112,6 +3142,11 @@ vma = remove_vma(vma); } vm_unacct_memory(nr_accounted); @@ -1285,7 +1291,7 @@ diff -Nur a/mm/mmap.c b/mm/mmap.c } /* Insert vm structure into process list sorted by address -@@ -3165,6 +3200,7 @@ +@@ -3219,6 +3254,7 @@ new_vma->vm_ops->open(new_vma); vma_link(mm, new_vma, prev, rb_link, rb_parent); *need_rmap_locks = false; @@ -1293,7 +1299,7 @@ diff -Nur a/mm/mmap.c b/mm/mmap.c } return new_vma; -@@ -3315,6 +3351,7 @@ +@@ -3369,6 +3405,7 @@ vm_stat_account(mm, vma->vm_flags, len >> PAGE_SHIFT); perf_event_mmap(vma); @@ -1302,9 +1308,9 @@ diff -Nur a/mm/mmap.c b/mm/mmap.c return vma; diff -Nur a/mm/rmap.c b/mm/rmap.c ---- a/mm/rmap.c 2018-04-08 13:29:52.000000000 +0100 -+++ b/mm/rmap.c 2018-04-11 22:47:44.602845911 +0100 -@@ -1016,9 +1016,9 @@ +--- a/mm/rmap.c 2018-08-24 12:04:51.000000000 +0100 ++++ b/mm/rmap.c 2018-08-27 10:44:36.348467446 +0100 +@@ -1017,9 +1017,9 @@ /** * __page_set_anon_rmap - set up new anonymous rmap @@ -1318,7 +1324,7 @@ diff -Nur a/mm/rmap.c b/mm/rmap.c static void __page_set_anon_rmap(struct page *page, diff -Nur a/mm/uksm.c b/mm/uksm.c --- a/mm/uksm.c 1970-01-01 01:00:00.000000000 +0100 -+++ b/mm/uksm.c 2018-04-11 22:47:44.605846008 +0100 ++++ b/mm/uksm.c 2018-08-27 10:44:36.351467543 +0100 @@ -0,0 +1,5584 @@ +/* + * Ultra KSM. Copyright (C) 2011-2012 Nai Xia @@ -6905,11 +6911,11 @@ diff -Nur a/mm/uksm.c b/mm/uksm.c +#endif + diff -Nur a/mm/vmstat.c b/mm/vmstat.c ---- a/mm/vmstat.c 2018-04-08 13:29:52.000000000 +0100 -+++ b/mm/vmstat.c 2018-04-11 22:47:44.606846040 +0100 -@@ -1162,6 +1162,9 @@ - "nr_dirtied", +--- a/mm/vmstat.c 2018-08-24 12:04:51.000000000 +0100 ++++ b/mm/vmstat.c 2018-08-27 10:44:36.352467575 +0100 +@@ -1163,6 +1163,9 @@ "nr_written", + "", /* nr_indirectly_reclaimable */ +#ifdef CONFIG_UKSM + "nr_uksm_zero_pages", -- cgit v1.2.3