OSDN Git Service

mfd: sm501: Fix mismatches of request_mem_region
authorChuhong Yuan <hslester96@gmail.com>
Sat, 16 Nov 2019 15:13:08 +0000 (23:13 +0800)
committerLee Jones <lee.jones@linaro.org>
Fri, 24 Jan 2020 07:33:56 +0000 (07:33 +0000)
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: Chuhong Yuan <hslester96@gmail.com>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
drivers/mfd/sm501.c

index 154270f..e49787e 100644 (file)
@@ -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;
 }