Use the devm version of memremap so that we can delete the unmapping code in driver remove, but more importantly so that we can unmap this memory region if memconsole_sysfs_init() errors out for some reason.
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> Cc: Guenter Roeck <gro...@chromium.org> Signed-off-by: Stephen Boyd <swb...@chromium.org> --- Quoting Stephen Boyd (2019-05-10 11:01:48) > diff --git a/drivers/firmware/google/memconsole-coreboot.c > b/drivers/firmware/google/memconsole-coreboot.c > index 86331807f1d5..0b29b27b86f5 100644 > --- a/drivers/firmware/google/memconsole-coreboot.c > +++ b/drivers/firmware/google/memconsole-coreboot.c > @@ -85,7 +85,7 @@ static int memconsole_probe(struct coreboot_device *dev) > > /* Read size only once to prevent overrun attack through /dev/mem. */ > cbmem_console_size = tmp_cbmc->size_dont_access_after_boot; > - cbmem_console = memremap(dev->cbmem_ref.cbmem_addr, > + cbmem_console = devm_memremap(&dev->dev, dev->cbmem_ref.cbmem_addr, Whoops, this returns an error pointer now. Here's an updated patch. drivers/firmware/google/memconsole-coreboot.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/drivers/firmware/google/memconsole-coreboot.c b/drivers/firmware/google/memconsole-coreboot.c index 86331807f1d5..cc3797f1ba85 100644 --- a/drivers/firmware/google/memconsole-coreboot.c +++ b/drivers/firmware/google/memconsole-coreboot.c @@ -85,13 +85,13 @@ static int memconsole_probe(struct coreboot_device *dev) /* Read size only once to prevent overrun attack through /dev/mem. */ cbmem_console_size = tmp_cbmc->size_dont_access_after_boot; - cbmem_console = memremap(dev->cbmem_ref.cbmem_addr, + cbmem_console = devm_memremap(&dev->dev, dev->cbmem_ref.cbmem_addr, cbmem_console_size + sizeof(*cbmem_console), MEMREMAP_WB); memunmap(tmp_cbmc); - if (!cbmem_console) - return -ENOMEM; + if (IS_ERR(cbmem_console)) + return PTR_ERR(cbmem_console); memconsole_setup(memconsole_coreboot_read); @@ -102,9 +102,6 @@ static int memconsole_remove(struct coreboot_device *dev) { memconsole_exit(); - if (cbmem_console) - memunmap(cbmem_console); - return 0; } base-commit: e93c9c99a629c61837d5a7fc2120cd2b6c70dbdd prerequisite-patch-id: b7c2a1e21fb108364f0e8cfaf1970cbc7903c750 -- Sent by a computer through tubes