Skip to content

Commit b02531a

Browse files
coleleavittgregkh
authored andcommitted
pstore/ram: fix resource leak when ioremap() fails
[ Upstream commit 2ddb69f ] 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 05363ab ("pstore: ram_core: fix incorrect success return when vmap() fails") which fixed a similar issue in the vmap() path. Fixes: 404a604 ("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>
1 parent 73a5af0 commit b02531a

1 file changed

Lines changed: 4 additions & 0 deletions

File tree

fs/pstore/ram_core.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -489,6 +489,10 @@ static void *persistent_ram_iomap(phys_addr_t start, size_t size,
489489
else
490490
va = ioremap_wc(start, size);
491491

492+
/* We must release the mem region if ioremap fails. */
493+
if (!va)
494+
release_mem_region(start, size);
495+
492496
/*
493497
* Since request_mem_region() and ioremap() are byte-granularity
494498
* there is no need handle anything special like we do when the

0 commit comments

Comments
 (0)