浏览代码

gpio: mxs: Unmap region obtained by of_iomap

Free memory mapping, if mxs_gpio_probe is not successful.

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Arvind Yadav 8 年之前
父节点
当前提交
44df08198b
共有 1 个文件被更改,包括 6 次插入2 次删除
  1. 6 2
      drivers/gpio/gpio-mxs.c

+ 6 - 2
drivers/gpio/gpio-mxs.c

@@ -308,8 +308,10 @@ static int mxs_gpio_probe(struct platform_device *pdev)
 	writel(~0U, port->base + PINCTRL_IRQSTAT(port) + MXS_CLR);
 	writel(~0U, port->base + PINCTRL_IRQSTAT(port) + MXS_CLR);
 
 
 	irq_base = irq_alloc_descs(-1, 0, 32, numa_node_id());
 	irq_base = irq_alloc_descs(-1, 0, 32, numa_node_id());
-	if (irq_base < 0)
-		return irq_base;
+	if (irq_base < 0) {
+		err = irq_base;
+		goto out_iounmap;
+	}
 
 
 	port->domain = irq_domain_add_legacy(np, 32, irq_base, 0,
 	port->domain = irq_domain_add_legacy(np, 32, irq_base, 0,
 					     &irq_domain_simple_ops, NULL);
 					     &irq_domain_simple_ops, NULL);
@@ -349,6 +351,8 @@ out_irqdomain_remove:
 	irq_domain_remove(port->domain);
 	irq_domain_remove(port->domain);
 out_irqdesc_free:
 out_irqdesc_free:
 	irq_free_descs(irq_base, 32);
 	irq_free_descs(irq_base, 32);
+out_iounmap:
+	iounmap(port->base);
 	return err;
 	return err;
 }
 }