diff options
author | Sam Ravnborg <sam@ravnborg.org> | 2008-01-21 17:25:37 -0800 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-01-21 22:34:31 -0800 |
commit | 2ad913babd5d597f9d9d71d9e93dd589d55e66cd (patch) | |
tree | c70c6d4f86f66eb3acb2ee5ecec95747c13ab78c /drivers/input | |
parent | a1f35ba374bc421ab33e40163be2b57995b09962 (diff) | |
download | linux-2ad913babd5d597f9d9d71d9e93dd589d55e66cd.tar.bz2 |
[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 <sam@ravnborg.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/input')
-rw-r--r-- | drivers/input/misc/sparcspkr.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/input/misc/sparcspkr.c b/drivers/input/misc/sparcspkr.c index a3637d870880..fed3c375ccf3 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, }; |