From: Greg Kroah-Hartman Date: Wed, 3 Jul 2024 09:06:35 +0000 (+0200) Subject: drop a 5.15 patch X-Git-Tag: v4.19.317~30 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=700574af55e38e6a85fde3dc3fc3e09d679a16c9;p=thirdparty%2Fkernel%2Fstable-queue.git drop a 5.15 patch --- diff --git a/queue-5.15/riscv-rewrite-__kernel_map_pages-to-fix-sleeping-in-invalid-context.patch b/queue-5.15/riscv-rewrite-__kernel_map_pages-to-fix-sleeping-in-invalid-context.patch deleted file mode 100644 index 7ac5df76bc7..00000000000 --- a/queue-5.15/riscv-rewrite-__kernel_map_pages-to-fix-sleeping-in-invalid-context.patch +++ /dev/null @@ -1,99 +0,0 @@ -From fb1cf0878328fe75d47f0aed0a65b30126fcefc4 Mon Sep 17 00:00:00 2001 -From: Nam Cao -Date: Wed, 15 May 2024 07:50:40 +0200 -Subject: riscv: rewrite __kernel_map_pages() to fix sleeping in invalid context - -From: Nam Cao - -commit fb1cf0878328fe75d47f0aed0a65b30126fcefc4 upstream. - -__kernel_map_pages() is a debug function which clears the valid bit in page -table entry for deallocated pages to detect illegal memory accesses to -freed pages. - -This function set/clear the valid bit using __set_memory(). __set_memory() -acquires init_mm's semaphore, and this operation may sleep. This is -problematic, because __kernel_map_pages() can be called in atomic context, -and thus is illegal to sleep. An example warning that this causes: - -BUG: sleeping function called from invalid context at kernel/locking/rwsem.c:1578 -in_atomic(): 1, irqs_disabled(): 0, non_block: 0, pid: 2, name: kthreadd -preempt_count: 2, expected: 0 -CPU: 0 PID: 2 Comm: kthreadd Not tainted 6.9.0-g1d4c6d784ef6 #37 -Hardware name: riscv-virtio,qemu (DT) -Call Trace: -[] dump_backtrace+0x1c/0x24 -[] show_stack+0x2c/0x38 -[] dump_stack_lvl+0x5a/0x72 -[] dump_stack+0x14/0x1c -[] __might_resched+0x104/0x10e -[] __might_sleep+0x3e/0x62 -[] down_write+0x20/0x72 -[] __set_memory+0x82/0x2fa -[] __kernel_map_pages+0x5a/0xd4 -[] __alloc_pages_bulk+0x3b2/0x43a -[] __vmalloc_node_range+0x196/0x6ba -[] copy_process+0x72c/0x17ec -[] kernel_clone+0x60/0x2fe -[] kernel_thread+0x82/0xa0 -[] kthreadd+0x14a/0x1be -[] ret_from_fork+0xe/0x1c - -Rewrite this function with apply_to_existing_page_range(). It is fine to -not have any locking, because __kernel_map_pages() works with pages being -allocated/deallocated and those pages are not changed by anyone else in the -meantime. - -Fixes: 5fde3db5eb02 ("riscv: add ARCH_SUPPORTS_DEBUG_PAGEALLOC support") -Signed-off-by: Nam Cao -Cc: stable@vger.kernel.org -Reviewed-by: Alexandre Ghiti -Link: https://lore.kernel.org/r/1289ecba9606a19917bc12b6c27da8aa23e1e5ae.1715750938.git.namcao@linutronix.de -Signed-off-by: Palmer Dabbelt -Signed-off-by: Greg Kroah-Hartman ---- - arch/riscv/mm/pageattr.c | 28 ++++++++++++++++++++++------ - 1 file changed, 22 insertions(+), 6 deletions(-) - ---- a/arch/riscv/mm/pageattr.c -+++ b/arch/riscv/mm/pageattr.c -@@ -191,17 +191,33 @@ int set_direct_map_default_noflush(struc - } - - #ifdef CONFIG_DEBUG_PAGEALLOC -+static int debug_pagealloc_set_page(pte_t *pte, unsigned long addr, void *data) -+{ -+ int enable = *(int *)data; -+ -+ unsigned long val = pte_val(ptep_get(pte)); -+ -+ if (enable) -+ val |= _PAGE_PRESENT; -+ else -+ val &= ~_PAGE_PRESENT; -+ -+ set_pte(pte, __pte(val)); -+ -+ return 0; -+} -+ - void __kernel_map_pages(struct page *page, int numpages, int enable) - { - if (!debug_pagealloc_enabled()) - return; - -- if (enable) -- __set_memory((unsigned long)page_address(page), numpages, -- __pgprot(_PAGE_PRESENT), __pgprot(0)); -- else -- __set_memory((unsigned long)page_address(page), numpages, -- __pgprot(0), __pgprot(_PAGE_PRESENT)); -+ unsigned long start = (unsigned long)page_address(page); -+ unsigned long size = PAGE_SIZE * numpages; -+ -+ apply_to_existing_page_range(&init_mm, start, size, debug_pagealloc_set_page, &enable); -+ -+ flush_tlb_kernel_range(start, start + size); - } - #endif - diff --git a/queue-5.15/series b/queue-5.15/series index 267403c9141..9907c04d25e 100644 --- a/queue-5.15/series +++ b/queue-5.15/series @@ -126,7 +126,6 @@ ocfs2-use-coarse-time-for-new-created-files.patch ocfs2-fix-races-between-hole-punching-and-aio-dio.patch pci-rockchip-ep-remove-wrong-mask-on-subsys_vendor_id.patch dmaengine-axi-dmac-fix-possible-race-in-remove.patch -riscv-rewrite-__kernel_map_pages-to-fix-sleeping-in-invalid-context.patch intel_th-pci-add-granite-rapids-support.patch intel_th-pci-add-granite-rapids-soc-support.patch intel_th-pci-add-sapphire-rapids-soc-support.patch