CVE-2026-80633 in Linux
الملخص
بحسب VulDB • 28/08/2026
في نواة لينكس، تم إصلاح الثغرة التالية:
iommufd: أخذ قفل dma_resv قبل استدعاء dma_buf_unpin() في مسار الإصدار (release path)
يتطلب استدعاء `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()` دون أخذ هذا القفل، مما يؤدي إلى ظهور تحذير (WARN) في كل مرة يقوم فيها استدعاء `iommufd_ioas_destroy()` أو `iommufd_ioas_unmap()` بإطلاق آخر مرجع لصفحات iopt المدعومة بـ DMABUF. تم رصد هذه الحالة أثناء تشغيل الاختبارات الذاتية (`selftests`) الخاصة بـ IOMMU:
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>
يجب أخذ قفل `dma_resv` حول استدعاء `dma_buf_unpin()` داخل دالة `iopt_release_pages()`, تماشياً مع اتفاقية `iopt_map_dmabuf()`. بما أن الدالة `dma_buf_detach()` تحصل على قفل الحجز (`reservation lock`) داخلياً، فيجب إبقاؤها خارج المنطقة المحمية بالقفل.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.