diff options
Diffstat (limited to 'sys-kernel/linux-image-redcore-lts-legacy/files')
-rw-r--r-- | sys-kernel/linux-image-redcore-lts-legacy/files/4.19-linux-hardened.patch | 156 |
1 files changed, 80 insertions, 76 deletions
diff --git a/sys-kernel/linux-image-redcore-lts-legacy/files/4.19-linux-hardened.patch b/sys-kernel/linux-image-redcore-lts-legacy/files/4.19-linux-hardened.patch index 2f477148..fa3e9758 100644 --- a/sys-kernel/linux-image-redcore-lts-legacy/files/4.19-linux-hardened.patch +++ b/sys-kernel/linux-image-redcore-lts-legacy/files/4.19-linux-hardened.patch @@ -1,8 +1,8 @@ diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt -index 8bf0c0532046..c81c652ecf44 100644 +index 30752db57587..77f250bbcba7 100644 --- a/Documentation/admin-guide/kernel-parameters.txt +++ b/Documentation/admin-guide/kernel-parameters.txt -@@ -496,16 +496,6 @@ +@@ -500,16 +500,6 @@ nosocket -- Disable socket memory accounting. nokmem -- Disable kernel memory accounting. @@ -19,7 +19,7 @@ index 8bf0c0532046..c81c652ecf44 100644 cio_ignore= [S390] See Documentation/s390/CommonIO for details. clk_ignore_unused -@@ -3207,6 +3197,11 @@ +@@ -3211,6 +3201,11 @@ the specified number of seconds. This is to be used if your oopses keep scrolling off the screen. @@ -71,10 +71,10 @@ index 37a679501ddc..59b747920f4d 100644 The value in this file affects behavior of handling NMI. When the diff --git a/Makefile b/Makefile -index 313f0c8dd66f..8e66fca67fd0 100644 +index 605a6a2e03dc..2359c3d46cd4 100644 --- a/Makefile +++ b/Makefile -@@ -696,6 +696,9 @@ stackp-flags-$(CONFIG_STACKPROTECTOR_STRONG) := -fstack-protector-strong +@@ -686,6 +686,9 @@ stackp-flags-$(CONFIG_STACKPROTECTOR_STRONG) := -fstack-protector-strong KBUILD_CFLAGS += $(stackp-flags-y) ifeq ($(cc-name),clang) @@ -115,10 +115,10 @@ index a336548487e6..bbe821420e7a 100644 Enabling this switches the refcounting infrastructure from a fast unchecked atomic_t implementation to a fully state checked diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig -index 51fe21f5d078..f345755446d9 100644 +index 1fe3e5cb2927..7683d9c7d0dc 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig -@@ -1033,6 +1033,7 @@ endif +@@ -1049,6 +1049,7 @@ endif config ARM64_SW_TTBR0_PAN bool "Emulate Privileged Access Never using TTBR0_EL1 switching" @@ -126,7 +126,7 @@ index 51fe21f5d078..f345755446d9 100644 help Enabling this option prevents the kernel from accessing user-space memory directly by pointing TTBR0_EL1 to a reserved -@@ -1208,6 +1209,7 @@ config RANDOMIZE_BASE +@@ -1224,6 +1225,7 @@ config RANDOMIZE_BASE bool "Randomize the address of the kernel image" select ARM64_MODULE_PLTS if MODULES select RELOCATABLE @@ -403,10 +403,10 @@ index 79ec7add5f98..2950448e00ac 100644 native_write_cr4(cr4 ^ X86_CR4_PGE); /* write old PGE again and flush TLBs */ diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c -index a6458ab499c2..0be5291ec42e 100644 +index 2058e8c0e61d..820f8508aebb 100644 --- a/arch/x86/kernel/cpu/common.c +++ b/arch/x86/kernel/cpu/common.c -@@ -1790,7 +1790,6 @@ void cpu_init(void) +@@ -1824,7 +1824,6 @@ void cpu_init(void) wrmsrl(MSR_KERNEL_GS_BASE, 0); barrier(); @@ -415,7 +415,7 @@ index a6458ab499c2..0be5291ec42e 100644 /* diff --git a/arch/x86/kernel/process.c b/arch/x86/kernel/process.c -index b8b08e61ac73..42f763e0adf3 100644 +index cd138bfd926c..2a6d5617d55c 100644 --- a/arch/x86/kernel/process.c +++ b/arch/x86/kernel/process.c @@ -39,6 +39,8 @@ @@ -427,7 +427,7 @@ index b8b08e61ac73..42f763e0adf3 100644 #include "process.h" -@@ -783,7 +785,10 @@ unsigned long arch_align_stack(unsigned long sp) +@@ -775,7 +777,10 @@ unsigned long arch_align_stack(unsigned long sp) unsigned long arch_randomize_brk(struct mm_struct *mm) { @@ -567,10 +567,10 @@ index 15c1f5e12eb8..ff72cccec5b8 100644 struct list_head *cpu_list, local_list; diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c -index 75d582ca917f..38ba030b8e27 100644 +index 6b372fa58382..68c4f17e027f 100644 --- a/drivers/ata/libata-core.c +++ b/drivers/ata/libata-core.c -@@ -5161,7 +5161,7 @@ void ata_qc_free(struct ata_queued_cmd *qc) +@@ -5160,7 +5160,7 @@ void ata_qc_free(struct ata_queued_cmd *qc) struct ata_port *ap; unsigned int tag; @@ -579,7 +579,7 @@ index 75d582ca917f..38ba030b8e27 100644 ap = qc->ap; qc->flags = 0; -@@ -5178,7 +5178,7 @@ void __ata_qc_complete(struct ata_queued_cmd *qc) +@@ -5177,7 +5177,7 @@ void __ata_qc_complete(struct ata_queued_cmd *qc) struct ata_port *ap; struct ata_link *link; @@ -609,7 +609,7 @@ index 1df9cb8e659e..eb71148a4a69 100644 Say Y here if you want to support the /dev/port device. The /dev/port device is similar to /dev/mem, but for I/O ports. diff --git a/drivers/char/random.c b/drivers/char/random.c -index 53e822793d46..c97b295338ce 100644 +index d5f970d039bb..38f184022af7 100644 --- a/drivers/char/random.c +++ b/drivers/char/random.c @@ -281,11 +281,20 @@ @@ -961,10 +961,10 @@ index ac8025cd4a1f..a89e48f53fba 100644 return tty; } diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c -index 27486b0a027a..82689c97b660 100644 +index fa28f23a4a33..8a6c833ceefc 100644 --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c -@@ -43,6 +43,8 @@ +@@ -44,6 +44,8 @@ #define USB_TP_TRANSMISSION_DELAY 40 /* ns */ #define USB_TP_TRANSMISSION_DELAY_MAX 65535 /* ns */ @@ -973,7 +973,7 @@ index 27486b0a027a..82689c97b660 100644 /* Protect struct usb_device->state and ->children members * Note: Both are also protected by ->dev.sem, except that ->state can * change to USB_STATE_NOTATTACHED even when the semaphore isn't held. */ -@@ -4961,6 +4963,12 @@ static void hub_port_connect(struct usb_hub *hub, int port1, u16 portstatus, +@@ -4980,6 +4982,12 @@ static void hub_port_connect(struct usb_hub *hub, int port1, u16 portstatus, goto done; return; } @@ -1014,7 +1014,7 @@ index e5126fad57c5..2a59499ba24d 100644 inode->i_op = &simple_dir_inode_operations; inode->i_fop = &simple_dir_operations; diff --git a/fs/exec.c b/fs/exec.c -index 561ea64829ec..5d40794103eb 100644 +index cece8c14f377..6ba41b1f3a3f 100644 --- a/fs/exec.c +++ b/fs/exec.c @@ -62,6 +62,7 @@ @@ -1279,10 +1279,10 @@ index f640dcbc880c..2b4f5d651f19 100644 { return true; diff --git a/include/linux/fs.h b/include/linux/fs.h -index 92420009b9bc..9238f04686ce 100644 +index 8d568b51778b..d2ad90ecbf0c 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h -@@ -3468,4 +3468,15 @@ extern void inode_nohighmem(struct inode *inode); +@@ -3469,4 +3469,15 @@ extern void inode_nohighmem(struct inode *inode); extern int vfs_fadvise(struct file *file, loff_t offset, loff_t len, int advice); @@ -1392,7 +1392,7 @@ index 069aa2ebef90..cb9e3637a620 100644 const struct kobj_ns_type_operations *kobj_child_ns_ops(struct kobject *parent); const struct kobj_ns_type_operations *kobj_ns_ops(struct kobject *kobj); diff --git a/include/linux/mm.h b/include/linux/mm.h -index 45f10f5896b7..7f251a536293 100644 +index 05bc5f25ab85..dc590f056192 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -571,7 +571,7 @@ static inline int is_vmalloc_or_module_addr(const void *x) @@ -1512,10 +1512,10 @@ index 3a1a1dbc6f49..ff38fec9eb76 100644 /* * Defragmentation by allocating from a remote node. diff --git a/include/linux/string.h b/include/linux/string.h -index f58e1ef76572..516caa40676e 100644 +index 4db285b83f44..a479f93d59a4 100644 --- a/include/linux/string.h +++ b/include/linux/string.h -@@ -238,10 +238,16 @@ void __read_overflow2(void) __compiletime_error("detected read beyond size of ob +@@ -238,6 +238,12 @@ void __read_overflow2(void) __compiletime_error("detected read beyond size of ob void __read_overflow3(void) __compiletime_error("detected read beyond size of object passed as 3rd parameter"); void __write_overflow(void) __compiletime_error("detected write beyond size of object passed as 1st parameter"); @@ -1526,6 +1526,10 @@ index f58e1ef76572..516caa40676e 100644 +#endif + #if !defined(__NO_FORTIFY) && defined(__OPTIMIZE__) && defined(CONFIG_FORTIFY_SOURCE) + + #ifdef CONFIG_KASAN +@@ -266,7 +272,7 @@ extern char *__underlying_strncpy(char *p, const char *q, __kernel_size_t size) + __FORTIFY_INLINE char *strncpy(char *p, const char *q, __kernel_size_t size) { - size_t p_size = __builtin_object_size(p, 0); @@ -1533,16 +1537,16 @@ index f58e1ef76572..516caa40676e 100644 if (__builtin_constant_p(size) && p_size < size) __write_overflow(); if (p_size < size) -@@ -251,7 +257,7 @@ __FORTIFY_INLINE char *strncpy(char *p, const char *q, __kernel_size_t size) +@@ -276,7 +282,7 @@ __FORTIFY_INLINE char *strncpy(char *p, const char *q, __kernel_size_t size) __FORTIFY_INLINE char *strcat(char *p, const char *q) { - size_t p_size = __builtin_object_size(p, 0); + size_t p_size = __string_size(p); if (p_size == (size_t)-1) - return __builtin_strcat(p, q); + return __underlying_strcat(p, q); if (strlcat(p, q, p_size) >= p_size) -@@ -262,7 +268,7 @@ __FORTIFY_INLINE char *strcat(char *p, const char *q) +@@ -287,7 +293,7 @@ __FORTIFY_INLINE char *strcat(char *p, const char *q) __FORTIFY_INLINE __kernel_size_t strlen(const char *p) { __kernel_size_t ret; @@ -1551,7 +1555,7 @@ index f58e1ef76572..516caa40676e 100644 /* Work around gcc excess stack consumption issue */ if (p_size == (size_t)-1 || -@@ -277,7 +283,7 @@ __FORTIFY_INLINE __kernel_size_t strlen(const char *p) +@@ -302,7 +308,7 @@ __FORTIFY_INLINE __kernel_size_t strlen(const char *p) extern __kernel_size_t __real_strnlen(const char *, __kernel_size_t) __RENAME(strnlen); __FORTIFY_INLINE __kernel_size_t strnlen(const char *p, __kernel_size_t maxlen) { @@ -1560,7 +1564,7 @@ index f58e1ef76572..516caa40676e 100644 __kernel_size_t ret = __real_strnlen(p, maxlen < p_size ? maxlen : p_size); if (p_size <= ret && maxlen != ret) fortify_panic(__func__); -@@ -289,8 +295,8 @@ extern size_t __real_strlcpy(char *, const char *, size_t) __RENAME(strlcpy); +@@ -314,8 +320,8 @@ extern size_t __real_strlcpy(char *, const char *, size_t) __RENAME(strlcpy); __FORTIFY_INLINE size_t strlcpy(char *p, const char *q, size_t size) { size_t ret; @@ -1571,7 +1575,7 @@ index f58e1ef76572..516caa40676e 100644 if (p_size == (size_t)-1 && q_size == (size_t)-1) return __real_strlcpy(p, q, size); ret = strlen(q); -@@ -310,8 +316,8 @@ __FORTIFY_INLINE size_t strlcpy(char *p, const char *q, size_t size) +@@ -335,8 +341,8 @@ __FORTIFY_INLINE size_t strlcpy(char *p, const char *q, size_t size) __FORTIFY_INLINE char *strncat(char *p, const char *q, __kernel_size_t count) { size_t p_len, copy_len; @@ -1580,9 +1584,9 @@ index f58e1ef76572..516caa40676e 100644 + size_t p_size = __string_size(p); + size_t q_size = __string_size(q); if (p_size == (size_t)-1 && q_size == (size_t)-1) - return __builtin_strncat(p, q, count); + return __underlying_strncat(p, q, count); p_len = strlen(p); -@@ -424,8 +430,8 @@ __FORTIFY_INLINE void *kmemdup(const void *p, size_t size, gfp_t gfp) +@@ -449,8 +455,8 @@ __FORTIFY_INLINE void *kmemdup(const void *p, size_t size, gfp_t gfp) /* defined after fortified strlen and memcpy to reuse them */ __FORTIFY_INLINE char *strcpy(char *p, const char *q) { @@ -1591,10 +1595,10 @@ index f58e1ef76572..516caa40676e 100644 + size_t p_size = __string_size(p); + size_t q_size = __string_size(q); if (p_size == (size_t)-1 && q_size == (size_t)-1) - return __builtin_strcpy(p, q); + return __underlying_strcpy(p, q); memcpy(p, q, strlen(q) + 1); diff --git a/include/linux/tty.h b/include/linux/tty.h -index 248a137112e8..02a63bec41ca 100644 +index 74226a8f919c..a4280e6a318d 100644 --- a/include/linux/tty.h +++ b/include/linux/tty.h @@ -14,6 +14,7 @@ @@ -1623,7 +1627,7 @@ index 248a137112e8..02a63bec41ca 100644 #define TTY_MAGIC 0x5401 diff --git a/include/linux/vmalloc.h b/include/linux/vmalloc.h -index 398e9c95cd61..baab7195306a 100644 +index 206957b1b54d..17ec0860416b 100644 --- a/include/linux/vmalloc.h +++ b/include/linux/vmalloc.h @@ -69,19 +69,19 @@ static inline void vmalloc_init(void) @@ -1824,10 +1828,10 @@ index 47035b5a46f6..efbd3ac00d92 100644 default y depends on SLUB && SMP diff --git a/kernel/audit.c b/kernel/audit.c -index 1f08c38e604a..2c4f577a4317 100644 +index 45741c3c48a4..a2de0700ecd5 100644 --- a/kernel/audit.c +++ b/kernel/audit.c -@@ -1630,6 +1630,9 @@ static int __init audit_enable(char *str) +@@ -1641,6 +1641,9 @@ static int __init audit_enable(char *str) if (audit_default == AUDIT_OFF) audit_initialized = AUDIT_DISABLED; @@ -1851,7 +1855,7 @@ index 36be400c3e65..50fa38718408 100644 long bpf_jit_limit __read_mostly; diff --git a/kernel/bpf/syscall.c b/kernel/bpf/syscall.c -index 596959288eb9..fb76f46d61ce 100644 +index b766265cf37d..5b6af308d584 100644 --- a/kernel/bpf/syscall.c +++ b/kernel/bpf/syscall.c @@ -48,7 +48,7 @@ static DEFINE_SPINLOCK(prog_idr_lock); @@ -1881,10 +1885,10 @@ index 7718d7dcadc7..8a4ce459da0a 100644 /** diff --git a/kernel/events/core.c b/kernel/events/core.c -index 8c70ee23fbe9..7c45b1e38bc0 100644 +index a17e6302ded5..df052b42d1f0 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.c -@@ -397,8 +397,13 @@ static cpumask_var_t perf_online_mask; +@@ -402,8 +402,13 @@ static cpumask_var_t perf_online_mask; * 0 - disallow raw tracepoint access for unpriv * 1 - disallow cpu events for unpriv * 2 - disallow kernel profiling for unpriv @@ -1898,7 +1902,7 @@ index 8c70ee23fbe9..7c45b1e38bc0 100644 /* Minimum for 512 kiB + 1 user control page */ int sysctl_perf_event_mlock __read_mostly = 512 + (PAGE_SIZE / 1024); /* 'free' kiB per user */ -@@ -10529,6 +10534,9 @@ SYSCALL_DEFINE5(perf_event_open, +@@ -10544,6 +10549,9 @@ SYSCALL_DEFINE5(perf_event_open, if (flags & ~PERF_FLAG_ALL) return -EINVAL; @@ -1949,7 +1953,7 @@ index 1a2d18e98bf9..f3a8e3df2e12 100644 if (err) goto bad_unshare_out; diff --git a/kernel/kmod.c b/kernel/kmod.c -index bc6addd9152b..008be43f6cdd 100644 +index a2de58de6ab6..6dbfe38a1d7f 100644 --- a/kernel/kmod.c +++ b/kernel/kmod.c @@ -149,6 +149,13 @@ int __request_module(bool wait, const char *fmt, ...) @@ -2015,7 +2019,7 @@ index f7e89c989df7..527c170810fc 100644 struct rcu_state *rsp; diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c -index 86ccaaf0c1bf..f3103b3f1bb4 100644 +index 92b1e71f13c8..c385bc7b0cec 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -9719,7 +9719,7 @@ static int idle_balance(struct rq *this_rq, struct rq_flags *rf) @@ -2472,7 +2476,7 @@ index a98f09b83019..d1695e475b37 100644 goto set_brk; diff --git a/mm/page_alloc.c b/mm/page_alloc.c -index e5c610d711f3..12f96ff5ef0e 100644 +index 7181dfe76440..12e186c11c9a 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -66,6 +66,7 @@ @@ -2535,7 +2539,7 @@ index e5c610d711f3..12f96ff5ef0e 100644 page_zone(page)->managed_pages += nr_pages; set_page_refcounted(page); __free_pages(page, order); -@@ -1884,8 +1916,8 @@ static inline int check_new_page(struct page *page) +@@ -1880,8 +1912,8 @@ static inline int check_new_page(struct page *page) static inline bool free_pages_prezeroed(void) { @@ -2546,7 +2550,7 @@ index e5c610d711f3..12f96ff5ef0e 100644 } #ifdef CONFIG_DEBUG_VM -@@ -1942,6 +1974,11 @@ static void prep_new_page(struct page *page, unsigned int order, gfp_t gfp_flags +@@ -1938,6 +1970,11 @@ static void prep_new_page(struct page *page, unsigned int order, gfp_t gfp_flags post_alloc_hook(page, order, gfp_flags); @@ -2612,7 +2616,7 @@ index 9632772e14be..802ff9ee8172 100644 /* * Else we can use all the padding etc for the allocation diff --git a/mm/slab_common.c b/mm/slab_common.c -index 39e382acb0b8..a87a9a2fdf4e 100644 +index b5776b1301f0..8461504d8346 100644 --- a/mm/slab_common.c +++ b/mm/slab_common.c @@ -27,10 +27,10 @@ @@ -2638,7 +2642,7 @@ index 39e382acb0b8..a87a9a2fdf4e 100644 static int __init setup_slab_nomerge(char *str) { diff --git a/mm/slub.c b/mm/slub.c -index 9c3937c5ce38..6b063a76c419 100644 +index b94ba8d35a02..ca9d18891363 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -124,6 +124,16 @@ static inline int kmem_cache_debug(struct kmem_cache *s) @@ -2753,7 +2757,7 @@ index 9c3937c5ce38..6b063a76c419 100644 kasan_unpoison_object_data(s, object); s->ctor(object); kasan_poison_object_data(s, object); -@@ -2700,9 +2749,21 @@ static __always_inline void *slab_alloc_node(struct kmem_cache *s, +@@ -2708,9 +2757,21 @@ static __always_inline void *slab_alloc_node(struct kmem_cache *s, stat(s, ALLOC_FASTPATH); } @@ -2776,7 +2780,7 @@ index 9c3937c5ce38..6b063a76c419 100644 slab_post_alloc_hook(s, gfpflags, 1, &object); return object; -@@ -2909,6 +2970,27 @@ static __always_inline void do_slab_free(struct kmem_cache *s, +@@ -2917,6 +2978,27 @@ static __always_inline void do_slab_free(struct kmem_cache *s, void *tail_obj = tail ? : head; struct kmem_cache_cpu *c; unsigned long tid; @@ -2804,7 +2808,7 @@ index 9c3937c5ce38..6b063a76c419 100644 redo: /* * Determine the currently cpus per cpu slab. -@@ -3085,7 +3167,7 @@ int kmem_cache_alloc_bulk(struct kmem_cache *s, gfp_t flags, size_t size, +@@ -3095,7 +3177,7 @@ int kmem_cache_alloc_bulk(struct kmem_cache *s, gfp_t flags, size_t size, void **p) { struct kmem_cache_cpu *c; @@ -2813,7 +2817,7 @@ index 9c3937c5ce38..6b063a76c419 100644 /* memcg and kmem_cache debug support */ s = slab_pre_alloc_hook(s, flags); -@@ -3122,13 +3204,29 @@ int kmem_cache_alloc_bulk(struct kmem_cache *s, gfp_t flags, size_t size, +@@ -3141,13 +3223,29 @@ int kmem_cache_alloc_bulk(struct kmem_cache *s, gfp_t flags, size_t size, local_irq_enable(); /* Clear memory outside IRQ disabled fastpath loop */ @@ -2844,7 +2848,7 @@ index 9c3937c5ce38..6b063a76c419 100644 /* memcg and kmem_cache debug support */ slab_post_alloc_hook(s, flags, size, p); return i; -@@ -3160,9 +3258,9 @@ EXPORT_SYMBOL(kmem_cache_alloc_bulk); +@@ -3179,9 +3277,9 @@ EXPORT_SYMBOL(kmem_cache_alloc_bulk); * and increases the number of allocations possible without having to * take the list_lock. */ @@ -2857,7 +2861,7 @@ index 9c3937c5ce38..6b063a76c419 100644 /* * Calculate the order of allocation given an slab object size. -@@ -3334,6 +3432,7 @@ static void early_kmem_cache_node_alloc(int node) +@@ -3353,6 +3451,7 @@ static void early_kmem_cache_node_alloc(int node) init_object(kmem_cache_node, n, SLUB_RED_ACTIVE); init_tracking(kmem_cache_node, n); #endif @@ -2865,7 +2869,7 @@ index 9c3937c5ce38..6b063a76c419 100644 kasan_kmalloc(kmem_cache_node, n, sizeof(struct kmem_cache_node), GFP_KERNEL); init_kmem_cache_node(n); -@@ -3490,6 +3589,9 @@ static int calculate_sizes(struct kmem_cache *s, int forced_order) +@@ -3509,6 +3608,9 @@ static int calculate_sizes(struct kmem_cache *s, int forced_order) size += sizeof(void *); } @@ -2875,7 +2879,7 @@ index 9c3937c5ce38..6b063a76c419 100644 #ifdef CONFIG_SLUB_DEBUG if (flags & SLAB_STORE_USER) /* -@@ -3562,6 +3664,10 @@ static int kmem_cache_open(struct kmem_cache *s, slab_flags_t flags) +@@ -3581,6 +3683,10 @@ static int kmem_cache_open(struct kmem_cache *s, slab_flags_t flags) #ifdef CONFIG_SLAB_FREELIST_HARDENED s->random = get_random_long(); #endif @@ -2886,7 +2890,7 @@ index 9c3937c5ce38..6b063a76c419 100644 if (!calculate_sizes(s, -1)) goto error; -@@ -3838,6 +3944,8 @@ void __check_heap_object(const void *ptr, unsigned long n, struct page *page, +@@ -3857,6 +3963,8 @@ void __check_heap_object(const void *ptr, unsigned long n, struct page *page, offset -= s->red_left_pad; } @@ -2895,7 +2899,7 @@ index 9c3937c5ce38..6b063a76c419 100644 /* Allow address range falling entirely within usercopy region. */ if (offset >= s->useroffset && offset - s->useroffset <= s->usersize && -@@ -3871,7 +3979,11 @@ static size_t __ksize(const void *object) +@@ -3890,7 +3998,11 @@ static size_t __ksize(const void *object) page = virt_to_head_page(object); if (unlikely(!PageSlab(page))) { @@ -2907,7 +2911,7 @@ index 9c3937c5ce38..6b063a76c419 100644 return PAGE_SIZE << compound_order(page); } -@@ -4731,7 +4843,7 @@ enum slab_stat_type { +@@ -4750,7 +4862,7 @@ enum slab_stat_type { #define SO_TOTAL (1 << SL_TOTAL) #ifdef CONFIG_MEMCG @@ -2935,10 +2939,10 @@ index 45fdbfb6b2a6..55ec851eb819 100644 } diff --git a/net/core/dev.c b/net/core/dev.c -index c1a3baf16957..a6b3bba36e8a 100644 +index 4b1053057ca6..c0efe00432c3 100644 --- a/net/core/dev.c +++ b/net/core/dev.c -@@ -4536,7 +4536,7 @@ int netif_rx_ni(struct sk_buff *skb) +@@ -4533,7 +4533,7 @@ int netif_rx_ni(struct sk_buff *skb) } EXPORT_SYMBOL(netif_rx_ni); @@ -2947,7 +2951,7 @@ index c1a3baf16957..a6b3bba36e8a 100644 { struct softnet_data *sd = this_cpu_ptr(&softnet_data); -@@ -6304,7 +6304,7 @@ static int napi_poll(struct napi_struct *n, struct list_head *repoll) +@@ -6311,7 +6311,7 @@ static int napi_poll(struct napi_struct *n, struct list_head *repoll) return work; } @@ -2990,7 +2994,7 @@ index 6cec08cd0bb9..ffc74355a94d 100644 { .procname = "netdev_budget", diff --git a/net/ipv4/Kconfig b/net/ipv4/Kconfig -index 32cae39cdff6..9141d7ae99b2 100644 +index 2e12f848203a..4115419d5e35 100644 --- a/net/ipv4/Kconfig +++ b/net/ipv4/Kconfig @@ -266,6 +266,7 @@ config IP_PIMSM_V2 @@ -3069,10 +3073,10 @@ index 523d26f5e22e..10070b040661 100644 return igmpv3_send_report(in_dev, pmc); diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c -index 38b6d8f90a44..9c67d386df71 100644 +index 7441ecfc8320..662e902f48a4 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c -@@ -307,11 +307,13 @@ static void tcp_ecn_rcv_synack(struct tcp_sock *tp, const struct tcphdr *th) +@@ -308,11 +308,13 @@ static void tcp_ecn_rcv_synack(struct tcp_sock *tp, const struct tcphdr *th) tp->ecn_flags &= ~TCP_ECN_OK; } @@ -3086,7 +3090,7 @@ index 38b6d8f90a44..9c67d386df71 100644 static bool tcp_ecn_rcv_ecn_echo(const struct tcp_sock *tp, const struct tcphdr *th) { -@@ -5921,6 +5923,7 @@ static int tcp_rcv_synsent_state_process(struct sock *sk, struct sk_buff *skb, +@@ -5938,6 +5940,7 @@ static int tcp_rcv_synsent_state_process(struct sock *sk, struct sk_buff *skb, tcp_paws_reject(&tp->rx_opt, 0)) goto discard_and_undo; @@ -3094,7 +3098,7 @@ index 38b6d8f90a44..9c67d386df71 100644 if (th->syn) { /* We see SYN without ACK. It is attempt of * simultaneous connect with crossed SYNs. -@@ -5972,6 +5975,7 @@ static int tcp_rcv_synsent_state_process(struct sock *sk, struct sk_buff *skb, +@@ -5989,6 +5992,7 @@ static int tcp_rcv_synsent_state_process(struct sock *sk, struct sk_buff *skb, goto discard; #endif } @@ -3269,7 +3273,7 @@ index 6d14cbe443f8..4eeebbdc452e 100644 icmpv6_echo_reply(skb); break; diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c -index c5f4e89b6ff3..86375c9966ef 100644 +index 2e76ebfdc907..5f98b9f4b57d 100644 --- a/net/ipv6/tcp_ipv6.c +++ b/net/ipv6/tcp_ipv6.c @@ -71,6 +71,10 @@ @@ -3283,7 +3287,7 @@ index c5f4e89b6ff3..86375c9966ef 100644 static void tcp_v6_send_reset(const struct sock *sk, struct sk_buff *skb); static void tcp_v6_reqsk_send_ack(const struct sock *sk, struct sk_buff *skb, struct request_sock *req); -@@ -1356,6 +1360,10 @@ static int tcp_v6_do_rcv(struct sock *sk, struct sk_buff *skb) +@@ -1355,6 +1359,10 @@ static int tcp_v6_do_rcv(struct sock *sk, struct sk_buff *skb) return 0; reset: @@ -3294,7 +3298,7 @@ index c5f4e89b6ff3..86375c9966ef 100644 tcp_v6_send_reset(sk, skb); discard: if (opt_skb) -@@ -1453,6 +1461,27 @@ static int tcp_v6_rcv(struct sk_buff *skb) +@@ -1452,6 +1460,27 @@ static int tcp_v6_rcv(struct sk_buff *skb) if (!pskb_may_pull(skb, th->doff*4)) goto discard_it; @@ -3322,7 +3326,7 @@ index c5f4e89b6ff3..86375c9966ef 100644 if (skb_checksum_init(skb, IPPROTO_TCP, ip6_compute_pseudo)) goto csum_error; -@@ -1463,12 +1492,22 @@ static int tcp_v6_rcv(struct sk_buff *skb) +@@ -1462,12 +1491,22 @@ static int tcp_v6_rcv(struct sk_buff *skb) sk = __inet6_lookup_skb(&tcp_hashinfo, skb, __tcp_hdrlen(th), th->source, th->dest, inet6_iif(skb), sdif, &refcounted); @@ -3347,7 +3351,7 @@ index c5f4e89b6ff3..86375c9966ef 100644 if (sk->sk_state == TCP_NEW_SYN_RECV) { struct request_sock *req = inet_reqsk(sk); -@@ -1576,6 +1615,11 @@ static int tcp_v6_rcv(struct sk_buff *skb) +@@ -1575,6 +1614,11 @@ static int tcp_v6_rcv(struct sk_buff *skb) bad_packet: __TCP_INC_STATS(net, TCP_MIB_INERRS); } else { @@ -3765,7 +3769,7 @@ index 8af7a690eb40..6539694b0fd3 100644 - - If you are unsure how to answer this question, answer 0. diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c -index c574285966f9..667cca9fcd78 100644 +index 452254fd89f8..1822fa3bc0b3 100644 --- a/security/selinux/hooks.c +++ b/security/selinux/hooks.c @@ -135,18 +135,7 @@ __setup("selinux=", selinux_enabled_setup); @@ -3826,10 +3830,10 @@ index 96b27405558a..485c1b85c325 100644 This selects Yama, which extends DAC support with additional system-wide security settings beyond regular Linux discretionary diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c -index 4e499b78569b..55bba37f9517 100644 +index 1218ea663c6d..700f28148b4e 100644 --- a/virt/kvm/kvm_main.c +++ b/virt/kvm/kvm_main.c -@@ -618,6 +618,10 @@ static int kvm_create_vm_debugfs(struct kvm *kvm, int fd) +@@ -626,6 +626,10 @@ static int kvm_create_vm_debugfs(struct kvm *kvm, int fd) struct kvm_stat_data *stat_data; struct kvm_stats_debugfs_item *p; |