Commit 418c8f89 authored by Uwe Kleine-König's avatar Uwe Kleine-König Committed by Jaroslav Kysela

ALSA: Fix section for snd-aica platform driver

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: default avatarUwe Kleine-König <ukleinek@informatik.uni-freiburg.de>
Cc: Adrian McMenamin <adrian@mcmen.demon.co.uk>
Cc: Paul Mundt <lethal@linux-sh.org>
Cc: Jaroslav Kysela <perex@perex.cz>
Cc: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
Signed-off-by: default avatarJaroslav Kysela <perex@perex.cz>
parent f7cf0a7c
...@@ -590,7 +590,7 @@ static int __devinit add_aicamixer_controls(struct snd_card_aica ...@@ -590,7 +590,7 @@ static int __devinit add_aicamixer_controls(struct snd_card_aica
return 0; 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; struct snd_card_aica *dreamcastcard;
dreamcastcard = platform_get_drvdata(devptr); dreamcastcard = platform_get_drvdata(devptr);
...@@ -602,7 +602,7 @@ static int snd_aica_remove(struct platform_device *devptr) ...@@ -602,7 +602,7 @@ static int snd_aica_remove(struct platform_device *devptr)
return 0; return 0;
} }
static int __init snd_aica_probe(struct platform_device *devptr) static int __devinit snd_aica_probe(struct platform_device *devptr)
{ {
int err; int err;
struct snd_card_aica *dreamcastcard; struct snd_card_aica *dreamcastcard;
...@@ -651,7 +651,7 @@ static int __init snd_aica_probe(struct platform_device *devptr) ...@@ -651,7 +651,7 @@ static int __init snd_aica_probe(struct platform_device *devptr)
static struct platform_driver snd_aica_driver = { static struct platform_driver snd_aica_driver = {
.probe = snd_aica_probe, .probe = snd_aica_probe,
.remove = snd_aica_remove, .remove = __devexit_p(snd_aica_remove),
.driver = { .driver = {
.name = SND_AICA_DRIVER}, .name = SND_AICA_DRIVER},
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment