diff options
-rw-r--r-- | sys-kernel/linux-image-redcore/Manifest | 2 | ||||
-rw-r--r-- | sys-kernel/linux-image-redcore/files/5.11-amd_iommu_init_info.patch | 13 | ||||
-rw-r--r-- | sys-kernel/linux-image-redcore/files/5.11-linux-hardened.patch | 145 | ||||
-rw-r--r-- | sys-kernel/linux-image-redcore/linux-image-redcore-5.11.22.ebuild (renamed from sys-kernel/linux-image-redcore/linux-image-redcore-5.11.17.ebuild) | 1 | ||||
-rw-r--r-- | sys-kernel/linux-sources-redcore/Manifest | 2 | ||||
-rw-r--r-- | sys-kernel/linux-sources-redcore/files/5.11-amd_iommu_init_info.patch | 13 | ||||
-rw-r--r-- | sys-kernel/linux-sources-redcore/files/5.11-linux-hardened.patch | 145 | ||||
-rw-r--r-- | sys-kernel/linux-sources-redcore/linux-sources-redcore-5.11.22.ebuild (renamed from sys-kernel/linux-sources-redcore/linux-sources-redcore-5.11.17.ebuild) | 1 |
8 files changed, 160 insertions, 162 deletions
diff --git a/sys-kernel/linux-image-redcore/Manifest b/sys-kernel/linux-image-redcore/Manifest index 5a30db60..49b4a78a 100644 --- a/sys-kernel/linux-image-redcore/Manifest +++ b/sys-kernel/linux-image-redcore/Manifest @@ -1 +1 @@ -DIST linux-5.11.17.tar.xz 117653736 BLAKE2B 76226bb9e071620929fbdb4bc5ca08be1dab748dc337505ce9a377df0cf0612f6e57d0003bde3d312506a354d02fbc9f4e4be12269daa576969d52fabca13403 SHA512 105e7be115a50524f4bc535ae47ab556aff57e2c5329297b88b80bfabc236ffc0a85afaf26a25eb6e0a6db15528f8a077a312c449f4dc0c60b9648c68c5ba40b +DIST linux-5.11.22.tar.xz 117681288 BLAKE2B 21e1a7c6400c6997ec0a66a4ccd7c3789ad99e9319e8f412a5e26f44b309ca6581077f84fd17ebf265089956ed2625acce12d6d6d9f246690c6acd6b21279840 SHA512 1f61c1d9e2ed3095110105b6f33565343e762c7e5e5f9406a3a5884b78ca8ff8e31bb5da2880b45b92ca3adb0539dd69597791de87a41369cf77e325abfae35c diff --git a/sys-kernel/linux-image-redcore/files/5.11-amd_iommu_init_info.patch b/sys-kernel/linux-image-redcore/files/5.11-amd_iommu_init_info.patch deleted file mode 100644 index 8b17c2f6..00000000 --- a/sys-kernel/linux-image-redcore/files/5.11-amd_iommu_init_info.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/drivers/iommu/amd/init.c b/drivers/iommu/amd/init.c -index c652f16eb702..b52ea079d555 100644 ---- a/drivers/iommu/amd/init.c -+++ b/drivers/iommu/amd/init.c -@@ -1680,7 +1680,7 @@ static void init_iommu_perf_ctr(struct amd_iommu *iommu) - return; - - pc_false: -- pci_err(pdev, "Unable to read/write to IOMMU perf counter.\n"); -+ pci_info(pdev, "Unable to read/write to IOMMU perf counter.\n"); - amd_iommu_pc_present = false; - return; - } diff --git a/sys-kernel/linux-image-redcore/files/5.11-linux-hardened.patch b/sys-kernel/linux-image-redcore/files/5.11-linux-hardened.patch index 2fb3da83..7b733b3c 100644 --- a/sys-kernel/linux-image-redcore/files/5.11-linux-hardened.patch +++ b/sys-kernel/linux-image-redcore/files/5.11-linux-hardened.patch @@ -1,5 +1,5 @@ diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt -index a10b545c2070..b3c97490d872 100644 +index b537a9608895..8bd1293345f9 100644 --- a/Documentation/admin-guide/kernel-parameters.txt +++ b/Documentation/admin-guide/kernel-parameters.txt @@ -518,17 +518,6 @@ @@ -20,7 +20,7 @@ index a10b545c2070..b3c97490d872 100644 cio_ignore= [S390] See Documentation/s390/common_io.rst for details. clk_ignore_unused -@@ -3573,6 +3562,11 @@ +@@ -3574,6 +3563,11 @@ the specified number of seconds. This is to be used if your oopses keep scrolling off the screen. @@ -101,6 +101,19 @@ index 1b7f8debada6..05f722d7d065 100644 tcp_slow_start_after_idle - BOOLEAN If set, provide RFC2861 behavior and time out the congestion window after an idle period. An idle period is defined at +diff --git a/Makefile b/Makefile +index ff363cc6b11f..0f9ed687ebf6 100644 +--- a/Makefile ++++ b/Makefile +@@ -2,7 +2,7 @@ + VERSION = 5 + PATCHLEVEL = 11 + SUBLEVEL = 22 +-EXTRAVERSION = ++EXTRAVERSION = -hardened1 + NAME = 💕 Valentine's Day Edition 💕 + + # *DOCUMENTATION* diff --git a/arch/Kconfig b/arch/Kconfig index 24862d15f3a3..ea5030c6dc46 100644 --- a/arch/Kconfig @@ -188,10 +201,10 @@ index 8d1c8dcb87fd..32c1609a1158 100644 #ifdef __AARCH64EB__ diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig -index 21f851179ff0..258df85d5085 100644 +index 4960c6e1b082..a70cb1b4ebcc 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig -@@ -1196,8 +1196,7 @@ config VM86 +@@ -1197,8 +1197,7 @@ config VM86 default X86_LEGACY_VM86 config X86_16BIT @@ -201,7 +214,7 @@ index 21f851179ff0..258df85d5085 100644 depends on MODIFY_LDT_SYSCALL help This option is required by programs like Wine to run 16-bit -@@ -2316,7 +2315,7 @@ config COMPAT_VDSO +@@ -2317,7 +2316,7 @@ config COMPAT_VDSO choice prompt "vsyscall table for legacy applications" depends on X86_64 @@ -210,7 +223,7 @@ index 21f851179ff0..258df85d5085 100644 help Legacy user code that does not know how to find the vDSO expects to be able to issue three syscalls by calling fixed addresses in -@@ -2412,8 +2411,7 @@ config CMDLINE_OVERRIDE +@@ -2413,8 +2412,7 @@ config CMDLINE_OVERRIDE be set to 'N' under normal conditions. config MODIFY_LDT_SYSCALL @@ -340,7 +353,7 @@ index 66bdfe838d61..d7a51942f782 100644 -extern unsigned long align_vdso_addr(unsigned long); #endif /* _ASM_X86_ELF_H */ diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c -index 35ad8480c464..edaeeab9df4b 100644 +index 25148ebd3634..1a41d2c767a1 100644 --- a/arch/x86/kernel/cpu/common.c +++ b/arch/x86/kernel/cpu/common.c @@ -399,6 +399,7 @@ EXPORT_SYMBOL_GPL(native_write_cr4); @@ -468,7 +481,7 @@ index 569ac1d57f55..044d88da4aee 100644 native_write_cr4(cr4 ^ X86_CR4_PGE); /* write old PGE again and flush TLBs */ diff --git a/block/blk-mq.c b/block/blk-mq.c -index f285a9123a8b..93d6bfe33166 100644 +index 88c843fa8d13..cb000105ab46 100644 --- a/block/blk-mq.c +++ b/block/blk-mq.c @@ -571,7 +571,7 @@ EXPORT_SYMBOL(blk_mq_end_request); @@ -535,7 +548,7 @@ index e15cd6b5bb99..930be8d5d81d 100644 A pseudo terminal (PTY) is a software device consisting of two halves: a master and a slave. The slave device behaves identical to diff --git a/drivers/tty/tty_io.c b/drivers/tty/tty_io.c -index 5fd87941ac71..ca442c544a7b 100644 +index 51bc4e5a4020..4248568d2d0b 100644 --- a/drivers/tty/tty_io.c +++ b/drivers/tty/tty_io.c @@ -171,6 +171,7 @@ static void free_tty_struct(struct tty_struct *tty) @@ -587,7 +600,7 @@ index 18e874b0441e..fc7a3a9aa72a 100644 obj-$(CONFIG_USB) += usbcore.o diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c -index 7f71218cc1e5..b5992466936e 100644 +index 13fe37fbbd2c..438ca30f31f4 100644 --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c @@ -5115,6 +5115,12 @@ static void hub_port_connect(struct usb_hub *hub, int port1, u16 portstatus, @@ -794,10 +807,10 @@ index dd188c7996b3..f1f14808bc8f 100644 + + If unsure, say N. diff --git a/fs/overlayfs/super.c b/fs/overlayfs/super.c -index d58b8f2bf9d0..6e84b1cd4c4e 100644 +index ce274d4e6700..2fca35bda8c7 100644 --- a/fs/overlayfs/super.c +++ b/fs/overlayfs/super.c -@@ -2120,7 +2120,9 @@ static struct dentry *ovl_mount(struct file_system_type *fs_type, int flags, +@@ -2124,7 +2124,9 @@ static struct dentry *ovl_mount(struct file_system_type *fs_type, int flags, static struct file_system_type ovl_fs_type = { .owner = THIS_MODULE, .name = "overlay", @@ -820,7 +833,7 @@ index c930001056f9..6a0a51b3f593 100644 Exports the dump image of crashed kernel in ELF format. diff --git a/fs/stat.c b/fs/stat.c -index dacecdda2e79..14173d0f777d 100644 +index 1196af4d1ea0..4291a2c694e5 100644 --- a/fs/stat.c +++ b/fs/stat.c @@ -43,8 +43,13 @@ void generic_fillattr(struct inode *inode, struct kstat *stat) @@ -839,9 +852,9 @@ index dacecdda2e79..14173d0f777d 100644 stat->ctime = inode->i_ctime; stat->blksize = i_blocksize(inode); stat->blocks = inode->i_blocks; -@@ -83,9 +88,14 @@ int vfs_getattr_nosec(const struct path *path, struct kstat *stat, - if (IS_DAX(inode)) - stat->attributes |= STATX_ATTR_DAX; +@@ -91,9 +96,14 @@ int vfs_getattr_nosec(const struct path *path, struct kstat *stat, + stat->attributes_mask |= (STATX_ATTR_AUTOMOUNT | + STATX_ATTR_DAX); - if (inode->i_op->getattr) - return inode->i_op->getattr(path, stat, request_mask, @@ -1022,7 +1035,7 @@ index 2b5b64256cf4..8cdce21dce0f 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 992c18d5e85d..19d0c045a94c 100644 +index ad8395cf1262..c33dd29da690 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -775,7 +775,7 @@ static inline int is_vmalloc_or_module_addr(const void *x) @@ -1077,10 +1090,10 @@ index 5e76af742c80..9a6c682ec127 100644 extern phys_addr_t per_cpu_ptr_to_phys(void *addr); diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h -index 419a4d77de00..886b8a9b554e 100644 +index 7724c6842bea..b41be5819a85 100644 --- a/include/linux/perf_event.h +++ b/include/linux/perf_event.h -@@ -1316,6 +1316,14 @@ static inline int perf_is_paranoid(void) +@@ -1317,6 +1317,14 @@ static inline int perf_is_paranoid(void) return sysctl_perf_event_paranoid > -1; } @@ -1225,10 +1238,10 @@ index d6a41841b93e..f7f3d138b4e6 100644 #endif diff --git a/include/linux/user_namespace.h b/include/linux/user_namespace.h -index 64cf8ebdc4ec..bd29529ac188 100644 +index f6c5f784be5a..07d194f23587 100644 --- a/include/linux/user_namespace.h +++ b/include/linux/user_namespace.h -@@ -105,6 +105,8 @@ void dec_ucount(struct ucounts *ucounts, enum ucount_type type); +@@ -108,6 +108,8 @@ void dec_ucount(struct ucounts *ucounts, enum ucount_type type); #ifdef CONFIG_USER_NS @@ -1237,7 +1250,7 @@ index 64cf8ebdc4ec..bd29529ac188 100644 static inline struct user_namespace *get_user_ns(struct user_namespace *ns) { if (ns) -@@ -138,6 +140,8 @@ extern bool current_in_userns(const struct user_namespace *target_ns); +@@ -141,6 +143,8 @@ extern bool current_in_userns(const struct user_namespace *target_ns); struct ns_common *ns_get_owner(struct ns_common *ns); #else @@ -1486,7 +1499,7 @@ index de7eac903a2a..5602178f3d21 100644 /** diff --git a/kernel/events/core.c b/kernel/events/core.c -index 8425dbc1d239..7ce0ad5cead5 100644 +index 41bec6d7e06e..26dcc2352302 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.c @@ -410,8 +410,13 @@ static cpumask_var_t perf_online_mask; @@ -1503,7 +1516,7 @@ index 8425dbc1d239..7ce0ad5cead5 100644 /* Minimum for 512 kiB + 1 user control page */ int sysctl_perf_event_mlock __read_mostly = 512 + (PAGE_SIZE / 1024); /* 'free' kiB per user */ -@@ -11783,7 +11788,7 @@ SYSCALL_DEFINE5(perf_event_open, +@@ -11802,7 +11807,7 @@ SYSCALL_DEFINE5(perf_event_open, return -EINVAL; /* Do we allow access to perf_event_open(2) ? */ @@ -1562,10 +1575,10 @@ index aa897c3f2e92..d8976886fd68 100644 struct rcu_head *next, *list; unsigned long flags; diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c -index ce17b8477442..f586f36c2627 100644 +index e7d8a0d8ea7c..28f68c219bad 100644 --- a/kernel/rcu/tree.c +++ b/kernel/rcu/tree.c -@@ -2782,7 +2782,7 @@ static __latent_entropy void rcu_core(void) +@@ -2781,7 +2781,7 @@ static __latent_entropy void rcu_core(void) queue_work_on(rdp->cpu, rcu_gp_wq, &rdp->strict_work); } @@ -1575,10 +1588,10 @@ index ce17b8477442..f586f36c2627 100644 rcu_core(); } diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c -index bbc78794224a..bbe4843a2a30 100644 +index 10b8b133145d..b2009c0210b2 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c -@@ -10686,7 +10686,7 @@ static int newidle_balance(struct rq *this_rq, struct rq_flags *rf) +@@ -10708,7 +10708,7 @@ static int newidle_balance(struct rq *this_rq, struct rq_flags *rf) * run_rebalance_domains is triggered when needed from the scheduler tick. * Also triggered for nohz idle balancing (with nohz_balancing_kick set). */ @@ -1880,7 +1893,7 @@ index 8dbc008f8942..4fc9b8ece448 100644 struct timer_base *base = this_cpu_ptr(&timer_bases[BASE_STD]); diff --git a/kernel/user_namespace.c b/kernel/user_namespace.c -index af612945a4d0..95c54dae4aa1 100644 +index 9a4b980d695b..4388ca13ea3f 100644 --- a/kernel/user_namespace.c +++ b/kernel/user_namespace.c @@ -21,6 +21,13 @@ @@ -1991,7 +2004,7 @@ index ea53b30cf483..5343bbeea5f8 100644 enum kobj_ns_type type = ops->type; int error; diff --git a/lib/nlattr.c b/lib/nlattr.c -index 5b6116e81f9f..b26a8e43cf42 100644 +index 1d051ef66afe..4dd3c165d1da 100644 --- a/lib/nlattr.c +++ b/lib/nlattr.c @@ -790,6 +790,8 @@ int nla_memcpy(void *dest, const struct nlattr *src, int count) @@ -2004,7 +2017,7 @@ index 5b6116e81f9f..b26a8e43cf42 100644 if (count > minlen) memset(dest + minlen, 0, count - minlen); diff --git a/lib/vsprintf.c b/lib/vsprintf.c -index 3b53c73580c5..3490a316f52d 100644 +index 455f8271fd49..7c3a017827e5 100644 --- a/lib/vsprintf.c +++ b/lib/vsprintf.c @@ -821,7 +821,7 @@ static char *ptr_to_id(char *buf, char *end, const void *ptr, @@ -2061,7 +2074,7 @@ index dc7206032387..62fcbf1515bd 100644 mm->brk = brk; goto success; diff --git a/mm/page_alloc.c b/mm/page_alloc.c -index a723e81a5da2..5a9f4333c597 100644 +index d65d4481c40c..888061adc4a8 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -72,6 +72,7 @@ @@ -2088,7 +2101,7 @@ index a723e81a5da2..5a9f4333c597 100644 #ifdef CONFIG_GCC_PLUGIN_LATENT_ENTROPY volatile unsigned long latent_entropy __latent_entropy; EXPORT_SYMBOL(latent_entropy); -@@ -1548,6 +1558,25 @@ static void __free_pages_ok(struct page *page, unsigned int order, +@@ -1552,6 +1562,25 @@ static void __free_pages_ok(struct page *page, unsigned int order, local_irq_restore(flags); } @@ -2114,7 +2127,7 @@ index a723e81a5da2..5a9f4333c597 100644 void __free_pages_core(struct page *page, unsigned int order) { unsigned int nr_pages = 1 << order; -@@ -1567,7 +1596,6 @@ void __free_pages_core(struct page *page, unsigned int order) +@@ -1571,7 +1600,6 @@ void __free_pages_core(struct page *page, unsigned int order) } __ClearPageReserved(p); set_page_count(p, 0); @@ -2122,7 +2135,7 @@ index a723e81a5da2..5a9f4333c597 100644 atomic_long_add(nr_pages, &page_zone(page)->managed_pages); /* -@@ -1634,6 +1662,7 @@ void __init memblock_free_pages(struct page *page, unsigned long pfn, +@@ -1638,6 +1666,7 @@ void __init memblock_free_pages(struct page *page, unsigned long pfn, { if (early_page_uninitialised(pfn)) return; @@ -2130,7 +2143,7 @@ index a723e81a5da2..5a9f4333c597 100644 __free_pages_core(page, order); } -@@ -1725,6 +1754,7 @@ static void __init deferred_free_range(unsigned long pfn, +@@ -1729,6 +1758,7 @@ static void __init deferred_free_range(unsigned long pfn, if (nr_pages == pageblock_nr_pages && (pfn & (pageblock_nr_pages - 1)) == 0) { set_pageblock_migratetype(page, MIGRATE_MOVABLE); @@ -2138,7 +2151,7 @@ index a723e81a5da2..5a9f4333c597 100644 __free_pages_core(page, pageblock_order); return; } -@@ -1732,6 +1762,7 @@ static void __init deferred_free_range(unsigned long pfn, +@@ -1736,6 +1766,7 @@ static void __init deferred_free_range(unsigned long pfn, for (i = 0; i < nr_pages; i++, page++, pfn++) { if ((pfn & (pageblock_nr_pages - 1)) == 0) set_pageblock_migratetype(page, MIGRATE_MOVABLE); @@ -2146,7 +2159,7 @@ index a723e81a5da2..5a9f4333c597 100644 __free_pages_core(page, 0); } } -@@ -2300,6 +2331,12 @@ inline void post_alloc_hook(struct page *page, unsigned int order, +@@ -2304,6 +2335,12 @@ inline void post_alloc_hook(struct page *page, unsigned int order, kernel_unpoison_pages(page, 1 << order); set_page_owner(page, order, gfp_flags); @@ -2160,10 +2173,10 @@ index a723e81a5da2..5a9f4333c597 100644 kernel_init_free_pages(page, 1 << order); } diff --git a/mm/slab.h b/mm/slab.h -index 1a756a359fa8..45344c99be88 100644 +index 9e83616bb5b4..f70e037a96fc 100644 --- a/mm/slab.h +++ b/mm/slab.h -@@ -415,9 +415,13 @@ static inline struct kmem_cache *virt_to_cache(const void *obj) +@@ -413,9 +413,13 @@ static inline struct kmem_cache *virt_to_cache(const void *obj) struct page *page; page = virt_to_head_page(obj); @@ -2177,7 +2190,7 @@ index 1a756a359fa8..45344c99be88 100644 return page->slab_cache; } -@@ -447,10 +451,15 @@ static inline struct kmem_cache *cache_from_obj(struct kmem_cache *s, void *x) +@@ -445,10 +449,15 @@ static inline struct kmem_cache *cache_from_obj(struct kmem_cache *s, void *x) return s; cachep = virt_to_cache(x); @@ -2196,7 +2209,7 @@ index 1a756a359fa8..45344c99be88 100644 return cachep; } -@@ -475,7 +484,7 @@ static inline size_t slab_ksize(const struct kmem_cache *s) +@@ -473,7 +482,7 @@ static inline size_t slab_ksize(const struct kmem_cache *s) * back there or track user information then we can * only use the space before that information. */ @@ -2205,7 +2218,7 @@ index 1a756a359fa8..45344c99be88 100644 return s->inuse; /* * Else we can use all the padding etc for the allocation -@@ -598,8 +607,10 @@ static inline void cache_random_seq_destroy(struct kmem_cache *cachep) { } +@@ -596,8 +605,10 @@ static inline void cache_random_seq_destroy(struct kmem_cache *cachep) { } static inline bool slab_want_init_on_alloc(gfp_t flags, struct kmem_cache *c) { if (static_branch_unlikely(&init_on_alloc)) { @@ -2216,7 +2229,7 @@ index 1a756a359fa8..45344c99be88 100644 if (c->flags & (SLAB_TYPESAFE_BY_RCU | SLAB_POISON)) return flags & __GFP_ZERO; return true; -@@ -609,9 +620,15 @@ static inline bool slab_want_init_on_alloc(gfp_t flags, struct kmem_cache *c) +@@ -607,9 +618,15 @@ static inline bool slab_want_init_on_alloc(gfp_t flags, struct kmem_cache *c) static inline bool slab_want_init_on_free(struct kmem_cache *c) { @@ -2236,7 +2249,7 @@ index 1a756a359fa8..45344c99be88 100644 } diff --git a/mm/slab_common.c b/mm/slab_common.c -index 0b775cb5c108..fa125646c8b4 100644 +index 174d8652d9fe..a38704aff96b 100644 --- a/mm/slab_common.c +++ b/mm/slab_common.c @@ -31,10 +31,10 @@ @@ -2262,7 +2275,7 @@ index 0b775cb5c108..fa125646c8b4 100644 static int __init setup_slab_nomerge(char *str) { diff --git a/mm/slub.c b/mm/slub.c -index c86037b38253..67c6f3c930e3 100644 +index d62db41710bf..c2f4e0048dc9 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -127,6 +127,12 @@ static inline bool kmem_cache_debug(struct kmem_cache *s) @@ -2421,7 +2434,7 @@ index c86037b38253..67c6f3c930e3 100644 if (s->flags & SLAB_STORE_USER) /* We also have user information there */ off += 2 * sizeof(struct track); -@@ -1564,6 +1609,8 @@ static inline bool slab_free_freelist_hook(struct kmem_cache *s, +@@ -1561,6 +1606,8 @@ static inline bool slab_free_freelist_hook(struct kmem_cache *s, object = next; next = get_freepointer(s, object); @@ -2430,7 +2443,7 @@ index c86037b38253..67c6f3c930e3 100644 if (slab_want_init_on_free(s)) { /* * Clear the object and the metadata, but don't touch -@@ -1574,8 +1621,12 @@ static inline bool slab_free_freelist_hook(struct kmem_cache *s, +@@ -1571,8 +1618,12 @@ static inline bool slab_free_freelist_hook(struct kmem_cache *s, : 0; memset((char *)kasan_reset_tag(object) + s->inuse, 0, s->size - s->inuse - rsize); @@ -2444,7 +2457,7 @@ index c86037b38253..67c6f3c930e3 100644 /* If object's reuse doesn't have to be delayed */ if (!slab_free_hook(s, object)) { /* Move object to the new freelist */ -@@ -1583,6 +1634,18 @@ static inline bool slab_free_freelist_hook(struct kmem_cache *s, +@@ -1580,6 +1631,18 @@ static inline bool slab_free_freelist_hook(struct kmem_cache *s, *head = object; if (!*tail) *tail = object; @@ -2463,7 +2476,7 @@ index c86037b38253..67c6f3c930e3 100644 } } while (object != old_tail); -@@ -1596,8 +1659,9 @@ static void *setup_object(struct kmem_cache *s, struct page *page, +@@ -1593,8 +1656,9 @@ static void *setup_object(struct kmem_cache *s, struct page *page, void *object) { setup_object_debug(s, page, object); @@ -2474,7 +2487,7 @@ index c86037b38253..67c6f3c930e3 100644 kasan_unpoison_object_data(s, object); s->ctor(object); kasan_poison_object_data(s, object); -@@ -2886,8 +2950,28 @@ static __always_inline void *slab_alloc_node(struct kmem_cache *s, +@@ -2883,8 +2947,28 @@ static __always_inline void *slab_alloc_node(struct kmem_cache *s, maybe_wipe_obj_freeptr(s, object); @@ -2504,7 +2517,7 @@ index c86037b38253..67c6f3c930e3 100644 slab_post_alloc_hook(s, objcg, gfpflags, 1, &object); -@@ -3276,7 +3360,7 @@ int kmem_cache_alloc_bulk(struct kmem_cache *s, gfp_t flags, size_t size, +@@ -3273,7 +3357,7 @@ int kmem_cache_alloc_bulk(struct kmem_cache *s, gfp_t flags, size_t size, void **p) { struct kmem_cache_cpu *c; @@ -2513,7 +2526,7 @@ index c86037b38253..67c6f3c930e3 100644 struct obj_cgroup *objcg = NULL; /* memcg and kmem_cache debug support */ -@@ -3326,11 +3410,35 @@ int kmem_cache_alloc_bulk(struct kmem_cache *s, gfp_t flags, size_t size, +@@ -3323,11 +3407,35 @@ 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 */ @@ -2551,7 +2564,7 @@ index c86037b38253..67c6f3c930e3 100644 } /* memcg and kmem_cache debug support */ -@@ -3364,9 +3472,9 @@ EXPORT_SYMBOL(kmem_cache_alloc_bulk); +@@ -3361,9 +3469,9 @@ EXPORT_SYMBOL(kmem_cache_alloc_bulk); * and increases the number of allocations possible without having to * take the list_lock. */ @@ -2564,7 +2577,7 @@ index c86037b38253..67c6f3c930e3 100644 /* * Calculate the order of allocation given an slab object size. -@@ -3548,6 +3656,7 @@ static void early_kmem_cache_node_alloc(int node) +@@ -3545,6 +3653,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 @@ -2572,7 +2585,7 @@ index c86037b38253..67c6f3c930e3 100644 n = kasan_kmalloc(kmem_cache_node, n, sizeof(struct kmem_cache_node), GFP_KERNEL); page->freelist = get_freepointer(kmem_cache_node, n); -@@ -3728,6 +3837,9 @@ static int calculate_sizes(struct kmem_cache *s, int forced_order) +@@ -3725,6 +3834,9 @@ static int calculate_sizes(struct kmem_cache *s, int forced_order) s->offset = ALIGN(freepointer_area / 2, sizeof(void *)); } @@ -2582,7 +2595,7 @@ index c86037b38253..67c6f3c930e3 100644 #ifdef CONFIG_SLUB_DEBUG if (flags & SLAB_STORE_USER) /* -@@ -3801,6 +3913,10 @@ static int kmem_cache_open(struct kmem_cache *s, slab_flags_t flags) +@@ -3798,6 +3910,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 @@ -2593,7 +2606,7 @@ index c86037b38253..67c6f3c930e3 100644 if (!calculate_sizes(s, -1)) goto error; -@@ -4074,6 +4190,8 @@ void __check_heap_object(const void *ptr, unsigned long n, struct page *page, +@@ -4071,6 +4187,8 @@ void __check_heap_object(const void *ptr, unsigned long n, struct page *page, offset -= s->red_left_pad; } @@ -2602,7 +2615,7 @@ index c86037b38253..67c6f3c930e3 100644 /* Allow address range falling entirely within usercopy region. */ if (offset >= s->useroffset && offset - s->useroffset <= s->usersize && -@@ -4107,7 +4225,11 @@ size_t __ksize(const void *object) +@@ -4104,7 +4222,11 @@ size_t __ksize(const void *object) page = virt_to_head_page(object); if (unlikely(!PageSlab(page))) { @@ -2614,7 +2627,7 @@ index c86037b38253..67c6f3c930e3 100644 return page_size(page); } -@@ -4893,7 +5015,7 @@ enum slab_stat_type { +@@ -4890,7 +5012,7 @@ enum slab_stat_type { #define SO_TOTAL (1 << SL_TOTAL) #ifdef CONFIG_MEMCG @@ -2670,7 +2683,7 @@ index 8c9b7d1e7c49..b74af3a4435e 100644 unsigned long arch_mmap_rnd(void) diff --git a/net/core/dev.c b/net/core/dev.c -index 3c0d3b6d674d..93387bfaf741 100644 +index 633c2d6f1a35..ecfaa629f086 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -4879,7 +4879,7 @@ int netif_rx_any_context(struct sk_buff *skb) @@ -2980,7 +2993,7 @@ index 9b44caa4b956..e3a13782bb53 100644 * simultaneous connect with crossed SYNs. * Particularly, it can be connect to self. diff --git a/scripts/Makefile.modpost b/scripts/Makefile.modpost -index f54b6ac37ac2..e53b3057d4cb 100644 +index 12a87be0fb44..f4c69e330a53 100644 --- a/scripts/Makefile.modpost +++ b/scripts/Makefile.modpost @@ -47,6 +47,7 @@ MODPOST = scripts/mod/modpost \ @@ -3008,7 +3021,7 @@ index ab9eb4cbe33a..2870588ef733 100644 secure! diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c -index d6c81657d695..cabe8fb75532 100644 +index 5f9d8d9147d0..ff743ffd0948 100644 --- a/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c @@ -35,6 +35,8 @@ static int warn_unresolved = 0; @@ -3082,7 +3095,7 @@ index d6c81657d695..cabe8fb75532 100644 } fprintf(stderr, "\n"); } -@@ -2546,7 +2567,7 @@ int main(int argc, char **argv) +@@ -2533,7 +2554,7 @@ int main(int argc, char **argv) struct dump_list *dump_read_start = NULL; struct dump_list **dump_read_iter = &dump_read_start; @@ -3091,7 +3104,7 @@ index d6c81657d695..cabe8fb75532 100644 switch (opt) { case 'e': external_module = 1; -@@ -2557,6 +2578,9 @@ int main(int argc, char **argv) +@@ -2544,6 +2565,9 @@ int main(int argc, char **argv) (*dump_read_iter)->file = optarg; dump_read_iter = &(*dump_read_iter)->next; break; @@ -3101,7 +3114,7 @@ index d6c81657d695..cabe8fb75532 100644 case 'm': modversions = 1; break; -@@ -2655,6 +2679,11 @@ int main(int argc, char **argv) +@@ -2642,6 +2666,11 @@ int main(int argc, char **argv) } free(buf.p); diff --git a/sys-kernel/linux-image-redcore/linux-image-redcore-5.11.17.ebuild b/sys-kernel/linux-image-redcore/linux-image-redcore-5.11.22.ebuild index a63475f4..5175fe22 100644 --- a/sys-kernel/linux-image-redcore/linux-image-redcore-5.11.17.ebuild +++ b/sys-kernel/linux-image-redcore/linux-image-redcore-5.11.22.ebuild @@ -47,7 +47,6 @@ PATCHES=( "${FILESDIR}"/"${KV_MAJOR}"-bootconfig-fallthrough.patch "${FILESDIR}"/"${KV_MAJOR}"-apic_vector-spam-in-debug-mode-only.patch "${FILESDIR}"/"${KV_MAJOR}"-iwlwifi-fix-5e003982b07ae.patch - "${FILESDIR}"/"${KV_MAJOR}"-amd_iommu_init_info.patch "${FILESDIR}"/"${KV_MAJOR}"-0001-Revert-hwmon-k10temp-Remove-support-for-displaying-v.patch "${FILESDIR}"/"${KV_MAJOR}"-k10temp-fix-ZEN2-desktop-add-ZEN3-desktop.patch "${FILESDIR}"/"${KV_MAJOR}"-k10temp-add-Renoir-support.patch diff --git a/sys-kernel/linux-sources-redcore/Manifest b/sys-kernel/linux-sources-redcore/Manifest index 5a30db60..49b4a78a 100644 --- a/sys-kernel/linux-sources-redcore/Manifest +++ b/sys-kernel/linux-sources-redcore/Manifest @@ -1 +1 @@ -DIST linux-5.11.17.tar.xz 117653736 BLAKE2B 76226bb9e071620929fbdb4bc5ca08be1dab748dc337505ce9a377df0cf0612f6e57d0003bde3d312506a354d02fbc9f4e4be12269daa576969d52fabca13403 SHA512 105e7be115a50524f4bc535ae47ab556aff57e2c5329297b88b80bfabc236ffc0a85afaf26a25eb6e0a6db15528f8a077a312c449f4dc0c60b9648c68c5ba40b +DIST linux-5.11.22.tar.xz 117681288 BLAKE2B 21e1a7c6400c6997ec0a66a4ccd7c3789ad99e9319e8f412a5e26f44b309ca6581077f84fd17ebf265089956ed2625acce12d6d6d9f246690c6acd6b21279840 SHA512 1f61c1d9e2ed3095110105b6f33565343e762c7e5e5f9406a3a5884b78ca8ff8e31bb5da2880b45b92ca3adb0539dd69597791de87a41369cf77e325abfae35c diff --git a/sys-kernel/linux-sources-redcore/files/5.11-amd_iommu_init_info.patch b/sys-kernel/linux-sources-redcore/files/5.11-amd_iommu_init_info.patch deleted file mode 100644 index 8b17c2f6..00000000 --- a/sys-kernel/linux-sources-redcore/files/5.11-amd_iommu_init_info.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/drivers/iommu/amd/init.c b/drivers/iommu/amd/init.c -index c652f16eb702..b52ea079d555 100644 ---- a/drivers/iommu/amd/init.c -+++ b/drivers/iommu/amd/init.c -@@ -1680,7 +1680,7 @@ static void init_iommu_perf_ctr(struct amd_iommu *iommu) - return; - - pc_false: -- pci_err(pdev, "Unable to read/write to IOMMU perf counter.\n"); -+ pci_info(pdev, "Unable to read/write to IOMMU perf counter.\n"); - amd_iommu_pc_present = false; - return; - } diff --git a/sys-kernel/linux-sources-redcore/files/5.11-linux-hardened.patch b/sys-kernel/linux-sources-redcore/files/5.11-linux-hardened.patch index 2fb3da83..7b733b3c 100644 --- a/sys-kernel/linux-sources-redcore/files/5.11-linux-hardened.patch +++ b/sys-kernel/linux-sources-redcore/files/5.11-linux-hardened.patch @@ -1,5 +1,5 @@ diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt -index a10b545c2070..b3c97490d872 100644 +index b537a9608895..8bd1293345f9 100644 --- a/Documentation/admin-guide/kernel-parameters.txt +++ b/Documentation/admin-guide/kernel-parameters.txt @@ -518,17 +518,6 @@ @@ -20,7 +20,7 @@ index a10b545c2070..b3c97490d872 100644 cio_ignore= [S390] See Documentation/s390/common_io.rst for details. clk_ignore_unused -@@ -3573,6 +3562,11 @@ +@@ -3574,6 +3563,11 @@ the specified number of seconds. This is to be used if your oopses keep scrolling off the screen. @@ -101,6 +101,19 @@ index 1b7f8debada6..05f722d7d065 100644 tcp_slow_start_after_idle - BOOLEAN If set, provide RFC2861 behavior and time out the congestion window after an idle period. An idle period is defined at +diff --git a/Makefile b/Makefile +index ff363cc6b11f..0f9ed687ebf6 100644 +--- a/Makefile ++++ b/Makefile +@@ -2,7 +2,7 @@ + VERSION = 5 + PATCHLEVEL = 11 + SUBLEVEL = 22 +-EXTRAVERSION = ++EXTRAVERSION = -hardened1 + NAME = 💕 Valentine's Day Edition 💕 + + # *DOCUMENTATION* diff --git a/arch/Kconfig b/arch/Kconfig index 24862d15f3a3..ea5030c6dc46 100644 --- a/arch/Kconfig @@ -188,10 +201,10 @@ index 8d1c8dcb87fd..32c1609a1158 100644 #ifdef __AARCH64EB__ diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig -index 21f851179ff0..258df85d5085 100644 +index 4960c6e1b082..a70cb1b4ebcc 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig -@@ -1196,8 +1196,7 @@ config VM86 +@@ -1197,8 +1197,7 @@ config VM86 default X86_LEGACY_VM86 config X86_16BIT @@ -201,7 +214,7 @@ index 21f851179ff0..258df85d5085 100644 depends on MODIFY_LDT_SYSCALL help This option is required by programs like Wine to run 16-bit -@@ -2316,7 +2315,7 @@ config COMPAT_VDSO +@@ -2317,7 +2316,7 @@ config COMPAT_VDSO choice prompt "vsyscall table for legacy applications" depends on X86_64 @@ -210,7 +223,7 @@ index 21f851179ff0..258df85d5085 100644 help Legacy user code that does not know how to find the vDSO expects to be able to issue three syscalls by calling fixed addresses in -@@ -2412,8 +2411,7 @@ config CMDLINE_OVERRIDE +@@ -2413,8 +2412,7 @@ config CMDLINE_OVERRIDE be set to 'N' under normal conditions. config MODIFY_LDT_SYSCALL @@ -340,7 +353,7 @@ index 66bdfe838d61..d7a51942f782 100644 -extern unsigned long align_vdso_addr(unsigned long); #endif /* _ASM_X86_ELF_H */ diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c -index 35ad8480c464..edaeeab9df4b 100644 +index 25148ebd3634..1a41d2c767a1 100644 --- a/arch/x86/kernel/cpu/common.c +++ b/arch/x86/kernel/cpu/common.c @@ -399,6 +399,7 @@ EXPORT_SYMBOL_GPL(native_write_cr4); @@ -468,7 +481,7 @@ index 569ac1d57f55..044d88da4aee 100644 native_write_cr4(cr4 ^ X86_CR4_PGE); /* write old PGE again and flush TLBs */ diff --git a/block/blk-mq.c b/block/blk-mq.c -index f285a9123a8b..93d6bfe33166 100644 +index 88c843fa8d13..cb000105ab46 100644 --- a/block/blk-mq.c +++ b/block/blk-mq.c @@ -571,7 +571,7 @@ EXPORT_SYMBOL(blk_mq_end_request); @@ -535,7 +548,7 @@ index e15cd6b5bb99..930be8d5d81d 100644 A pseudo terminal (PTY) is a software device consisting of two halves: a master and a slave. The slave device behaves identical to diff --git a/drivers/tty/tty_io.c b/drivers/tty/tty_io.c -index 5fd87941ac71..ca442c544a7b 100644 +index 51bc4e5a4020..4248568d2d0b 100644 --- a/drivers/tty/tty_io.c +++ b/drivers/tty/tty_io.c @@ -171,6 +171,7 @@ static void free_tty_struct(struct tty_struct *tty) @@ -587,7 +600,7 @@ index 18e874b0441e..fc7a3a9aa72a 100644 obj-$(CONFIG_USB) += usbcore.o diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c -index 7f71218cc1e5..b5992466936e 100644 +index 13fe37fbbd2c..438ca30f31f4 100644 --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c @@ -5115,6 +5115,12 @@ static void hub_port_connect(struct usb_hub *hub, int port1, u16 portstatus, @@ -794,10 +807,10 @@ index dd188c7996b3..f1f14808bc8f 100644 + + If unsure, say N. diff --git a/fs/overlayfs/super.c b/fs/overlayfs/super.c -index d58b8f2bf9d0..6e84b1cd4c4e 100644 +index ce274d4e6700..2fca35bda8c7 100644 --- a/fs/overlayfs/super.c +++ b/fs/overlayfs/super.c -@@ -2120,7 +2120,9 @@ static struct dentry *ovl_mount(struct file_system_type *fs_type, int flags, +@@ -2124,7 +2124,9 @@ static struct dentry *ovl_mount(struct file_system_type *fs_type, int flags, static struct file_system_type ovl_fs_type = { .owner = THIS_MODULE, .name = "overlay", @@ -820,7 +833,7 @@ index c930001056f9..6a0a51b3f593 100644 Exports the dump image of crashed kernel in ELF format. diff --git a/fs/stat.c b/fs/stat.c -index dacecdda2e79..14173d0f777d 100644 +index 1196af4d1ea0..4291a2c694e5 100644 --- a/fs/stat.c +++ b/fs/stat.c @@ -43,8 +43,13 @@ void generic_fillattr(struct inode *inode, struct kstat *stat) @@ -839,9 +852,9 @@ index dacecdda2e79..14173d0f777d 100644 stat->ctime = inode->i_ctime; stat->blksize = i_blocksize(inode); stat->blocks = inode->i_blocks; -@@ -83,9 +88,14 @@ int vfs_getattr_nosec(const struct path *path, struct kstat *stat, - if (IS_DAX(inode)) - stat->attributes |= STATX_ATTR_DAX; +@@ -91,9 +96,14 @@ int vfs_getattr_nosec(const struct path *path, struct kstat *stat, + stat->attributes_mask |= (STATX_ATTR_AUTOMOUNT | + STATX_ATTR_DAX); - if (inode->i_op->getattr) - return inode->i_op->getattr(path, stat, request_mask, @@ -1022,7 +1035,7 @@ index 2b5b64256cf4..8cdce21dce0f 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 992c18d5e85d..19d0c045a94c 100644 +index ad8395cf1262..c33dd29da690 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -775,7 +775,7 @@ static inline int is_vmalloc_or_module_addr(const void *x) @@ -1077,10 +1090,10 @@ index 5e76af742c80..9a6c682ec127 100644 extern phys_addr_t per_cpu_ptr_to_phys(void *addr); diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h -index 419a4d77de00..886b8a9b554e 100644 +index 7724c6842bea..b41be5819a85 100644 --- a/include/linux/perf_event.h +++ b/include/linux/perf_event.h -@@ -1316,6 +1316,14 @@ static inline int perf_is_paranoid(void) +@@ -1317,6 +1317,14 @@ static inline int perf_is_paranoid(void) return sysctl_perf_event_paranoid > -1; } @@ -1225,10 +1238,10 @@ index d6a41841b93e..f7f3d138b4e6 100644 #endif diff --git a/include/linux/user_namespace.h b/include/linux/user_namespace.h -index 64cf8ebdc4ec..bd29529ac188 100644 +index f6c5f784be5a..07d194f23587 100644 --- a/include/linux/user_namespace.h +++ b/include/linux/user_namespace.h -@@ -105,6 +105,8 @@ void dec_ucount(struct ucounts *ucounts, enum ucount_type type); +@@ -108,6 +108,8 @@ void dec_ucount(struct ucounts *ucounts, enum ucount_type type); #ifdef CONFIG_USER_NS @@ -1237,7 +1250,7 @@ index 64cf8ebdc4ec..bd29529ac188 100644 static inline struct user_namespace *get_user_ns(struct user_namespace *ns) { if (ns) -@@ -138,6 +140,8 @@ extern bool current_in_userns(const struct user_namespace *target_ns); +@@ -141,6 +143,8 @@ extern bool current_in_userns(const struct user_namespace *target_ns); struct ns_common *ns_get_owner(struct ns_common *ns); #else @@ -1486,7 +1499,7 @@ index de7eac903a2a..5602178f3d21 100644 /** diff --git a/kernel/events/core.c b/kernel/events/core.c -index 8425dbc1d239..7ce0ad5cead5 100644 +index 41bec6d7e06e..26dcc2352302 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.c @@ -410,8 +410,13 @@ static cpumask_var_t perf_online_mask; @@ -1503,7 +1516,7 @@ index 8425dbc1d239..7ce0ad5cead5 100644 /* Minimum for 512 kiB + 1 user control page */ int sysctl_perf_event_mlock __read_mostly = 512 + (PAGE_SIZE / 1024); /* 'free' kiB per user */ -@@ -11783,7 +11788,7 @@ SYSCALL_DEFINE5(perf_event_open, +@@ -11802,7 +11807,7 @@ SYSCALL_DEFINE5(perf_event_open, return -EINVAL; /* Do we allow access to perf_event_open(2) ? */ @@ -1562,10 +1575,10 @@ index aa897c3f2e92..d8976886fd68 100644 struct rcu_head *next, *list; unsigned long flags; diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c -index ce17b8477442..f586f36c2627 100644 +index e7d8a0d8ea7c..28f68c219bad 100644 --- a/kernel/rcu/tree.c +++ b/kernel/rcu/tree.c -@@ -2782,7 +2782,7 @@ static __latent_entropy void rcu_core(void) +@@ -2781,7 +2781,7 @@ static __latent_entropy void rcu_core(void) queue_work_on(rdp->cpu, rcu_gp_wq, &rdp->strict_work); } @@ -1575,10 +1588,10 @@ index ce17b8477442..f586f36c2627 100644 rcu_core(); } diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c -index bbc78794224a..bbe4843a2a30 100644 +index 10b8b133145d..b2009c0210b2 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c -@@ -10686,7 +10686,7 @@ static int newidle_balance(struct rq *this_rq, struct rq_flags *rf) +@@ -10708,7 +10708,7 @@ static int newidle_balance(struct rq *this_rq, struct rq_flags *rf) * run_rebalance_domains is triggered when needed from the scheduler tick. * Also triggered for nohz idle balancing (with nohz_balancing_kick set). */ @@ -1880,7 +1893,7 @@ index 8dbc008f8942..4fc9b8ece448 100644 struct timer_base *base = this_cpu_ptr(&timer_bases[BASE_STD]); diff --git a/kernel/user_namespace.c b/kernel/user_namespace.c -index af612945a4d0..95c54dae4aa1 100644 +index 9a4b980d695b..4388ca13ea3f 100644 --- a/kernel/user_namespace.c +++ b/kernel/user_namespace.c @@ -21,6 +21,13 @@ @@ -1991,7 +2004,7 @@ index ea53b30cf483..5343bbeea5f8 100644 enum kobj_ns_type type = ops->type; int error; diff --git a/lib/nlattr.c b/lib/nlattr.c -index 5b6116e81f9f..b26a8e43cf42 100644 +index 1d051ef66afe..4dd3c165d1da 100644 --- a/lib/nlattr.c +++ b/lib/nlattr.c @@ -790,6 +790,8 @@ int nla_memcpy(void *dest, const struct nlattr *src, int count) @@ -2004,7 +2017,7 @@ index 5b6116e81f9f..b26a8e43cf42 100644 if (count > minlen) memset(dest + minlen, 0, count - minlen); diff --git a/lib/vsprintf.c b/lib/vsprintf.c -index 3b53c73580c5..3490a316f52d 100644 +index 455f8271fd49..7c3a017827e5 100644 --- a/lib/vsprintf.c +++ b/lib/vsprintf.c @@ -821,7 +821,7 @@ static char *ptr_to_id(char *buf, char *end, const void *ptr, @@ -2061,7 +2074,7 @@ index dc7206032387..62fcbf1515bd 100644 mm->brk = brk; goto success; diff --git a/mm/page_alloc.c b/mm/page_alloc.c -index a723e81a5da2..5a9f4333c597 100644 +index d65d4481c40c..888061adc4a8 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -72,6 +72,7 @@ @@ -2088,7 +2101,7 @@ index a723e81a5da2..5a9f4333c597 100644 #ifdef CONFIG_GCC_PLUGIN_LATENT_ENTROPY volatile unsigned long latent_entropy __latent_entropy; EXPORT_SYMBOL(latent_entropy); -@@ -1548,6 +1558,25 @@ static void __free_pages_ok(struct page *page, unsigned int order, +@@ -1552,6 +1562,25 @@ static void __free_pages_ok(struct page *page, unsigned int order, local_irq_restore(flags); } @@ -2114,7 +2127,7 @@ index a723e81a5da2..5a9f4333c597 100644 void __free_pages_core(struct page *page, unsigned int order) { unsigned int nr_pages = 1 << order; -@@ -1567,7 +1596,6 @@ void __free_pages_core(struct page *page, unsigned int order) +@@ -1571,7 +1600,6 @@ void __free_pages_core(struct page *page, unsigned int order) } __ClearPageReserved(p); set_page_count(p, 0); @@ -2122,7 +2135,7 @@ index a723e81a5da2..5a9f4333c597 100644 atomic_long_add(nr_pages, &page_zone(page)->managed_pages); /* -@@ -1634,6 +1662,7 @@ void __init memblock_free_pages(struct page *page, unsigned long pfn, +@@ -1638,6 +1666,7 @@ void __init memblock_free_pages(struct page *page, unsigned long pfn, { if (early_page_uninitialised(pfn)) return; @@ -2130,7 +2143,7 @@ index a723e81a5da2..5a9f4333c597 100644 __free_pages_core(page, order); } -@@ -1725,6 +1754,7 @@ static void __init deferred_free_range(unsigned long pfn, +@@ -1729,6 +1758,7 @@ static void __init deferred_free_range(unsigned long pfn, if (nr_pages == pageblock_nr_pages && (pfn & (pageblock_nr_pages - 1)) == 0) { set_pageblock_migratetype(page, MIGRATE_MOVABLE); @@ -2138,7 +2151,7 @@ index a723e81a5da2..5a9f4333c597 100644 __free_pages_core(page, pageblock_order); return; } -@@ -1732,6 +1762,7 @@ static void __init deferred_free_range(unsigned long pfn, +@@ -1736,6 +1766,7 @@ static void __init deferred_free_range(unsigned long pfn, for (i = 0; i < nr_pages; i++, page++, pfn++) { if ((pfn & (pageblock_nr_pages - 1)) == 0) set_pageblock_migratetype(page, MIGRATE_MOVABLE); @@ -2146,7 +2159,7 @@ index a723e81a5da2..5a9f4333c597 100644 __free_pages_core(page, 0); } } -@@ -2300,6 +2331,12 @@ inline void post_alloc_hook(struct page *page, unsigned int order, +@@ -2304,6 +2335,12 @@ inline void post_alloc_hook(struct page *page, unsigned int order, kernel_unpoison_pages(page, 1 << order); set_page_owner(page, order, gfp_flags); @@ -2160,10 +2173,10 @@ index a723e81a5da2..5a9f4333c597 100644 kernel_init_free_pages(page, 1 << order); } diff --git a/mm/slab.h b/mm/slab.h -index 1a756a359fa8..45344c99be88 100644 +index 9e83616bb5b4..f70e037a96fc 100644 --- a/mm/slab.h +++ b/mm/slab.h -@@ -415,9 +415,13 @@ static inline struct kmem_cache *virt_to_cache(const void *obj) +@@ -413,9 +413,13 @@ static inline struct kmem_cache *virt_to_cache(const void *obj) struct page *page; page = virt_to_head_page(obj); @@ -2177,7 +2190,7 @@ index 1a756a359fa8..45344c99be88 100644 return page->slab_cache; } -@@ -447,10 +451,15 @@ static inline struct kmem_cache *cache_from_obj(struct kmem_cache *s, void *x) +@@ -445,10 +449,15 @@ static inline struct kmem_cache *cache_from_obj(struct kmem_cache *s, void *x) return s; cachep = virt_to_cache(x); @@ -2196,7 +2209,7 @@ index 1a756a359fa8..45344c99be88 100644 return cachep; } -@@ -475,7 +484,7 @@ static inline size_t slab_ksize(const struct kmem_cache *s) +@@ -473,7 +482,7 @@ static inline size_t slab_ksize(const struct kmem_cache *s) * back there or track user information then we can * only use the space before that information. */ @@ -2205,7 +2218,7 @@ index 1a756a359fa8..45344c99be88 100644 return s->inuse; /* * Else we can use all the padding etc for the allocation -@@ -598,8 +607,10 @@ static inline void cache_random_seq_destroy(struct kmem_cache *cachep) { } +@@ -596,8 +605,10 @@ static inline void cache_random_seq_destroy(struct kmem_cache *cachep) { } static inline bool slab_want_init_on_alloc(gfp_t flags, struct kmem_cache *c) { if (static_branch_unlikely(&init_on_alloc)) { @@ -2216,7 +2229,7 @@ index 1a756a359fa8..45344c99be88 100644 if (c->flags & (SLAB_TYPESAFE_BY_RCU | SLAB_POISON)) return flags & __GFP_ZERO; return true; -@@ -609,9 +620,15 @@ static inline bool slab_want_init_on_alloc(gfp_t flags, struct kmem_cache *c) +@@ -607,9 +618,15 @@ static inline bool slab_want_init_on_alloc(gfp_t flags, struct kmem_cache *c) static inline bool slab_want_init_on_free(struct kmem_cache *c) { @@ -2236,7 +2249,7 @@ index 1a756a359fa8..45344c99be88 100644 } diff --git a/mm/slab_common.c b/mm/slab_common.c -index 0b775cb5c108..fa125646c8b4 100644 +index 174d8652d9fe..a38704aff96b 100644 --- a/mm/slab_common.c +++ b/mm/slab_common.c @@ -31,10 +31,10 @@ @@ -2262,7 +2275,7 @@ index 0b775cb5c108..fa125646c8b4 100644 static int __init setup_slab_nomerge(char *str) { diff --git a/mm/slub.c b/mm/slub.c -index c86037b38253..67c6f3c930e3 100644 +index d62db41710bf..c2f4e0048dc9 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -127,6 +127,12 @@ static inline bool kmem_cache_debug(struct kmem_cache *s) @@ -2421,7 +2434,7 @@ index c86037b38253..67c6f3c930e3 100644 if (s->flags & SLAB_STORE_USER) /* We also have user information there */ off += 2 * sizeof(struct track); -@@ -1564,6 +1609,8 @@ static inline bool slab_free_freelist_hook(struct kmem_cache *s, +@@ -1561,6 +1606,8 @@ static inline bool slab_free_freelist_hook(struct kmem_cache *s, object = next; next = get_freepointer(s, object); @@ -2430,7 +2443,7 @@ index c86037b38253..67c6f3c930e3 100644 if (slab_want_init_on_free(s)) { /* * Clear the object and the metadata, but don't touch -@@ -1574,8 +1621,12 @@ static inline bool slab_free_freelist_hook(struct kmem_cache *s, +@@ -1571,8 +1618,12 @@ static inline bool slab_free_freelist_hook(struct kmem_cache *s, : 0; memset((char *)kasan_reset_tag(object) + s->inuse, 0, s->size - s->inuse - rsize); @@ -2444,7 +2457,7 @@ index c86037b38253..67c6f3c930e3 100644 /* If object's reuse doesn't have to be delayed */ if (!slab_free_hook(s, object)) { /* Move object to the new freelist */ -@@ -1583,6 +1634,18 @@ static inline bool slab_free_freelist_hook(struct kmem_cache *s, +@@ -1580,6 +1631,18 @@ static inline bool slab_free_freelist_hook(struct kmem_cache *s, *head = object; if (!*tail) *tail = object; @@ -2463,7 +2476,7 @@ index c86037b38253..67c6f3c930e3 100644 } } while (object != old_tail); -@@ -1596,8 +1659,9 @@ static void *setup_object(struct kmem_cache *s, struct page *page, +@@ -1593,8 +1656,9 @@ static void *setup_object(struct kmem_cache *s, struct page *page, void *object) { setup_object_debug(s, page, object); @@ -2474,7 +2487,7 @@ index c86037b38253..67c6f3c930e3 100644 kasan_unpoison_object_data(s, object); s->ctor(object); kasan_poison_object_data(s, object); -@@ -2886,8 +2950,28 @@ static __always_inline void *slab_alloc_node(struct kmem_cache *s, +@@ -2883,8 +2947,28 @@ static __always_inline void *slab_alloc_node(struct kmem_cache *s, maybe_wipe_obj_freeptr(s, object); @@ -2504,7 +2517,7 @@ index c86037b38253..67c6f3c930e3 100644 slab_post_alloc_hook(s, objcg, gfpflags, 1, &object); -@@ -3276,7 +3360,7 @@ int kmem_cache_alloc_bulk(struct kmem_cache *s, gfp_t flags, size_t size, +@@ -3273,7 +3357,7 @@ int kmem_cache_alloc_bulk(struct kmem_cache *s, gfp_t flags, size_t size, void **p) { struct kmem_cache_cpu *c; @@ -2513,7 +2526,7 @@ index c86037b38253..67c6f3c930e3 100644 struct obj_cgroup *objcg = NULL; /* memcg and kmem_cache debug support */ -@@ -3326,11 +3410,35 @@ int kmem_cache_alloc_bulk(struct kmem_cache *s, gfp_t flags, size_t size, +@@ -3323,11 +3407,35 @@ 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 */ @@ -2551,7 +2564,7 @@ index c86037b38253..67c6f3c930e3 100644 } /* memcg and kmem_cache debug support */ -@@ -3364,9 +3472,9 @@ EXPORT_SYMBOL(kmem_cache_alloc_bulk); +@@ -3361,9 +3469,9 @@ EXPORT_SYMBOL(kmem_cache_alloc_bulk); * and increases the number of allocations possible without having to * take the list_lock. */ @@ -2564,7 +2577,7 @@ index c86037b38253..67c6f3c930e3 100644 /* * Calculate the order of allocation given an slab object size. -@@ -3548,6 +3656,7 @@ static void early_kmem_cache_node_alloc(int node) +@@ -3545,6 +3653,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 @@ -2572,7 +2585,7 @@ index c86037b38253..67c6f3c930e3 100644 n = kasan_kmalloc(kmem_cache_node, n, sizeof(struct kmem_cache_node), GFP_KERNEL); page->freelist = get_freepointer(kmem_cache_node, n); -@@ -3728,6 +3837,9 @@ static int calculate_sizes(struct kmem_cache *s, int forced_order) +@@ -3725,6 +3834,9 @@ static int calculate_sizes(struct kmem_cache *s, int forced_order) s->offset = ALIGN(freepointer_area / 2, sizeof(void *)); } @@ -2582,7 +2595,7 @@ index c86037b38253..67c6f3c930e3 100644 #ifdef CONFIG_SLUB_DEBUG if (flags & SLAB_STORE_USER) /* -@@ -3801,6 +3913,10 @@ static int kmem_cache_open(struct kmem_cache *s, slab_flags_t flags) +@@ -3798,6 +3910,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 @@ -2593,7 +2606,7 @@ index c86037b38253..67c6f3c930e3 100644 if (!calculate_sizes(s, -1)) goto error; -@@ -4074,6 +4190,8 @@ void __check_heap_object(const void *ptr, unsigned long n, struct page *page, +@@ -4071,6 +4187,8 @@ void __check_heap_object(const void *ptr, unsigned long n, struct page *page, offset -= s->red_left_pad; } @@ -2602,7 +2615,7 @@ index c86037b38253..67c6f3c930e3 100644 /* Allow address range falling entirely within usercopy region. */ if (offset >= s->useroffset && offset - s->useroffset <= s->usersize && -@@ -4107,7 +4225,11 @@ size_t __ksize(const void *object) +@@ -4104,7 +4222,11 @@ size_t __ksize(const void *object) page = virt_to_head_page(object); if (unlikely(!PageSlab(page))) { @@ -2614,7 +2627,7 @@ index c86037b38253..67c6f3c930e3 100644 return page_size(page); } -@@ -4893,7 +5015,7 @@ enum slab_stat_type { +@@ -4890,7 +5012,7 @@ enum slab_stat_type { #define SO_TOTAL (1 << SL_TOTAL) #ifdef CONFIG_MEMCG @@ -2670,7 +2683,7 @@ index 8c9b7d1e7c49..b74af3a4435e 100644 unsigned long arch_mmap_rnd(void) diff --git a/net/core/dev.c b/net/core/dev.c -index 3c0d3b6d674d..93387bfaf741 100644 +index 633c2d6f1a35..ecfaa629f086 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -4879,7 +4879,7 @@ int netif_rx_any_context(struct sk_buff *skb) @@ -2980,7 +2993,7 @@ index 9b44caa4b956..e3a13782bb53 100644 * simultaneous connect with crossed SYNs. * Particularly, it can be connect to self. diff --git a/scripts/Makefile.modpost b/scripts/Makefile.modpost -index f54b6ac37ac2..e53b3057d4cb 100644 +index 12a87be0fb44..f4c69e330a53 100644 --- a/scripts/Makefile.modpost +++ b/scripts/Makefile.modpost @@ -47,6 +47,7 @@ MODPOST = scripts/mod/modpost \ @@ -3008,7 +3021,7 @@ index ab9eb4cbe33a..2870588ef733 100644 secure! diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c -index d6c81657d695..cabe8fb75532 100644 +index 5f9d8d9147d0..ff743ffd0948 100644 --- a/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c @@ -35,6 +35,8 @@ static int warn_unresolved = 0; @@ -3082,7 +3095,7 @@ index d6c81657d695..cabe8fb75532 100644 } fprintf(stderr, "\n"); } -@@ -2546,7 +2567,7 @@ int main(int argc, char **argv) +@@ -2533,7 +2554,7 @@ int main(int argc, char **argv) struct dump_list *dump_read_start = NULL; struct dump_list **dump_read_iter = &dump_read_start; @@ -3091,7 +3104,7 @@ index d6c81657d695..cabe8fb75532 100644 switch (opt) { case 'e': external_module = 1; -@@ -2557,6 +2578,9 @@ int main(int argc, char **argv) +@@ -2544,6 +2565,9 @@ int main(int argc, char **argv) (*dump_read_iter)->file = optarg; dump_read_iter = &(*dump_read_iter)->next; break; @@ -3101,7 +3114,7 @@ index d6c81657d695..cabe8fb75532 100644 case 'm': modversions = 1; break; -@@ -2655,6 +2679,11 @@ int main(int argc, char **argv) +@@ -2642,6 +2666,11 @@ int main(int argc, char **argv) } free(buf.p); diff --git a/sys-kernel/linux-sources-redcore/linux-sources-redcore-5.11.17.ebuild b/sys-kernel/linux-sources-redcore/linux-sources-redcore-5.11.22.ebuild index 0926edee..41a5fac0 100644 --- a/sys-kernel/linux-sources-redcore/linux-sources-redcore-5.11.17.ebuild +++ b/sys-kernel/linux-sources-redcore/linux-sources-redcore-5.11.22.ebuild @@ -41,7 +41,6 @@ PATCHES=( "${FILESDIR}"/"${KV_MAJOR}"-bootconfig-fallthrough.patch "${FILESDIR}"/"${KV_MAJOR}"-apic_vector-spam-in-debug-mode-only.patch "${FILESDIR}"/"${KV_MAJOR}"-iwlwifi-fix-5e003982b07ae.patch - "${FILESDIR}"/"${KV_MAJOR}"-amd_iommu_init_info.patch "${FILESDIR}"/"${KV_MAJOR}"-0001-Revert-hwmon-k10temp-Remove-support-for-displaying-v.patch "${FILESDIR}"/"${KV_MAJOR}"-k10temp-fix-ZEN2-desktop-add-ZEN3-desktop.patch "${FILESDIR}"/"${KV_MAJOR}"-k10temp-add-Renoir-support.patch |