CVE-2025-21688

Source
https://nvd.nist.gov/vuln/detail/CVE-2025-21688
Import Source
https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2025-21688.json
JSON Data
https://api.test.osv.dev/v1/vulns/CVE-2025-21688
Downstream
Related
Published
2025-02-10T15:58:44Z
Modified
2025-10-10T07:38:22.006593Z
Severity
  • 4.7 (Medium) CVSS_V3 - CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H CVSS Calculator
Summary
drm/v3d: Assign job pointer to NULL before signaling the fence
Details

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

drm/v3d: Assign job pointer to NULL before signaling the fence

In commit e4b5ccd392b9 ("drm/v3d: Ensure job pointer is set to NULL after job completion"), we introduced a change to assign the job pointer to NULL after completing a job, indicating job completion.

However, this approach created a race condition between the DRM scheduler workqueue and the IRQ execution thread. As soon as the fence is signaled in the IRQ execution thread, a new job starts to be executed. This results in a race condition where the IRQ execution thread sets the job pointer to NULL simultaneously as the run_job() function assigns a new job to the pointer.

This race condition can lead to a NULL pointer dereference if the IRQ execution thread sets the job pointer to NULL after run_job() assigns it to the new job. When the new job completes and the GPU emits an interrupt, v3d_irq() is triggered, potentially causing a crash.

[ 466.310099] Unable to handle kernel NULL pointer dereference at virtual address 00000000000000c0 [ 466.318928] Mem abort info: [ 466.321723] ESR = 0x0000000096000005 [ 466.325479] EC = 0x25: DABT (current EL), IL = 32 bits [ 466.330807] SET = 0, FnV = 0 [ 466.333864] EA = 0, S1PTW = 0 [ 466.337010] FSC = 0x05: level 1 translation fault [ 466.341900] Data abort info: [ 466.344783] ISV = 0, ISS = 0x00000005, ISS2 = 0x00000000 [ 466.350285] CM = 0, WnR = 0, TnD = 0, TagAccess = 0 [ 466.355350] GCS = 0, Overlay = 0, DirtyBit = 0, Xs = 0 [ 466.360677] user pgtable: 4k pages, 39-bit VAs, pgdp=0000000089772000 [ 466.367140] [00000000000000c0] pgd=0000000000000000, p4d=0000000000000000, pud=0000000000000000 [ 466.375875] Internal error: Oops: 0000000096000005 [#1] PREEMPT SMP [ 466.382163] Modules linked in: rfcomm sndseqdummy sndhrtimer sndseq sndseqdevice algifhash algifskcipher afalg bnep binfmtmisc vc4 sndsochdmicodec drmdisplayhelper cec brcmfmacwcc spidev rpividhevc(C) drmclientlib brcmfmac hciuart drmdmahelper pispbe btbcm brcmutil sndsoccore aesceblk v4l2mem2mem bluetooth aescecipher sndcompress videobuf2dmacontig ghashce cfg80211 gf128mul sndpcmdmaengine videobuf2memops ecdhgeneric sha2ce ecc videobuf2v4l2 sndpcm v3d sha256arm64 rfkill videodev sndtimer sha1ce libaes gpusched snd videobuf2common sha1generic drmshmemhelper mc rp1pio drmkmshelper raspberrypihwmon spibcm2835 gpiokeys i2cbrcmstb rp1 raspberrypigpiomem rp1mailbox rp1adc nvmemrmem uiopdrvgenirq uio i2cdev drm ledtrigpattern drmpanelorientationquirks backlight fuse dmmod iptables xtables ipv6 [ 466.458429] CPU: 0 UID: 1000 PID: 2008 Comm: chromium Tainted: G C 6.13.0-v8+ #18 [ 466.467336] Tainted: [C]=CRAP [ 466.470306] Hardware name: Raspberry Pi 5 Model B Rev 1.0 (DT) [ 466.476157] pstate: 404000c9 (nZcv daIF +PAN -UAO -TCO -DIT -SSBS BTYPE=--) [ 466.483143] pc : v3dirq+0x118/0x2e0 [v3d] [ 466.487258] lr : _handleirqeventpercpu+0x60/0x228 [ 466.492327] sp : ffffffc080003ea0 [ 466.495646] x29: ffffffc080003ea0 x28: ffffff80c0c94200 x27: 0000000000000000 [ 466.502807] x26: ffffffd08dd81d7b x25: ffffff80c0c94200 x24: ffffff8003bdc200 [ 466.509969] x23: 0000000000000001 x22: 00000000000000a7 x21: 0000000000000000 [ 466.517130] x20: ffffff8041bb0000 x19: 0000000000000001 x18: 0000000000000000 [ 466.524291] x17: ffffffafadfb0000 x16: ffffffc080000000 x15: 0000000000000000 [ 466.531452] x14: 0000000000000000 x13: 0000000000000000 x12: 0000000000000000 [ 466.538613] x11: 0000000000000000 x10: 0000000000000000 x9 : ffffffd08c527eb0 [ 466.545777] x8 : 0000000000000000 x7 : 0000000000000000 x6 : 0000000000000000 [ 466.552941] x5 : ffffffd08c4100d0 x4 : ffffffafadfb0000 x3 : ffffffc080003f70 [ 466.560102] x2 : ffffffc0829e8058 x1 : 0000000000000001 x0 : 0000000000000000 [ 466.567263] Call trace: [ 466.569711] v3dirq+0x118/0x2e0 [v3d] (P) [ 466. ---truncated---

References

Affected packages

Git / git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

Affected ranges

Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
1bd6303d08c85072ce40ac01a767ab67195105bd
Fixed
9793206fbf5293534c3a79d78f196e2cbb48c22d
Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
a34050f70e7955a359874dff1a912a748724a140
Fixed
1f66a3a1a516e4d545906916b3f3c8d1c5e909e6
Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
14e0a874488e79086340ba8e2d238cb9596b68a8
Fixed
6cfafcad46e95351c477da0ae7e3acb8f7550ada
Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
2a1c88f7ca5c12dff6fa6787492ac910bb9e4407
Fixed
a9401cd5d1bb5a0b8d2bef09623ca43551cd6e8a
Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
63195bae1cbf78f1d392b1bc9ae4b03c82d0ebf3
Fixed
431fb709db434565b5e7cee82a11bd681a794fd3
Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
b22467b1ae104073dcb11aa78562a331cd7fb0e0
Fixed
01a7e3a43ee2e6607169a75889412344c10b37fd
Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
e4b5ccd392b92300a2b341705cc4805681094e49
Fixed
3059e7aaa280daea57bb069fbc65225e1bb95014
Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
e4b5ccd392b92300a2b341705cc4805681094e49
Fixed
6e64d6b3a3c39655de56682ec83e894978d23412

Affected versions

v5.*

v5.15.177

v6.*

v6.1.127
v6.12.11
v6.13
v6.13-rc2
v6.13-rc3
v6.13-rc4
v6.13-rc5
v6.13-rc6
v6.13-rc7
v6.6.74

Linux / Kernel

Package

Name
Kernel

Affected ranges

Type
ECOSYSTEM
Events
Introduced
0Unknown introduced version / All previous versions are affected
Fixed
5.15.178
Type
ECOSYSTEM
Events
Introduced
5.16.0
Fixed
6.1.128
Type
ECOSYSTEM
Events
Introduced
6.2.0
Fixed
6.6.75
Type
ECOSYSTEM
Events
Introduced
6.7.0
Fixed
6.12.12
Type
ECOSYSTEM
Events
Introduced
6.13.0
Fixed
6.13.1