diff options
Diffstat (limited to 'drivers/gpio/gpio-mvebu.c')
| -rw-r--r-- | drivers/gpio/gpio-mvebu.c | 12 | 
1 files changed, 2 insertions, 10 deletions
diff --git a/drivers/gpio/gpio-mvebu.c b/drivers/gpio/gpio-mvebu.c index bf6c7c989ae..7472182967c 100644 --- a/drivers/gpio/gpio-mvebu.c +++ b/drivers/gpio/gpio-mvebu.c @@ -546,10 +546,8 @@ static int mvebu_gpio_probe(struct platform_device *pdev)  	spin_lock_init(&mvchip->lock);  	mvchip->membase = devm_ioremap_resource(&pdev->dev, res); -	if (IS_ERR(mvchip->membase)) { -		kfree(mvchip->chip.label); +	if (IS_ERR(mvchip->membase))  		return PTR_ERR(mvchip->membase); -	}  	/* The Armada XP has a second range of registers for the  	 * per-CPU registers */ @@ -557,16 +555,13 @@ static int mvebu_gpio_probe(struct platform_device *pdev)  		res = platform_get_resource(pdev, IORESOURCE_MEM, 1);  		if (! res) {  			dev_err(&pdev->dev, "Cannot get memory resource\n"); -			kfree(mvchip->chip.label);  			return -ENODEV;  		}  		mvchip->percpu_membase = devm_ioremap_resource(&pdev->dev,  							       res); -		if (IS_ERR(mvchip->percpu_membase)) { -			kfree(mvchip->chip.label); +		if (IS_ERR(mvchip->percpu_membase))   			return PTR_ERR(mvchip->percpu_membase); -		}  	}  	/* @@ -625,7 +620,6 @@ static int mvebu_gpio_probe(struct platform_device *pdev)  	mvchip->irqbase = irq_alloc_descs(-1, 0, ngpios, -1);  	if (mvchip->irqbase < 0) {  		dev_err(&pdev->dev, "no irqs\n"); -		kfree(mvchip->chip.label);  		return -ENOMEM;  	} @@ -633,7 +627,6 @@ static int mvebu_gpio_probe(struct platform_device *pdev)  				    mvchip->membase, handle_level_irq);  	if (! gc) {  		dev_err(&pdev->dev, "Cannot allocate generic irq_chip\n"); -		kfree(mvchip->chip.label);  		return -ENOMEM;  	} @@ -668,7 +661,6 @@ static int mvebu_gpio_probe(struct platform_device *pdev)  		irq_remove_generic_chip(gc, IRQ_MSK(ngpios), IRQ_NOREQUEST,  					IRQ_LEVEL | IRQ_NOPROBE);  		kfree(gc); -		kfree(mvchip->chip.label);  		return -ENODEV;  	}  |