mirror of
https://github.com/LineageOS/android_kernel_fxtec_sm6115.git
synced 2026-08-18 12:31:09 +00:00
pstore/ram: fix resource leak when ioremap() fails
[ Upstream commit 2ddb69f686ef7a621645e97fc7329c50edf5d0e5 ]
In persistent_ram_iomap(), ioremap() or ioremap_wc() may return NULL on
failure. Currently, if this happens, the function returns NULL without
releasing the memory region acquired by request_mem_region().
This leads to a resource leak where the memory region remains reserved
but unusable.
Additionally, the caller persistent_ram_buffer_map() handles NULL
correctly by returning -ENOMEM, but without this check, a NULL return
combined with request_mem_region() succeeding leaves resources in an
inconsistent state.
This is the ioremap() counterpart to commit 05363abc7625 ("pstore:
ram_core: fix incorrect success return when vmap() fails") which fixed
a similar issue in the vmap() path.
Fixes: 404a604338 ("staging: android: persistent_ram: handle reserving and mapping memory")
Signed-off-by: Cole Leavitt <cole@unwrap.rs>
Link: https://patch.msgid.link/20260225235406.11790-1-cole@unwrap.rs
Signed-off-by: Kees Cook <kees@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Ulrich Hecht <uli@kernel.org>
This commit is contained in:
committed by
Ulrich Hecht
parent
d91bd069a1
commit
f8a8dfdc41
@ -475,6 +475,10 @@ static void *persistent_ram_iomap(phys_addr_t start, size_t size,
|
||||
else
|
||||
va = ioremap_wc(start, size);
|
||||
|
||||
/* We must release the mem region if ioremap fails. */
|
||||
if (!va)
|
||||
release_mem_region(start, size);
|
||||
|
||||
/*
|
||||
* Since request_mem_region() and ioremap() are byte-granularity
|
||||
* there is no need handle anything special like we do when the
|
||||
|
||||
Reference in New Issue
Block a user