Commit b88aa850 authored by Chuhong Yuan's avatar Chuhong Yuan Committed by Lee Jones
Browse files

mfd: sm501: Fix mismatches of request_mem_region



This driver misuses release_resource + kfree to match request_mem_region,
which is incorrect.
The right way is to use release_mem_region.
Replace the mismatched calls with the right ones to fix it.

Signed-off-by: default avatarChuhong Yuan <hslester96@gmail.com>
Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
parent f2a19c5b
Loading
Loading
Loading
Loading
+7 −12
Original line number Diff line number Diff line
@@ -1086,8 +1086,7 @@ static int sm501_register_gpio(struct sm501_devdata *sm)
	iounmap(gpio->regs);

 err_claimed:
	release_resource(gpio->regs_res);
	kfree(gpio->regs_res);
	release_mem_region(iobase, 0x20);

	return ret;
}
@@ -1095,6 +1094,7 @@ static int sm501_register_gpio(struct sm501_devdata *sm)
static void sm501_gpio_remove(struct sm501_devdata *sm)
{
	struct sm501_gpio *gpio = &sm->gpio;
	resource_size_t iobase = sm->io_res->start + SM501_GPIO;

	if (!sm->gpio.registered)
		return;
@@ -1103,8 +1103,7 @@ static void sm501_gpio_remove(struct sm501_devdata *sm)
	gpiochip_remove(&gpio->high.gpio);

	iounmap(gpio->regs);
	release_resource(gpio->regs_res);
	kfree(gpio->regs_res);
	release_mem_region(iobase, 0x20);
}

static inline int sm501_gpio_isregistered(struct sm501_devdata *sm)
@@ -1427,8 +1426,7 @@ static int sm501_plat_probe(struct platform_device *dev)
	return sm501_init_dev(sm);

 err_claim:
	release_resource(sm->regs_claim);
	kfree(sm->regs_claim);
	release_mem_region(sm->io_res->start, 0x100);
 err_res:
	kfree(sm);
 err1:
@@ -1637,8 +1635,7 @@ static int sm501_pci_probe(struct pci_dev *dev,
	return 0;

 err4:
	release_resource(sm->regs_claim);
	kfree(sm->regs_claim);
	release_mem_region(sm->io_res->start, 0x100);
 err3:
	pci_disable_device(dev);
 err2:
@@ -1673,8 +1670,7 @@ static void sm501_pci_remove(struct pci_dev *dev)
	sm501_dev_remove(sm);
	iounmap(sm->regs);

	release_resource(sm->regs_claim);
	kfree(sm->regs_claim);
	release_mem_region(sm->io_res->start, 0x100);

	pci_disable_device(dev);
}
@@ -1686,8 +1682,7 @@ static int sm501_plat_remove(struct platform_device *dev)
	sm501_dev_remove(sm);
	iounmap(sm->regs);

	release_resource(sm->regs_claim);
	kfree(sm->regs_claim);
	release_mem_region(sm->io_res->start, 0x100);

	return 0;
}