Description
In the Linux kernel, the following vulnerability has been resolved: crypto: ixp4xx - fix buffer chain unwind on allocation failure chainup_buffers() builds a linked list of buffer descriptors for a scatterlist. If dma_pool_alloc() fails while constructing the list, the current code sets buf to NULL and later dereferences it unconditionally at the end of the function: buf->next = NULL; buf->phys_next = 0; This can lead to a null-pointer dereference on allocation failure. If the failure happens after part of the descriptor chain has already been allocated and DMA-mapped, the partially constructed chain also needs to be released. Fix this by terminating the partially constructed chain on allocation failure and letting the callers unwind it via their existing cleanup paths. Also fix ablk_perform() to preserve the hook pointers before checking for failure, so partially built chains can be freed correctly.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
0d44dc59b2b434b29aafeae581d06f81efac7c83 to < d4007867be42d71795b78fa7f8ce7514dda9ca83affected0d44dc59b2b434b29aafeae581d06f81efac7c83 to < 4918b0bd7d2baafb45d87dca9e322137c96005c2affected0d44dc59b2b434b29aafeae581d06f81efac7c83 to < 8c37bc8d6a6f77bf9593fb1bcab6c14c7cf02991affected0d44dc59b2b434b29aafeae581d06f81efac7c83 to < 04cb00106ca4d0fa9eca24cadc4eda6036e855c8affected0d44dc59b2b434b29aafeae581d06f81efac7c83 to < 028a7f4f3d69e551f6bf9f728d547bbf4cfc707daffected0d44dc59b2b434b29aafeae581d06f81efac7c83 to < 25056329384010a8672552b134f609601dc4f80eaffected5a80273150a8a1725fa70418d106eb1f2ee8fd2faffected82a8becb9c2c52fc5e67057a43aeded1f0731e7baffected68845515c8b11791b547a2838e22c27dfa3115eeaffected2.6.27.22 to < 2.6.28affected2.6.28.10 to < 2.6.29affected2.6.29.3 to < 2.6.30affected
Linux Linux
Default version status: affected
2.6.30affected0 to < 2.6.30unaffected5.15.222 to ≤ 5.15.*unaffected6.1.189 to ≤ 6.1.*unaffected6.6.158 to ≤ 6.6.*unaffected6.12.111 to ≤ 6.12.*unaffected6.18.53 to ≤ 6.18.*unaffected7.2 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/d4007867be42d71795b78fa7f8ce7514dda9ca83 ↗
- https://git.kernel.org/stable/c/4918b0bd7d2baafb45d87dca9e322137c96005c2 ↗
- https://git.kernel.org/stable/c/8c37bc8d6a6f77bf9593fb1bcab6c14c7cf02991 ↗
- https://git.kernel.org/stable/c/04cb00106ca4d0fa9eca24cadc4eda6036e855c8 ↗
- https://git.kernel.org/stable/c/028a7f4f3d69e551f6bf9f728d547bbf4cfc707d ↗
- https://git.kernel.org/stable/c/25056329384010a8672552b134f609601dc4f80e ↗