Both callers of coreboot_table_init() ioremap the pointer that comes in but they don't unmap the memory on failure. Both of them also fail probe immediately with the return value of coreboot_table_init(), leaking a mapping when it fails. Plug the leak so the mapping isn't left unused.
Cc: Wei-Ning Huang <wnhu...@chromium.org> Cc: Julius Werner <jwer...@chromium.org> Cc: Brian Norris <briannor...@chromium.org> Cc: Samuel Holland <sam...@sholland.org> Fixes: 570d30c2823f ("firmware: coreboot: Expose the coreboot table as a bus") Signed-off-by: Stephen Boyd <swb...@chromium.org> --- drivers/firmware/google/coreboot_table.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/firmware/google/coreboot_table.c b/drivers/firmware/google/coreboot_table.c index 19db5709ae28..0d3e140444ae 100644 --- a/drivers/firmware/google/coreboot_table.c +++ b/drivers/firmware/google/coreboot_table.c @@ -138,6 +138,9 @@ int coreboot_table_init(struct device *dev, void __iomem *ptr) ptr_entry += entry.size; } + if (ret) + iounmap(ptr); + return ret; } EXPORT_SYMBOL(coreboot_table_init); -- Sent by a computer through tubes