From: Sam Ravnborg Date: Tue, 22 Jan 2008 01:25:37 +0000 (-0800) Subject: [SPARC64]: Fix section error in sparcspkr X-Git-Tag: v2.6.24~9^2~1 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2ad913babd5d597f9d9d71d9e93dd589d55e66cd;p=linux-2.6 [SPARC64]: Fix section error in sparcspkr With a sparc64 defconfig modified to set CONFIG_HOTPLUG=n the following error happened during link of vmlinux: local symbol 0: discarded in section `.devexit.text' from drivers/built-in.o local symbol 1: discarded in section `.devexit.text' from drivers/built-in.o (The error message above is from kbuild.git but it happens in mainline too) The error happens becase there is a reference from .text/.data to a function marked __devexit. With CONFIG_HOTPLUG=n all code marked __devexit are discarded and the linker complains. It was tracked down to sparcspkr.c which were missing __devexit_p() around the function pointers. Unfortunately modpost did not catch this since modpost do not warn about references from .data to .devexit from variables named *_driver. Signed-off-by: Sam Ravnborg Signed-off-by: David S. Miller --- diff --git a/drivers/input/misc/sparcspkr.c b/drivers/input/misc/sparcspkr.c index a3637d8708..fed3c375cc 100644 --- a/drivers/input/misc/sparcspkr.c +++ b/drivers/input/misc/sparcspkr.c @@ -195,7 +195,7 @@ static struct of_platform_driver ebus_beep_driver = { .name = "beep", .match_table = ebus_beep_match, .probe = ebus_beep_probe, - .remove = sparcspkr_remove, + .remove = __devexit_p(sparcspkr_remove), .shutdown = sparcspkr_shutdown, }; @@ -236,7 +236,7 @@ static struct of_platform_driver isa_beep_driver = { .name = "beep", .match_table = isa_beep_match, .probe = isa_beep_probe, - .remove = sparcspkr_remove, + .remove = __devexit_p(sparcspkr_remove), .shutdown = sparcspkr_shutdown, };