From: Greg Kroah-Hartman Date: Mon, 29 Apr 2024 11:06:53 +0000 (+0200) Subject: 4.19-stable patches X-Git-Tag: v4.19.313~71 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a3be1b299d79abd8d9dff8569ea0435c4ad921c6;p=thirdparty%2Fkernel%2Fstable-queue.git 4.19-stable patches added patches: tracing-increase-perf_max_trace_size-to-handle-sentinel1-and-docker-together.patch tracing-show-size-of-requested-perf-buffer.patch --- diff --git a/queue-4.19/series b/queue-4.19/series index e81a5d8d7fa..b40b55d2386 100644 --- a/queue-4.19/series +++ b/queue-4.19/series @@ -56,3 +56,5 @@ drm-amdgpu-restrict-bo-mapping-within-gpu-address-li.patch amdgpu-validate-offset_in_bo-of-drm_amdgpu_gem_va.patch drm-amdgpu-validate-the-parameters-of-bo-mapping-ope.patch revert-crypto-api-disallow-identical-driver-names.patch +tracing-show-size-of-requested-perf-buffer.patch +tracing-increase-perf_max_trace_size-to-handle-sentinel1-and-docker-together.patch diff --git a/queue-4.19/tracing-increase-perf_max_trace_size-to-handle-sentinel1-and-docker-together.patch b/queue-4.19/tracing-increase-perf_max_trace_size-to-handle-sentinel1-and-docker-together.patch new file mode 100644 index 00000000000..90643a81a4a --- /dev/null +++ b/queue-4.19/tracing-increase-perf_max_trace_size-to-handle-sentinel1-and-docker-together.patch @@ -0,0 +1,85 @@ +From e531e90b5ab0f7ce5ff298e165214c1aec6ed187 Mon Sep 17 00:00:00 2001 +From: "Robin H. Johnson" +Date: Mon, 30 Aug 2021 21:37:23 -0700 +Subject: tracing: Increase PERF_MAX_TRACE_SIZE to handle Sentinel1 and docker together + +From: Robin H. Johnson + +commit e531e90b5ab0f7ce5ff298e165214c1aec6ed187 upstream. + +Running endpoint security solutions like Sentinel1 that use perf-based +tracing heavily lead to this repeated dump complaining about dockerd. +The default value of 2048 is nowhere near not large enough. + +Using the prior patch "tracing: show size of requested buffer", we get +"perf buffer not large enough, wanted 6644, have 6144", after repeated +up-sizing (I did 2/4/6/8K). With 8K, the problem doesn't occur at all, +so below is the trace for 6K. + +I'm wondering if this value should be selectable at boot time, but this +is a good starting point. + +``` +------------[ cut here ]------------ +perf buffer not large enough, wanted 6644, have 6144 +WARNING: CPU: 1 PID: 4997 at kernel/trace/trace_event_perf.c:402 perf_trace_buf_alloc+0x8c/0xa0 +Modules linked in: [..] +CPU: 1 PID: 4997 Comm: sh Tainted: G T 5.13.13-x86_64-00039-gb3959163488e #63 +Hardware name: LENOVO 20KH002JUS/20KH002JUS, BIOS N23ET66W (1.41 ) 09/02/2019 +RIP: 0010:perf_trace_buf_alloc+0x8c/0xa0 +Code: 80 3d 43 97 d0 01 00 74 07 31 c0 5b 5d 41 5c c3 ba 00 18 00 00 89 ee 48 c7 c7 00 82 7d 91 c6 05 25 97 d0 01 01 e8 22 ee bc 00 <0f> 0b 31 c0 eb db 66 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 00 55 89 +RSP: 0018:ffffb922026b7d58 EFLAGS: 00010282 +RAX: 0000000000000000 RBX: ffff9da5ee012000 RCX: 0000000000000027 +RDX: ffff9da881657828 RSI: 0000000000000001 RDI: ffff9da881657820 +RBP: 00000000000019f4 R08: 0000000000000000 R09: ffffb922026b7b80 +R10: ffffb922026b7b78 R11: ffffffff91dda688 R12: 000000000000000f +R13: ffff9da5ee012108 R14: ffff9da8816570a0 R15: ffffb922026b7e30 +FS: 00007f420db1a080(0000) GS:ffff9da881640000(0000) knlGS:0000000000000000 +CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 +CR2: 0000000000000060 CR3: 00000002504a8006 CR4: 00000000003706e0 +DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 +DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 +Call Trace: + kprobe_perf_func+0x11e/0x270 + ? do_execveat_common.isra.0+0x1/0x1c0 + ? do_execveat_common.isra.0+0x5/0x1c0 + kprobe_ftrace_handler+0x10e/0x1d0 + 0xffffffffc03aa0c8 + ? do_execveat_common.isra.0+0x1/0x1c0 + do_execveat_common.isra.0+0x5/0x1c0 + __x64_sys_execve+0x33/0x40 + do_syscall_64+0x6b/0xc0 + ? do_syscall_64+0x11/0xc0 + entry_SYSCALL_64_after_hwframe+0x44/0xae +RIP: 0033:0x7f420dc1db37 +Code: ff ff 76 e7 f7 d8 64 41 89 00 eb df 0f 1f 80 00 00 00 00 f7 d8 64 41 89 00 eb dc 0f 1f 84 00 00 00 00 00 b8 3b 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 01 43 0f 00 f7 d8 64 89 01 48 +RSP: 002b:00007ffd4e8b4e38 EFLAGS: 00000246 ORIG_RAX: 000000000000003b +RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007f420dc1db37 +RDX: 0000564338d1e740 RSI: 0000564338d32d50 RDI: 0000564338d28f00 +RBP: 0000564338d28f00 R08: 0000564338d32d50 R09: 0000000000000020 +R10: 00000000000001b6 R11: 0000000000000246 R12: 0000564338d28f00 +R13: 0000564338d32d50 R14: 0000564338d1e740 R15: 0000564338d28c60 +---[ end trace 83ab3e8e16275e49 ]--- +``` + +Link: https://lkml.kernel.org/r/20210831043723.13481-2-robbat2@gentoo.org + +Signed-off-by: Robin H. Johnson +Signed-off-by: Steven Rostedt (VMware) +Signed-off-by: Thadeu Lima de Souza Cascardo +Signed-off-by: Greg Kroah-Hartman +--- + include/linux/trace_events.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/include/linux/trace_events.h ++++ b/include/linux/trace_events.h +@@ -414,7 +414,7 @@ struct trace_event_file { + } \ + early_initcall(trace_init_perf_perm_##name); + +-#define PERF_MAX_TRACE_SIZE 2048 ++#define PERF_MAX_TRACE_SIZE 8192 + + #define MAX_FILTER_STR_VAL 256 /* Should handle KSYM_SYMBOL_LEN */ + diff --git a/queue-4.19/tracing-show-size-of-requested-perf-buffer.patch b/queue-4.19/tracing-show-size-of-requested-perf-buffer.patch new file mode 100644 index 00000000000..4a5469059e0 --- /dev/null +++ b/queue-4.19/tracing-show-size-of-requested-perf-buffer.patch @@ -0,0 +1,34 @@ +From a90afe8d020da9298c98fddb19b7a6372e2feb45 Mon Sep 17 00:00:00 2001 +From: "Robin H. Johnson" +Date: Mon, 30 Aug 2021 21:37:22 -0700 +Subject: tracing: Show size of requested perf buffer + +From: Robin H. Johnson + +commit a90afe8d020da9298c98fddb19b7a6372e2feb45 upstream. + +If the perf buffer isn't large enough, provide a hint about how large it +needs to be for whatever is running. + +Link: https://lkml.kernel.org/r/20210831043723.13481-1-robbat2@gentoo.org + +Signed-off-by: Robin H. Johnson +Signed-off-by: Steven Rostedt (VMware) +Signed-off-by: Greg Kroah-Hartman +Signed-off-by: Thadeu Lima de Souza Cascardo +--- + kernel/trace/trace_event_perf.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/kernel/trace/trace_event_perf.c ++++ b/kernel/trace/trace_event_perf.c +@@ -394,7 +394,8 @@ void *perf_trace_buf_alloc(int size, str + BUILD_BUG_ON(PERF_MAX_TRACE_SIZE % sizeof(unsigned long)); + + if (WARN_ONCE(size > PERF_MAX_TRACE_SIZE, +- "perf buffer not large enough")) ++ "perf buffer not large enough, wanted %d, have %d", ++ size, PERF_MAX_TRACE_SIZE)) + return NULL; + + *rctxp = rctx = perf_swevent_get_recursion_context();