summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2009-10-26 16:50:06 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2009-10-29 07:39:30 -0700
commit46c529cf79f6c7b239f83b4997d676dd5b51908c (patch)
tree2d04be82f11d82a48ab3b72fa0e71862bed24ffa
parentc68d2b1594548cda7f6dbac6a4d9d30a9b01558c (diff)
twl4030-gpio: remove __devexit markings from remove func
The gpio_twl4030_probe() function calls gpio_twl4030_remove(), and the former has __devinit, so the latter cannot use __devexit. Otherwise we hit the section mismatch warning: WARNING: drivers/gpio/built-in.o(.devinit.text+0x71a): Section mismatch in reference from the function _gpio_twl4030_probe() to the function .devexit.text:_gpio_twl4030_remove() The function __devinit _gpio_twl4030_probe() references a function __devexit _gpio_twl4030_remove(). This is often seen when error handling in the init function uses functionality in the exit path. The fix is often to remove the __devexit annotation of _gpio_twl4030_remove() so it may be used outside an exit section. Signed-off-by: Mike Frysinger <vapier@gentoo.org> Cc: David Brownell <david-b@pacbell.net> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--drivers/gpio/twl4030-gpio.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/gpio/twl4030-gpio.c b/drivers/gpio/twl4030-gpio.c
index afad14792141..49384a7c5492 100644
--- a/drivers/gpio/twl4030-gpio.c
+++ b/drivers/gpio/twl4030-gpio.c
@@ -460,7 +460,8 @@ no_irqs:
return ret;
}
-static int __devexit gpio_twl4030_remove(struct platform_device *pdev)
+/* Cannot use __devexit as gpio_twl4030_probe() calls us */
+static int gpio_twl4030_remove(struct platform_device *pdev)
{
struct twl4030_gpio_platform_data *pdata = pdev->dev.platform_data;
int status;
@@ -493,7 +494,7 @@ static struct platform_driver gpio_twl4030_driver = {
.driver.name = "twl4030_gpio",
.driver.owner = THIS_MODULE,
.probe = gpio_twl4030_probe,
- .remove = __devexit_p(gpio_twl4030_remove),
+ .remove = gpio_twl4030_remove,
};
static int __init gpio_twl4030_init(void)