UBUNTU-CVE-2025-21880
In the Linux kernel, the following vulnerability has been resolved: drm/xe/userptr: fix EFAULT handling Currently we treat EFAULT from hmm_range_fault() as a non-fatal error when called from xe_vm_userptr_pin() with the idea that we want to avoid killing the entire vm and chucking an error, under the assumption that the user just did an unmap or something, and has no intention of actually touching that memory from the GPU. At this point we have already zapped the PTEs so any access should generate a page fault, and if the pin fails there also it will then become fatal. However it looks like it's possible for the userptr vma to still be on the rebind list in preempt_rebind_work_func(), if we had to retry the pin again due to something happening in the caller before we did the rebind step, but in the meantime needing to re-validate the userptr and this time hitting the EFAULT. This explains an internal user report of hitting: [ 191.738349] WARNING: CPU: 1 PID: 157 at drivers/gpu/drm/xe/xe_res_cursor.h:158 xe_pt_stage_bind.constprop.0+0x60a/0x6b0 [xe] [ 191.738551] Workqueue: xe-ordered-wq preempt_rebind_work_func [xe] [ 191.738616] RIP: 0010:xe_pt_stage_bind.constprop.0+0x60a/0x6b0 [xe] [ 191.738690] Call Trace: [ 191.738692] <TASK> [ 191.738694] ? show_regs+0x69/0x80 [ 191.738698] ? __warn+0x93/0x1a0 [ 191.738703] ? xe_pt_stage_bind.constprop.0+0x60a/0x6b0 [xe] [ 191.738759] ? report_bug+0x18f/0x1a0 [ 191.738764] ? handle_bug+0x63/0xa0 [ 191.738767] ? exc_invalid_op+0x19/0x70 [ 191.738770] ? asm_exc_invalid_op+0x1b/0x20 [ 191.738777] ? xe_pt_stage_bind.constprop.0+0x60a/0x6b0 [xe] [ 191.738834] ? ret_from_fork_asm+0x1a/0x30 [ 191.738849] bind_op_prepare+0x105/0x7b0 [xe] [ 191.738906] ? dma_resv_reserve_fences+0x301/0x380 [ 191.738912] xe_pt_update_ops_prepare+0x28c/0x4b0 [xe] [ 191.738966] ? kmemleak_alloc+0x4b/0x80 [ 191.738973] ops_execute+0x188/0x9d0 [xe] [ 191.739036] xe_vm_rebind+0x4ce/0x5a0 [xe] [ 191.739098] ? trace_hardirqs_on+0x4d/0x60 [ 191.739112] preempt_rebind_work_func+0x76f/0xd00 [xe] Followed by NPD, when running some workload, since the sg was never actually populated but the vma is still marked for rebind when it should be skipped for this special EFAULT case. This is confirmed to fix the user report. v2 (MattB): - Move earlier. v3 (MattB): - Update the commit message to make it clear that this indeed fixes the issue. (cherry picked from commit 6b93cb98910c826c2e2004942f8b060311e43618)
02 / AFFECTED SOFTWARE
Affected packages
29 explicit affected versions
10 explicit affected versions
11 explicit affected versions
3 explicit affected versions
1 explicit affected versions
3 explicit affected versions
7 explicit affected versions
26 explicit affected versions
26 explicit affected versions
37 explicit affected versions
10 explicit affected versions
10 explicit affected versions
13 explicit affected versions
13 explicit affected versions
8 explicit affected versions
78 explicit affected versions
45 explicit affected versions
37 explicit affected versions
8 explicit affected versions
4 explicit affected versions
8 explicit affected versions
19 explicit affected versions
24 explicit affected versions
23 explicit affected versions
7 explicit affected versions
34 explicit affected versions
10 explicit affected versions
32 explicit affected versions
33 explicit affected versions
31 explicit affected versions
16 explicit affected versions
13 explicit affected versions
4 explicit affected versions
12 explicit affected versions
38 explicit affected versions
51 explicit affected versions
13 explicit affected versions
6 explicit affected versions
25 explicit affected versions
10 explicit affected versions
10 explicit affected versions
26 explicit affected versions
7 explicit affected versions
13 explicit affected versions
25 explicit affected versions
1 explicit affected versions
31 explicit affected versions
10 explicit affected versions
10 explicit affected versions
1 explicit affected versions
19 explicit affected versions
8 explicit affected versions
13 explicit affected versions
8 explicit affected versions
21 explicit affected versions
6 explicit affected versions
13 explicit affected versions
12 explicit affected versions
24 explicit affected versions
18 explicit affected versions
7 explicit affected versions
14 explicit affected versions
25 explicit affected versions
21 explicit affected versions
12 explicit affected versions
26 explicit affected versions
1 explicit affected versions
20 explicit affected versions
3 explicit affected versions
23 explicit affected versions
24 explicit affected versions
14 explicit affected versions
5 explicit affected versions
30 explicit affected versions
3 explicit affected versions
26 explicit affected versions
12 explicit affected versions
44 explicit affected versions
4 explicit affected versions
4 explicit affected versions
16 explicit affected versions
9 explicit affected versions
12 explicit affected versions
29 explicit affected versions
13 explicit affected versions
7 explicit affected versions
7 explicit affected versions
8 explicit affected versions
13 explicit affected versions
7 explicit affected versions
10 explicit affected versions
14 explicit affected versions
18 explicit affected versions
3 explicit affected versions
16 explicit affected versions
1 explicit affected versions
43 explicit affected versions
30 explicit affected versions
11 explicit affected versions
36 explicit affected versions
35 explicit affected versions
23 explicit affected versions
7 explicit affected versions
35 explicit affected versions
12 explicit affected versions
18 explicit affected versions
13 explicit affected versions
28 explicit affected versions
4 explicit affected versions
6 explicit affected versions
12 explicit affected versions
50 explicit affected versions
26 explicit affected versions
11 explicit affected versions
12 explicit affected versions
26 explicit affected versions
27 explicit affected versions
27 explicit affected versions
12 explicit affected versions
7 explicit affected versions
03 / CONNECTIONS
Connected vulnerabilities
04 / EVIDENCE
Source records
In the Linux kernel, the following vulnerability has been resolved: drm/xe/userptr: fix EFAULT handling Currently we treat EFAULT from hmm_range_fault() as a non-fatal error when called from xe_vm_userptr_pin() with the idea that we want to avoid killing the entire vm and chucking an error, under the assumption that the user just did an unmap or something, and has no intention of actually touching that memory from the GPU. At this point we have already zapped the PTEs so any access should generate a page fault, and if the pin fails there also it will then become fatal. However it looks like it's possible for the userptr vma to still be on the rebind list in preempt_rebind_work_func(), if we had to retry the pin again due to something happening in the caller before we did the rebind step, but in the meantime needing to re-validate the userptr and this time hitting the EFAULT. This explains an internal user report of hitting: [ 191.738349] WARNING: CPU: 1 PID: 157 at drivers/gpu/drm/xe/xe_res_cursor.h:158 xe_pt_stage_bind.constprop.0+0x60a/0x6b0 [xe] [ 191.738551] Workqueue: xe-ordered-wq preempt_rebind_work_func [xe] [ 191.738616] RIP: 0010:xe_pt_stage_bind.constprop.0+0x60a/0x6b0 [xe] [ 191.738690] Call Trace: [ 191.738692] <TASK> [ 191.738694] ? show_regs+0x69/0x80 [ 191.738698] ? __warn+0x93/0x1a0 [ 191.738703] ? xe_pt_stage_bind.constprop.0+0x60a/0x6b0 [xe] [ 191.738759] ? report_bug+0x18f/0x1a0 [ 191.738764] ? handle_bug+0x63/0xa0 [ 191.738767] ? exc_invalid_op+0x19/0x70 [ 191.738770] ? asm_exc_invalid_op+0x1b/0x20 [ 191.738777] ? xe_pt_stage_bind.constprop.0+0x60a/0x6b0 [xe] [ 191.738834] ? ret_from_fork_asm+0x1a/0x30 [ 191.738849] bind_op_prepare+0x105/0x7b0 [xe] [ 191.738906] ? dma_resv_reserve_fences+0x301/0x380 [ 191.738912] xe_pt_update_ops_prepare+0x28c/0x4b0 [xe] [ 191.738966] ? kmemleak_alloc+0x4b/0x80 [ 191.738973] ops_execute+0x188/0x9d0 [xe] [ 191.739036] xe_vm_rebind+0x4ce/0x5a0 [xe] [ 191.739098] ? trace_hardirqs_on+0x4d/0x60 [ 191.739112] preempt_rebind_work_func+0x76f/0xd00 [xe] Followed by NPD, when running some workload, since the sg was never actually populated but the vma is still marked for rebind when it should be skipped for this special EFAULT case. This is confirmed to fix the user report. v2 (MattB): - Move earlier. v3 (MattB): - Update the commit message to make it clear that this indeed fixes the issue. (cherry picked from commit 6b93cb98910c826c2e2004942f8b060311e43618)
05 / REFERENCES
Further evidence
- https://git.kernel.org/linus/a9f4fa3a7efa65615ff7db13023ac84516e99e21
- https://git.kernel.org/stable/c/51cc278f8ffacd5f9dc7d13191b81b912829db59
- https://git.kernel.org/stable/c/a9f4fa3a7efa65615ff7db13023ac84516e99e21
- https://git.kernel.org/stable/c/daad16d0a538fa938e344fd83927bbcfcd8a66ec
- https://ubuntu.com/security/CVE-2025-21880
- https://ubuntu.com/security/notices/USN-7764-1
- https://ubuntu.com/security/notices/USN-7764-2
- https://ubuntu.com/security/notices/USN-7765-1
- https://ubuntu.com/security/notices/USN-7766-1
- https://ubuntu.com/security/notices/USN-7767-1
- https://ubuntu.com/security/notices/USN-7767-2
- https://ubuntu.com/security/notices/USN-7779-1
- https://ubuntu.com/security/notices/USN-7790-1
- https://ubuntu.com/security/notices/USN-7800-1
- https://ubuntu.com/security/notices/USN-7801-1
- https://ubuntu.com/security/notices/USN-7801-2
- https://ubuntu.com/security/notices/USN-7801-3
- https://ubuntu.com/security/notices/USN-7802-1
- https://ubuntu.com/security/notices/USN-7809-1
- https://www.cve.org/CVERecord?id=CVE-2025-21880