irqchip/sunxi-nmi: Fix error check of of_io_request_and_map()
authorVladimir Zapolskiy <vz@mleia.com>
Wed, 9 Mar 2016 01:21:29 +0000 (03:21 +0200)
committerThomas Gleixner <tglx@linutronix.de>
Thu, 10 Mar 2016 15:03:30 +0000 (16:03 +0100)
The of_io_request_and_map() returns a valid pointer in iomem region or
ERR_PTR(), check for NULL always fails and may cause a NULL pointer
dereference on error path.

Fixes: 0e841b04c829 ("irqchip/sunxi-nmi: Switch to of_io_request_and_map() from of_iomap()")
Signed-off-by: Vladimir Zapolskiy <vz@mleia.com>
Cc: Jason Cooper <jason@lakedaemon.net>
Cc: Marc Zyngier <marc.zyngier@arm.com>
Cc: Chen-Yu Tsai <wens@csie.org>
Cc: Maxime Ripard <maxime.ripard@free-electrons.com>
Cc: linux-arm-kernel@lists.infradead.org
Link: http://lkml.kernel.org/r/1457486489-10189-1-git-send-email-vz@mleia.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
drivers/irqchip/irq-sunxi-nmi.c

index 0820f67cc9a76b42a8891501c9f04c574d6e27e8..668730c5cb66f3bf4b06846ea4daf4b97dd3675d 100644 (file)
@@ -160,9 +160,9 @@ static int __init sunxi_sc_nmi_irq_init(struct device_node *node,
 
        gc = irq_get_domain_generic_chip(domain, 0);
        gc->reg_base = of_io_request_and_map(node, 0, of_node_full_name(node));
-       if (!gc->reg_base) {
+       if (IS_ERR(gc->reg_base)) {
                pr_err("unable to map resource\n");
-               ret = -ENOMEM;
+               ret = PTR_ERR(gc->reg_base);
                goto fail_irqd_remove;
        }