{"id":"CVE-2026-99095","state":"PUBLISHED","title":"drm/vc4: drain the hangcheck timer and works on V3D unbind","description":"In the Linux kernel, the following vulnerability has been resolved:\n\ndrm/vc4: drain the hangcheck timer and works on V3D unbind\n\nNothing stops the hangcheck timer that submitted jobs arm, or the\njob_done_work that the render-done interrupt queues, at teardown:\nvc4_irq_disable() cancels only overflow_mem_work, and vc4_gem_destroy()\nruns from the drm-managed release, after vc4_v3d_unbind() has already\nuninstalled the V3D interrupt and cleared vc4->v3d. A timer still armed\nby then reads V3D registers through the NULL vc4->v3d pointer, and the\nlate callbacks run on the vc4_dev embedding them after it has been\nfreed.\n\nDrain them in vc4_v3d_unbind(): shut the timer down and cancel\nreset_work before the interrupt is taken down, because its\nvc4_irq_reset() re-enables it, then flush job_done_work so that\ncompletions queued at teardown still release their jobs.\n\nThis issue was found by an in-house static analysis tool.","publishedAt":"2026-10-26T14:52:02.647Z","updatedAt":"2026-10-30T12:41:42.869Z","severity":null,"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"d5b1a78a772f1e31a94f8babfa964152ec5e9aa5","status":"affected","lessThan":"839eebfc95f8530feaa99677274912ac09b5820b","versionType":"git"},{"version":"d5b1a78a772f1e31a94f8babfa964152ec5e9aa5","status":"affected","lessThan":"a1e7c7789aef551eea85de2f63989753c4fe9df6","versionType":"git"},{"version":"d5b1a78a772f1e31a94f8babfa964152ec5e9aa5","status":"affected","lessThan":"17c5fa371de2d5508755cd4cd227cc8e2bb99240","versionType":"git"},{"version":"d5b1a78a772f1e31a94f8babfa964152ec5e9aa5","status":"affected","lessThan":"a046cd60ff3f4a8c8e672b3b18902682c1f91731","versionType":"git"},{"version":"d5b1a78a772f1e31a94f8babfa964152ec5e9aa5","status":"affected","lessThan":"e61465d3e0292daebf4dbb34e0add635e2439569","versionType":"git"},{"version":"d5b1a78a772f1e31a94f8babfa964152ec5e9aa5","status":"affected","lessThan":"ade226dfd28cf2fd1dce143c556d1ee77d953696","versionType":"git"},{"version":"d5b1a78a772f1e31a94f8babfa964152ec5e9aa5","status":"affected","lessThan":"94cf5971b1d04c6382437387c4dc3836cc7a1437","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/gpu/drm/vc4/vc4_v3d.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"4.5","status":"affected"},{"version":"0","status":"unaffected","lessThan":"4.5","versionType":"semver"},{"version":"5.15.224","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.191","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.160","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.113","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.57","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.2.11","status":"unaffected","lessThanOrEqual":"7.2.*","versionType":"semver"},{"version":"7.3","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/gpu/drm/vc4/vc4_v3d.c"]}],"references":["https://git.kernel.org/stable/c/839eebfc95f8530feaa99677274912ac09b5820b","https://git.kernel.org/stable/c/a1e7c7789aef551eea85de2f63989753c4fe9df6","https://git.kernel.org/stable/c/17c5fa371de2d5508755cd4cd227cc8e2bb99240","https://git.kernel.org/stable/c/a046cd60ff3f4a8c8e672b3b18902682c1f91731","https://git.kernel.org/stable/c/e61465d3e0292daebf4dbb34e0add635e2439569","https://git.kernel.org/stable/c/ade226dfd28cf2fd1dce143c556d1ee77d953696","https://git.kernel.org/stable/c/94cf5971b1d04c6382437387c4dc3836cc7a1437"],"weaknesses":[],"ingestedAt":"2026-10-30T13:02:04.640Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/99xxx/CVE-2026-99095.json","commit":"cb14bf1b43b0c9f05f7f40eae2246263fd430780","baselineCommit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-99095","state":"PUBLISHED","datePublished":"2026-10-26T14:52:02.647Z","dateUpdated":"2026-10-30T12:41:42.869Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2026-09-25T10:25:14.390Z"},"containers":{"cna":{"title":"drm/vc4: drain the hangcheck timer and works on V3D unbind","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\ndrm/vc4: drain the hangcheck timer and works on V3D unbind\n\nNothing stops the hangcheck timer that submitted jobs arm, or the\njob_done_work that the render-done interrupt queues, at teardown:\nvc4_irq_disable() cancels only overflow_mem_work, and vc4_gem_destroy()\nruns from the drm-managed release, after vc4_v3d_unbind() has already\nuninstalled the V3D interrupt and cleared vc4->v3d. A timer still armed\nby then reads V3D registers through the NULL vc4->v3d pointer, and the\nlate callbacks run on the vc4_dev embedding them after it has been\nfreed.\n\nDrain them in vc4_v3d_unbind(): shut the timer down and cancel\nreset_work before the interrupt is taken down, because its\nvc4_irq_reset() re-enables it, then flush job_done_work so that\ncompletions queued at teardown still release their jobs.\n\nThis issue was found by an in-house static analysis tool."}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"d5b1a78a772f1e31a94f8babfa964152ec5e9aa5","status":"affected","lessThan":"839eebfc95f8530feaa99677274912ac09b5820b","versionType":"git"},{"version":"d5b1a78a772f1e31a94f8babfa964152ec5e9aa5","status":"affected","lessThan":"a1e7c7789aef551eea85de2f63989753c4fe9df6","versionType":"git"},{"version":"d5b1a78a772f1e31a94f8babfa964152ec5e9aa5","status":"affected","lessThan":"17c5fa371de2d5508755cd4cd227cc8e2bb99240","versionType":"git"},{"version":"d5b1a78a772f1e31a94f8babfa964152ec5e9aa5","status":"affected","lessThan":"a046cd60ff3f4a8c8e672b3b18902682c1f91731","versionType":"git"},{"version":"d5b1a78a772f1e31a94f8babfa964152ec5e9aa5","status":"affected","lessThan":"e61465d3e0292daebf4dbb34e0add635e2439569","versionType":"git"},{"version":"d5b1a78a772f1e31a94f8babfa964152ec5e9aa5","status":"affected","lessThan":"ade226dfd28cf2fd1dce143c556d1ee77d953696","versionType":"git"},{"version":"d5b1a78a772f1e31a94f8babfa964152ec5e9aa5","status":"affected","lessThan":"94cf5971b1d04c6382437387c4dc3836cc7a1437","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/gpu/drm/vc4/vc4_v3d.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"4.5","status":"affected"},{"version":"0","status":"unaffected","lessThan":"4.5","versionType":"semver"},{"version":"5.15.224","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.191","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.160","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.113","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.57","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.2.11","status":"unaffected","lessThanOrEqual":"7.2.*","versionType":"semver"},{"version":"7.3","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/gpu/drm/vc4/vc4_v3d.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/839eebfc95f8530feaa99677274912ac09b5820b"},{"url":"https://git.kernel.org/stable/c/a1e7c7789aef551eea85de2f63989753c4fe9df6"},{"url":"https://git.kernel.org/stable/c/17c5fa371de2d5508755cd4cd227cc8e2bb99240"},{"url":"https://git.kernel.org/stable/c/a046cd60ff3f4a8c8e672b3b18902682c1f91731"},{"url":"https://git.kernel.org/stable/c/e61465d3e0292daebf4dbb34e0add635e2439569"},{"url":"https://git.kernel.org/stable/c/ade226dfd28cf2fd1dce143c556d1ee77d953696"},{"url":"https://git.kernel.org/stable/c/94cf5971b1d04c6382437387c4dc3836cc7a1437"}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-10-30T12:41:42.869Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.5","versionEndExcluding":"5.15.224"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.5","versionEndExcluding":"6.1.191"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.5","versionEndExcluding":"6.6.160"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.5","versionEndExcluding":"6.12.113"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.5","versionEndExcluding":"6.18.57"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.5","versionEndExcluding":"7.2.11"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.5","versionEndExcluding":"7.3"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}}}}}