Messages in this thread Patch in this message | | | From | Uwe Kleine-König <> | Subject | [PATCH] Fix section for snd-aica platform driver | Date | Sun, 14 Sep 2008 21:32:33 +0200 |
| |
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@informatik.uni-freiburg.de> Cc: Adrian McMenamin <adrian@mcmen.demon.co.uk> Cc: Paul Mundt <lethal@linux-sh.org> Cc: Takashi Iwai <tiwai@suse.de> Cc: Jaroslav Kysela <perex@perex.cz> Cc: Andrew Morton <akpm@linux-foundation.org>
--- 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@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |