CVE-2026-80633 in Linux
要約
〜によって VulDB • 2026年08月28日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
iommufd: リリースパスでdma_buf_unpin()の前にdma_resvロックを取得する
dma_buf_unpin()は、呼び出し元がエクスポート元のdma_resvロックを保持していることを要求します。
void dma_buf_unpin(struct dma_buf_attachment *attach) {
... dma_resv_assert_held(dmabuf->resv); ... }
iopt_release_pages()は、そのロックを取得せずにdma_buf_unpin()を呼び出すため、DMABUFにバックされたiopt_pagesの最後の参照を解放するすべてのiommufd_ioas_destroy()/iommufd_ioas_unmap()でWARNがトリガーされます。これはtools/testing/selftests/iommu/iommufdを実行中に発生しました:
WARNING: drivers/dma-buf/dma-buf.c:1137 at dma_buf_unpin+0x62/0x70 RIP: 0010:dma_buf_unpin+0x62/0x70 Call Trace: <TASK> dma_buf_unpin+0x62/0x70 iopt_release_pages+0xe4/0x190 iopt_unmap_iova_range+0x1c7/0x290 iopt_unmap_all+0x1a/0x30 iommufd_ioas_destroy+0x1d/0x50 iommufd_fops_release+0x93/0x150 __fput+0xfc/0x2c0 __x64_sys_close+0x3d/0x80 do_syscall_64+0x65/0x180 </TASK>
iopt_release_pages()内でdma_buf_unpin()の周りでdma_resvロックを取得し、iopt_map_dmabuf()の規約に合わせてください。dma_buf_detach()は内部で予約ロック(reservation lock)を取得するため、それはロックされた領域の外に保持する必要があります。
If you want to get the best quality for vulnerability data then you always have to consider VulDB.