CVE-2025-22069

Source
https://nvd.nist.gov/vuln/detail/CVE-2025-22069
Import Source
https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2025-22069.json
JSON Data
https://api.osv.dev/v1/vulns/CVE-2025-22069
Downstream
Published
2025-04-16T15:16:01Z
Modified
2025-07-29T11:19:22.380326Z
Summary
[none]
Details

In the Linux kernel, the following vulnerability has been resolved:

riscv: fgraph: Fix stack layout to match _archftraceregs argument of ftracereturntohandler

Naresh Kamboju reported a "Bad frame pointer" kernel warning while running LTP trace ftracestresstest.sh in riscv. We can reproduce the same issue with the following command:

$ cd /sys/kernel/debug/tracing
$ echo 'f:myprobe do_nanosleep%return args1=$retval' > dynamic_events
$ echo 1 > events/fprobes/enable
$ echo 1 > tracing_on
$ sleep 1

And we can get the following kernel warning:

[ 127.692888] ------------[ cut here ]------------ [ 127.693755] Bad frame pointer: expected ff2000000065be50, received ba34c141e9594000 [ 127.693755] from func donanosleep return to ffffffff800ccb16 [ 127.698699] WARNING: CPU: 1 PID: 129 at kernel/trace/fgraph.c:755 ftracereturntohandler+0x1b2/0x1be [ 127.699894] Modules linked in: [ 127.700908] CPU: 1 UID: 0 PID: 129 Comm: sleep Not tainted 6.14.0-rc3-g0ab191c74642 #32 [ 127.701453] Hardware name: riscv-virtio,qemu (DT) [ 127.701859] epc : ftracereturntohandler+0x1b2/0x1be [ 127.702032] ra : ftracereturntohandler+0x1b2/0x1be [ 127.702151] epc : ffffffff8013b5e0 ra : ffffffff8013b5e0 sp : ff2000000065bd10 [ 127.702221] gp : ffffffff819c12f8 tp : ff60000080853100 t0 : 6e00000000000000 [ 127.702284] t1 : 0000000000000020 t2 : 6e7566206d6f7266 s0 : ff2000000065bd80 [ 127.702346] s1 : ff60000081262000 a0 : 000000000000007b a1 : ffffffff81894f20 [ 127.702408] a2 : 0000000000000010 a3 : fffffffffffffffe a4 : 0000000000000000 [ 127.702470] a5 : 0000000000000000 a6 : 0000000000000008 a7 : 0000000000000038 [ 127.702530] s2 : ba34c141e9594000 s3 : 0000000000000000 s4 : ff2000000065bdd0 [ 127.702591] s5 : 00007fff8adcf400 s6 : 000055556dc1d8c0 s7 : 0000000000000068 [ 127.702651] s8 : 00007fff8adf5d10 s9 : 000000000000006d s10: 0000000000000001 [ 127.702710] s11: 00005555737377c8 t3 : ffffffff819d899e t4 : ffffffff819d899e [ 127.702769] t5 : ffffffff819d89a0 t6 : ff2000000065bb18 [ 127.702826] status: 0000000200000120 badaddr: 0000000000000000 cause: 0000000000000003 [ 127.703292] [<ffffffff8013b5e0>] ftracereturntohandler+0x1b2/0x1be [ 127.703760] [<ffffffff80017bce>] returntohandler+0x16/0x26 [ 127.704009] [<ffffffff80017bb8>] returntohandler+0x0/0x26 [ 127.704057] [<ffffffff800d3352>] commonnsleep+0x42/0x54 [ 127.704117] [<ffffffff800d44a2>] _riscvsysclocknanosleep+0xba/0x10a [ 127.704176] [<ffffffff80901c56>] dotrapecallu+0x188/0x218 [ 127.704295] [<ffffffff8090cc3e>] handleexception+0x14a/0x156 [ 127.705436] ---[ end trace 0000000000000000 ]---

The reason is that the stack layout for constructing argument for the ftracereturntohandler in the returntohandler does not match the _archftraceregs structure of riscv, leading to unexpected results.

References

Affected packages

Debian:13 / linux

Package

Name
linux
Purl
pkg:deb/debian/linux?arch=source

Affected ranges

Type
ECOSYSTEM
Events
Introduced
0Unknown introduced version / All previous versions are affected

Affected versions

6.*

6.12.38-1
6.13~rc6-1~exp1
6.13~rc7-1~exp1
6.13.2-1~exp1
6.13.3-1~exp1
6.13.4-1~exp1
6.13.5-1~exp1
6.13.6-1~exp1
6.13.7-1~exp1
6.13.8-1~exp1
6.13.9-1~exp1
6.13.10-1~exp1
6.13.11-1~exp1
6.14.3-1~exp1
6.14.5-1~exp1
6.14.6-1~exp1
6.15~rc7-1~exp1
6.15-1~exp1
6.15.1-1~exp1
6.15.2-1~exp1
6.15.3-1~exp1
6.15.4-1~exp1
6.15.5-1~exp1
6.15.6-1~exp1
6.16~rc7-1~exp1

Ecosystem specific

{
    "urgency": "not yet assigned"
}