the memory allocated and ioremap address need free after device_register return error. Signed-off-by: Ding Xiang <dingxiang@xxxxxxxxxxxxxxxxxxxx> --- arch/mips/txx9/generic/setup.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/arch/mips/txx9/generic/setup.c b/arch/mips/txx9/generic/setup.c index f6d9182..7f4fd2b 100644 --- a/arch/mips/txx9/generic/setup.c +++ b/arch/mips/txx9/generic/setup.c @@ -961,11 +961,13 @@ void __init txx9_sramc_init(struct resource *r) err = sysfs_create_bin_file(&dev->dev.kobj, &dev->bindata_attr); if (err) { device_unregister(&dev->dev); - iounmap(dev->base); - kfree(dev); + goto exit_free; } return; exit_put: put_device(&dev->dev); +exit_free: + iounmap(dev->base); + kfree(dev); return; } -- 1.9.1