Description
In the Linux kernel, the following vulnerability has been resolved: dm-pcache: only hand out initialized cache segments get_cache_segment() scans the segment map up to cache->n_segs, the physical device segment count, but cache_segs_init() only initializes the first cache_info->n_segs segments. A crafted image with cache_info->n_segs smaller than the device count leaves the remaining pcache_cache_segment structs zeroed (segment.data == NULL), and the allocator can hand one to cache_kset_close(), which writes through the returned segment's data pointer with no NULL check. Bound the allocator's search to cache_info->n_segs so only initialized segments are ever returned. A conforming cache sets n_segs equal to the device segment count, so this rejects nothing legitimate.
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
1d57628ff95b32d5cfa8d8f50e07690c161e9cf0 to < 83e3116283ed2c6a6a1fa662862a4b4d7d2701a2affected1d57628ff95b32d5cfa8d8f50e07690c161e9cf0 to < 692037ae1a7cfacc2f0c22c6e034c1dfee0e553faffected1d57628ff95b32d5cfa8d8f50e07690c161e9cf0 to < 2df0fc042e299bae3c0f60ea5cd2af9285658e9faffected
Linux Linux
Default version status: affected
6.18affected0 to < 6.18unaffected6.18.50 to ≤ 6.18.*unaffected7.2.4 to ≤ 7.2.*unaffected7.3 to ≤ *unaffected