Linux: drm/nouveau: RCU-free the scheduler-containing nouveau_sched
What fixes it
- 40edf5eefc3fd94592a91d6eb074d4fc6f606c75LinuxCVE List
- 35151e9a8274174ccbb92e3b3ba7dc7a008dcadaLinuxCVE List
A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.
Description
In the Linux kernel, the following vulnerability has been resolved:
drm/nouveau: RCU-free the scheduler-containing nouveau_sched
struct nouveau_sched embeds a struct drm_gpu_scheduler (base). nouveau_sched_destroy() calls nouveau_sched_fini() (which does drm_sched_fini(&sched->base)) and then frees the object with plain kfree(sched).
drm_sched_fence_get_timeline_name() returns fence->sched->name, and the scheduler fence keeps a .release callback so it is not ops-detached on signalling. A finished fence exported to userspace via drm_syncobj / sync_file therefore keeps pointing at &sched->base after nouveau_sched_destroy(), and a later get_timeline_name() -- reachable unprivileged through SYNC_IOC_FILE_INFO -- dereferences freed memory (KASAN slab-use-after-free read).
Per the dma-fence lifetime contract the exporter must keep the data backing a signalled fence alive for an RCU grace period. Free the scheduler-containing object with kfree_rcu() instead of kfree().
Text from CVE List
Affected versions 10
- Linuxaffected: 5f03a507b29e44a848f315c7240c19894dd8be4f before 40edf5eefc3fd94592a91d6eb074d4fc6f606c75CVE List
- Linuxaffected: 5f03a507b29e44a848f315c7240c19894dd8be4f before 35151e9a8274174ccbb92e3b3ba7dc7a008dcadaCVE List
- Linuxaffected: 5f03a507b29e44a848f315c7240c19894dd8be4f before cd6e11b6ebe04a0a1f1435df561acada9eadc563CVE List
- Linuxaffected: 5f03a507b29e44a848f315c7240c19894dd8be4f before f7eae6d8d768fabd6b59779ca7da79e02c74e113CVE List
- Linuxaffected: 6.8CVE List
- Linuxunaffected: all versions before 6.8CVE List
- Linuxunaffected: 6.12.112 through 6.12.*CVE List
- Linuxunaffected: 6.18.55 through 6.18.*CVE List
- Linuxunaffected: 7.2.9 through 7.2.*CVE List
- Linuxunaffected: 7.3CVE List
References 4
- git.kernel.org/stable/c/40edf5eefc3fd94592a91d6eb074d4fc6f606c75Referencevia CVE List
- git.kernel.org/stable/c/35151e9a8274174ccbb92e3b3ba7dc7a008dcadaReferencevia CVE List
- git.kernel.org/stable/c/cd6e11b6ebe04a0a1f1435df561acada9eadc563Referencevia CVE List
- git.kernel.org/stable/c/f7eae6d8d768fabd6b59779ca7da79e02c74e113Referencevia CVE List