{"id":"CVE-2026-80618","state":"PUBLISHED","title":"drm/amdkfd: Avoid double-unpin of DOORBELL/MMIO BOs on free","description":"In the Linux kernel, the following vulnerability has been resolved:\n\ndrm/amdkfd: Avoid double-unpin of DOORBELL/MMIO BOs on free\n\namdgpu_amdkfd_gpuvm_free_memory_of_gpu() unpinned DOORBELL and MMIO\nremap BOs (which are pinned at allocation time) before checking whether\nthe BO is still mapped to the GPU. When the BO is still mapped, the\nfunction returns -EBUSY and leaves the BO alive, but it has already\nbeen unpinned. The BO is then unpinned again when it is finally freed\nduring process teardown, triggering a ttm_bo_unpin() underflow warning:\n\n  WARNING: CPU: 18 PID: 15066 at ttm/ttm_bo.c:650 amdttm_bo_unpin+0x6d/0x80 [amdttm]\n  Workqueue: kfd_process_wq kfd_process_wq_release [amdgpu]\n  RIP: 0010:amdttm_bo_unpin+0x6d/0x80 [amdttm]\n  Call Trace:\n   amdgpu_bo_unpin+0x1a/0x90 [amdgpu]\n   amdgpu_amdkfd_gpuvm_unpin_bo+0x31/0xb0 [amdgpu]\n   amdgpu_amdkfd_gpuvm_free_memory_of_gpu+0x3bf/0x460 [amdgpu]\n   kfd_process_free_outstanding_kfd_bos+0xd4/0x170 [amdgpu]\n   kfd_process_wq_release+0x109/0x1b0 [amdgpu]\n   process_one_work+0x1e2/0x3b0\n   worker_thread+0x50/0x3a0\n   kthread+0xdd/0x100\n   ret_from_fork+0x29/0x50\n\nMove the unpin after the mapped_to_gpu_memory check so it only happens\nonce we are committed to freeing the BO.\n\n(cherry picked from commit 927c5b2defb9b09856444d94bebfd056a002bd75)","publishedAt":"2026-08-28T06:48:38.112Z","updatedAt":"2026-08-28T06:48:38.112Z","severity":null,"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"d25e35bc26c3ca8cd728101545cfb3e86a5d7431","status":"affected","lessThan":"461ae406ae12107ebb321cabe561434c27aaea58","versionType":"git"},{"version":"d25e35bc26c3ca8cd728101545cfb3e86a5d7431","status":"affected","lessThan":"283e77af49fda96aaa57709fc5408b55ffec075e","versionType":"git"},{"version":"d25e35bc26c3ca8cd728101545cfb3e86a5d7431","status":"affected","lessThan":"c055a2088b719e9a4b580685e0ca97f9554a41a8","versionType":"git"},{"version":"d25e35bc26c3ca8cd728101545cfb3e86a5d7431","status":"affected","lessThan":"0e27d92f69b8e4c750a4b181cc05a86b9338c4f5","versionType":"git"},{"version":"d25e35bc26c3ca8cd728101545cfb3e86a5d7431","status":"affected","lessThan":"1d12ae8b079e173107abec0e5817332954c8e95f","versionType":"git"},{"version":"d25e35bc26c3ca8cd728101545cfb3e86a5d7431","status":"affected","lessThan":"3f0cc1735273a57c5116710cf0202e12152f59cc","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"5.17","status":"affected"},{"version":"0","status":"unaffected","lessThan":"5.17","versionType":"semver"},{"version":"6.1.178","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.145","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.97","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.40","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.1.5","status":"unaffected","lessThanOrEqual":"7.1.*","versionType":"semver"},{"version":"7.2","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/amd/amdgpu/amdgpu_amdkfd_gpuvm.c"]}],"references":["https://git.kernel.org/stable/c/461ae406ae12107ebb321cabe561434c27aaea58","https://git.kernel.org/stable/c/283e77af49fda96aaa57709fc5408b55ffec075e","https://git.kernel.org/stable/c/c055a2088b719e9a4b580685e0ca97f9554a41a8","https://git.kernel.org/stable/c/0e27d92f69b8e4c750a4b181cc05a86b9338c4f5","https://git.kernel.org/stable/c/1d12ae8b079e173107abec0e5817332954c8e95f","https://git.kernel.org/stable/c/3f0cc1735273a57c5116710cf0202e12152f59cc"],"weaknesses":[],"ingestedAt":"2026-10-29T20:13:07.220Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/80xxx/CVE-2026-80618.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-80618","state":"PUBLISHED","datePublished":"2026-08-28T06:48:38.112Z","dateUpdated":"2026-08-28T06:48:38.112Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2026-08-26T14:34:25.774Z"},"containers":{"cna":{"title":"drm/amdkfd: Avoid double-unpin of DOORBELL/MMIO BOs on free","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\ndrm/amdkfd: Avoid double-unpin of DOORBELL/MMIO BOs on free\n\namdgpu_amdkfd_gpuvm_free_memory_of_gpu() unpinned DOORBELL and MMIO\nremap BOs (which are pinned at allocation time) before checking whether\nthe BO is still mapped to the GPU. When the BO is still mapped, the\nfunction returns -EBUSY and leaves the BO alive, but it has already\nbeen unpinned. The BO is then unpinned again when it is finally freed\nduring process teardown, triggering a ttm_bo_unpin() underflow warning:\n\n  WARNING: CPU: 18 PID: 15066 at ttm/ttm_bo.c:650 amdttm_bo_unpin+0x6d/0x80 [amdttm]\n  Workqueue: kfd_process_wq kfd_process_wq_release [amdgpu]\n  RIP: 0010:amdttm_bo_unpin+0x6d/0x80 [amdttm]\n  Call Trace:\n   amdgpu_bo_unpin+0x1a/0x90 [amdgpu]\n   amdgpu_amdkfd_gpuvm_unpin_bo+0x31/0xb0 [amdgpu]\n   amdgpu_amdkfd_gpuvm_free_memory_of_gpu+0x3bf/0x460 [amdgpu]\n   kfd_process_free_outstanding_kfd_bos+0xd4/0x170 [amdgpu]\n   kfd_process_wq_release+0x109/0x1b0 [amdgpu]\n   process_one_work+0x1e2/0x3b0\n   worker_thread+0x50/0x3a0\n   kthread+0xdd/0x100\n   ret_from_fork+0x29/0x50\n\nMove the unpin after the mapped_to_gpu_memory check so it only happens\nonce we are committed to freeing the BO.\n\n(cherry picked from commit 927c5b2defb9b09856444d94bebfd056a002bd75)"}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"d25e35bc26c3ca8cd728101545cfb3e86a5d7431","status":"affected","lessThan":"461ae406ae12107ebb321cabe561434c27aaea58","versionType":"git"},{"version":"d25e35bc26c3ca8cd728101545cfb3e86a5d7431","status":"affected","lessThan":"283e77af49fda96aaa57709fc5408b55ffec075e","versionType":"git"},{"version":"d25e35bc26c3ca8cd728101545cfb3e86a5d7431","status":"affected","lessThan":"c055a2088b719e9a4b580685e0ca97f9554a41a8","versionType":"git"},{"version":"d25e35bc26c3ca8cd728101545cfb3e86a5d7431","status":"affected","lessThan":"0e27d92f69b8e4c750a4b181cc05a86b9338c4f5","versionType":"git"},{"version":"d25e35bc26c3ca8cd728101545cfb3e86a5d7431","status":"affected","lessThan":"1d12ae8b079e173107abec0e5817332954c8e95f","versionType":"git"},{"version":"d25e35bc26c3ca8cd728101545cfb3e86a5d7431","status":"affected","lessThan":"3f0cc1735273a57c5116710cf0202e12152f59cc","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"5.17","status":"affected"},{"version":"0","status":"unaffected","lessThan":"5.17","versionType":"semver"},{"version":"6.1.178","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.145","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.97","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.40","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.1.5","status":"unaffected","lessThanOrEqual":"7.1.*","versionType":"semver"},{"version":"7.2","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/amd/amdgpu/amdgpu_amdkfd_gpuvm.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/461ae406ae12107ebb321cabe561434c27aaea58"},{"url":"https://git.kernel.org/stable/c/283e77af49fda96aaa57709fc5408b55ffec075e"},{"url":"https://git.kernel.org/stable/c/c055a2088b719e9a4b580685e0ca97f9554a41a8"},{"url":"https://git.kernel.org/stable/c/0e27d92f69b8e4c750a4b181cc05a86b9338c4f5"},{"url":"https://git.kernel.org/stable/c/1d12ae8b079e173107abec0e5817332954c8e95f"},{"url":"https://git.kernel.org/stable/c/3f0cc1735273a57c5116710cf0202e12152f59cc"}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-08-28T06:48:38.112Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.17","versionEndExcluding":"6.1.178"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.17","versionEndExcluding":"6.6.145"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.17","versionEndExcluding":"6.12.97"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.17","versionEndExcluding":"6.18.40"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.17","versionEndExcluding":"7.1.5"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.17","versionEndExcluding":"7.2"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}}}}}