Skip to content

Commit

Permalink
[SPARC64]: Fix section error in sparcspkr
Browse files Browse the repository at this point in the history
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 <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
  • Loading branch information
sravnborg authored and davem330 committed Jan 22, 2008
1 parent a1f35ba commit 2ad913b
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions drivers/input/misc/sparcspkr.c
Original file line number Diff line number Diff line change
Expand Up @@ -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,
};

Expand Down Expand Up @@ -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,
};

Expand Down

0 comments on commit 2ad913b

Please sign in to comment.