From 08b74a000942a380fe028845f92cd3a0dee827d5 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Mon, 6 May 2024 03:02:38 +0200 Subject: Adding debian version 4.19.249-2. Signed-off-by: Daniel Baumann --- ...ol-Don-t-call-schedule_work_on-in-preempt.patch | 75 ++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 debian/patches-rt/0084-mm-memcontrol-Don-t-call-schedule_work_on-in-preempt.patch (limited to 'debian/patches-rt/0084-mm-memcontrol-Don-t-call-schedule_work_on-in-preempt.patch') diff --git a/debian/patches-rt/0084-mm-memcontrol-Don-t-call-schedule_work_on-in-preempt.patch b/debian/patches-rt/0084-mm-memcontrol-Don-t-call-schedule_work_on-in-preempt.patch new file mode 100644 index 000000000..ddb288711 --- /dev/null +++ b/debian/patches-rt/0084-mm-memcontrol-Don-t-call-schedule_work_on-in-preempt.patch @@ -0,0 +1,75 @@ +From 6b3d7c229967c2b2c01394e4dadcc8f210d52fa0 Mon Sep 17 00:00:00 2001 +From: Yang Shi +Date: Wed, 30 Oct 2013 11:48:33 -0700 +Subject: [PATCH 084/347] mm/memcontrol: Don't call schedule_work_on in + preemption disabled context +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.246-rt110.tar.xz + +The following trace is triggered when running ltp oom test cases: + +BUG: sleeping function called from invalid context at kernel/rtmutex.c:659 +in_atomic(): 1, irqs_disabled(): 0, pid: 17188, name: oom03 +Preemption disabled at:[] mem_cgroup_reclaim+0x90/0xe0 + +CPU: 2 PID: 17188 Comm: oom03 Not tainted 3.10.10-rt3 #2 +Hardware name: Intel Corporation Calpella platform/MATXM-CORE-411-B, BIOS 4.6.3 08/18/2010 +ffff88007684d730 ffff880070df9b58 ffffffff8169918d ffff880070df9b70 +ffffffff8106db31 ffff88007688b4a0 ffff880070df9b88 ffffffff8169d9c0 +ffff88007688b4a0 ffff880070df9bc8 ffffffff81059da1 0000000170df9bb0 +Call Trace: +[] dump_stack+0x19/0x1b +[] __might_sleep+0xf1/0x170 +[] rt_spin_lock+0x20/0x50 +[] queue_work_on+0x61/0x100 +[] drain_all_stock+0xe1/0x1c0 +[] mem_cgroup_reclaim+0x90/0xe0 +[] __mem_cgroup_try_charge+0x41a/0xc40 +[] ? release_pages+0x1b1/0x1f0 +[] ? sched_exec+0x40/0xb0 +[] mem_cgroup_charge_common+0x37/0x70 +[] mem_cgroup_newpage_charge+0x26/0x30 +[] handle_pte_fault+0x618/0x840 +[] ? unpin_current_cpu+0x16/0x70 +[] ? migrate_enable+0xd4/0x200 +[] handle_mm_fault+0x145/0x1e0 +[] __do_page_fault+0x1a1/0x4c0 +[] ? preempt_schedule_irq+0x4b/0x70 +[] ? retint_kernel+0x37/0x40 +[] do_page_fault+0xe/0x10 +[] page_fault+0x22/0x30 + +So, to prevent schedule_work_on from being called in preempt disabled context, +replace the pair of get/put_cpu() to get/put_cpu_light(). + + +Signed-off-by: Yang Shi +Signed-off-by: Sebastian Andrzej Siewior +--- + mm/memcontrol.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/mm/memcontrol.c b/mm/memcontrol.c +index f3aa6e6214d5..281d74f86892 100644 +--- a/mm/memcontrol.c ++++ b/mm/memcontrol.c +@@ -2084,7 +2084,7 @@ static void drain_all_stock(struct mem_cgroup *root_memcg) + * as well as workers from this path always operate on the local + * per-cpu data. CPU up doesn't touch memcg_stock at all. + */ +- curcpu = get_cpu(); ++ curcpu = get_cpu_light(); + for_each_online_cpu(cpu) { + struct memcg_stock_pcp *stock = &per_cpu(memcg_stock, cpu); + struct mem_cgroup *memcg; +@@ -2104,7 +2104,7 @@ static void drain_all_stock(struct mem_cgroup *root_memcg) + } + css_put(&memcg->css); + } +- put_cpu(); ++ put_cpu_light(); + mutex_unlock(&percpu_charge_mutex); + } + +-- +2.36.1 + -- cgit v1.2.3