CVE-2022-50553
Publication date:
07/10/2025
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
tracing/hist: Fix out-of-bound write on &#39;action_data.var_ref_idx&#39;<br />
<br />
When generate a synthetic event with many params and then create a trace<br />
action for it [1], kernel panic happened [2].<br />
<br />
It is because that in trace_action_create() &#39;data->n_params&#39; is up to<br />
SYNTH_FIELDS_MAX (current value is 64), and array &#39;data->var_ref_idx&#39;<br />
keeps indices into array &#39;hist_data->var_refs&#39; for each synthetic event<br />
param, but the length of &#39;data->var_ref_idx&#39; is TRACING_MAP_VARS_MAX<br />
(current value is 16), so out-of-bound write happened when &#39;data->n_params&#39;<br />
more than 16. In this case, &#39;data->match_data.event&#39; is overwritten and<br />
eventually cause the panic.<br />
<br />
To solve the issue, adjust the length of &#39;data->var_ref_idx&#39; to be<br />
SYNTH_FIELDS_MAX and add sanity checks to avoid out-of-bound write.<br />
<br />
[1]<br />
# cd /sys/kernel/tracing/<br />
# echo "my_synth_event int v1; int v2; int v3; int v4; int v5; int v6;\<br />
int v7; int v8; int v9; int v10; int v11; int v12; int v13; int v14;\<br />
int v15; int v16; int v17; int v18; int v19; int v20; int v21; int v22;\<br />
int v23; int v24; int v25; int v26; int v27; int v28; int v29; int v30;\<br />
int v31; int v32; int v33; int v34; int v35; int v36; int v37; int v38;\<br />
int v39; int v40; int v41; int v42; int v43; int v44; int v45; int v46;\<br />
int v47; int v48; int v49; int v50; int v51; int v52; int v53; int v54;\<br />
int v55; int v56; int v57; int v58; int v59; int v60; int v61; int v62;\<br />
int v63" >> synthetic_events<br />
# echo &#39;hist:keys=pid:ts0=common_timestamp.usecs if comm=="bash"&#39; >> \<br />
events/sched/sched_waking/trigger<br />
# echo "hist:keys=next_pid:onmatch(sched.sched_waking).my_synth_event(\<br />
pid,pid,pid,pid,pid,pid,pid,pid,pid,pid,pid,pid,pid,pid,pid,pid,pid,pid,\<br />
pid,pid,pid,pid,pid,pid,pid,pid,pid,pid,pid,pid,pid,pid,pid,pid,pid,pid,\<br />
pid,pid,pid,pid,pid,pid,pid,pid,pid,pid,pid,pid,pid,pid,pid,pid,pid,pid,\<br />
pid,pid,pid,pid,pid,pid,pid,pid,pid)" >> events/sched/sched_switch/trigger<br />
<br />
[2]<br />
BUG: unable to handle page fault for address: ffff91c900000000<br />
PGD 61001067 P4D 61001067 PUD 0<br />
Oops: 0000 [#1] PREEMPT SMP NOPTI<br />
CPU: 2 PID: 322 Comm: bash Tainted: G W 6.1.0-rc8+ #229<br />
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS<br />
rel-1.15.0-0-g2dd4b9b3f840-prebuilt.qemu.org 04/01/2014<br />
RIP: 0010:strcmp+0xc/0x30<br />
Code: 75 f7 31 d2 44 0f b6 04 16 44 88 04 11 48 83 c2 01 45 84 c0 75 ee<br />
c3 cc cc cc cc 0f 1f 00 31 c0 eb 08 48 83 c0 01 84 d2 74 13 b6 14<br />
07 3a 14 06 74 ef 19 c0 83 c8 01 c3 cc cc cc cc 31 c3<br />
RSP: 0018:ffff9b3b00f53c48 EFLAGS: 00000246<br />
RAX: 0000000000000000 RBX: ffffffffba958a68 RCX: 0000000000000000<br />
RDX: 0000000000000010 RSI: ffff91c943d33a90 RDI: ffff91c900000000<br />
RBP: ffff91c900000000 R08: 00000018d604b529 R09: 0000000000000000<br />
R10: ffff91c9483eddb1 R11: ffff91ca483eddab R12: ffff91c946171580<br />
R13: ffff91c9479f0538 R14: ffff91c9457c2848 R15: ffff91c9479f0538<br />
FS: 00007f1d1cfbe740(0000) GS:ffff91c9bdc80000(0000)<br />
knlGS:0000000000000000<br />
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033<br />
CR2: ffff91c900000000 CR3: 0000000006316000 CR4: 00000000000006e0<br />
Call Trace:<br />
<br />
__find_event_file+0x55/0x90<br />
action_create+0x76c/0x1060<br />
event_hist_trigger_parse+0x146d/0x2060<br />
? event_trigger_write+0x31/0xd0<br />
trigger_process_regex+0xbb/0x110<br />
event_trigger_write+0x6b/0xd0<br />
vfs_write+0xc8/0x3e0<br />
? alloc_fd+0xc0/0x160<br />
? preempt_count_add+0x4d/0xa0<br />
? preempt_count_add+0x70/0xa0<br />
ksys_write+0x5f/0xe0<br />
do_syscall_64+0x3b/0x90<br />
entry_SYSCALL_64_after_hwframe+0x63/0xcd<br />
RIP: 0033:0x7f1d1d0cf077<br />
Code: 64 89 02 48 c7 c0 ff ff ff ff eb bb 0f 1f 80 00 00 00 00 f3 0f 1e<br />
fa 64 8b 04 25 18 00 00 00 85 c0 75 10 b8 01 00 00 00 0f 05 3d 00<br />
f0 ff ff 77 51 c3 48 83 ec 28 48 89 54 24 18 48 89 74<br />
RSP: 002b:00007ffcebb0e568 EFLAGS: 00000246 ORIG_RAX: 0000000000000001<br />
RAX: ffffffffffffffda RBX: 0000000000000143 RCX: 00007f1d1d0cf077<br />
RDX: 0000000000000143 RSI: 00005639265aa7e0 RDI: 0000000000000001<br />
RBP: 00005639265aa7e0 R08: 000000000000000a R09: 0000000000000142<br />
R<br />
---truncated---
Severity CVSS v4.0: Pending analysis
Last modification:
04/02/2026