mirror of
https://github.com/torvalds/linux.git
synced 2026-09-24 06:24:02 +02:00
dm-pcache: bound the persisted tail-position offset
cache_pos_decode() takes the persisted key_tail and dirty_tail seg_off from
the cache device and addresses within the segment with it. A seg_off at or
past the segment data_size, controllable by whoever supplies the device
(CAP_SYS_ADMIN), reads past the segment data.
Reject a decoded seg_off that is not below the segment data_size.
Fixes: 1d57628ff9 ("dm-pcache: add persistent cache target in device-mapper")
Cc: stable@vger.kernel.org
Signed-off-by: Bryam Vargas <hexlabsecurity@proton.me>
Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
This commit is contained in:
parent
f11deb032f
commit
d189857609
|
|
@ -122,6 +122,10 @@ int cache_pos_decode(struct pcache_cache *cache,
|
|||
return -EIO;
|
||||
|
||||
pos->cache_seg = &cache->segments[latest.cache_seg_id];
|
||||
|
||||
if (latest.seg_off >= pos->cache_seg->segment.data_size)
|
||||
return -EIO;
|
||||
|
||||
pos->seg_off = latest.seg_off;
|
||||
*seq = latest.header.seq;
|
||||
*index = (latest_addr - pos_onmedia);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user