[PATCH] Fix section for snd-aica platform driver

From: Uwe Kleine-KÃnig
Date: Sun Sep 14 2008 - 15:32:50 EST


Don't use __init but __devinit to define probe function. A pointer to
snd_aica_probe is passed to the core via platform_driver_register and so the
function must not disappear after the module is loaded. Using __init
and having HOTPLUG=y and SND_AICA=m the following probably oopses:

echo -n AICA > /sys/bus/platform/driver/AICA/unbind
echo -n AICA > /sys/bus/platform/driver/AICA/bind

Strange enough add_aicamixer_controls which is only called by
snd_aica_probe was already using __devinit.

While at it move the remove function to .devexit.text section.

Signed-off-by: Uwe Kleine-König <ukleinek@xxxxxxxxxxxxxxxxxxxxxxxxxx>
Cc: Adrian McMenamin <adrian@xxxxxxxxxxxxxxxxx>
Cc: Paul Mundt <lethal@xxxxxxxxxxxx>
Cc: Takashi Iwai <tiwai@xxxxxxx>
Cc: Jaroslav Kysela <perex@xxxxxxxx>
Cc: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>

---
sound/sh/aica.c | 6 +++---
1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/sound/sh/aica.c b/sound/sh/aica.c
index 54df8ba..8cdf71a 100644
--- a/sound/sh/aica.c
+++ b/sound/sh/aica.c
@@ -589,7 +589,7 @@ static int __devinit add_aicamixer_controls(struct snd_card_aica
return 0;
}

-static int snd_aica_remove(struct platform_device *devptr)
+static int __devexit snd_aica_remove(struct platform_device *devptr)
{
struct snd_card_aica *dreamcastcard;
dreamcastcard = platform_get_drvdata(devptr);
@@ -601,7 +601,7 @@ static int snd_aica_remove(struct platform_device *devptr)
return 0;
}

-static int __init snd_aica_probe(struct platform_device *devptr)
+static int __devinit snd_aica_probe(struct platform_device *devptr)
{
int err;
struct snd_card_aica *dreamcastcard;
@@ -650,7 +650,7 @@ static int __init snd_aica_probe(struct platform_device *devptr)

static struct platform_driver snd_aica_driver = {
.probe = snd_aica_probe,
- .remove = snd_aica_remove,
+ .remove = __devexit_p(snd_aica_remove),
.driver = {
.name = SND_AICA_DRIVER},
};
--
tg: (6bfb09a..) t/sectionfixes/snd_aica (depends on: linus/master)
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/