Description
In the Linux kernel, the following vulnerability has been resolved: zram: fix use-after-free in zram_bvec_write_partial() zram_read_page() picks the sync or async backing device read path based on whether the parent bio is NULL. zram_bvec_write_partial() passes its parent bio down, so for ZRAM_WB slots the read is dispatched asynchronously and zram_read_page() returns 0 while the bio is still in flight. The caller then runs memcpy_from_bvec(), zram_write_page() and __free_page() on the buffer, leaving the async read to write into a freed page. zram_bvec_read_partial() was switched to NULL in commit 4e3c87b9421d ("zram: fix synchronous reads") for the same reason; the write_partial counterpart was missed.
CVSS breakdown
CVSS 3.1
Attack Vector
Local
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High
Affected products
- Linux / Linux8e654f8fbff52ac483fb69957222853d7e2fc588 – 0c2821665ff71be3f4b07ecece384669f2877f6a
- Linux / Linux8e654f8fbff52ac483fb69957222853d7e2fc588 – 77a602b505ce4802915853cfc435a4722fab3e64
- Linux / Linux8e654f8fbff52ac483fb69957222853d7e2fc588 – c96786d6ff1acc1d54d9241e97767554c1dfdd5b
- Linux / Linux8e654f8fbff52ac483fb69957222853d7e2fc588 – 198b5a14cca27263b9c14b20114c8092de15dfcb
- Linux / Linux8e654f8fbff52ac483fb69957222853d7e2fc588 – 732fd9f0b9c1cdc6dfd77162ded60df005182cc0
- Linux / Linux4.14 – 4.14
- Linux / Linux0 – 4.14
- Linux / Linux6.6.143 – 6.6.*
- Linux / Linux6.12.94 – 6.12.*
- Linux / Linux6.18.36 – 6.18.*
- Linux / Linux7.0.13 – 7.0.*
- Linux / Linux7.1 – *
References
- MISChttps://git.kernel.org/stable/c/0c2821665ff71be3f4b07ecece384669f2877f6a
- MISChttps://git.kernel.org/stable/c/77a602b505ce4802915853cfc435a4722fab3e64
- MISChttps://git.kernel.org/stable/c/c96786d6ff1acc1d54d9241e97767554c1dfdd5b
- MISChttps://git.kernel.org/stable/c/198b5a14cca27263b9c14b20114c8092de15dfcb
- MISChttps://git.kernel.org/stable/c/732fd9f0b9c1cdc6dfd77162ded60df005182cc0