ARM: s3c: mark s3c2440_clk_add as __init_refok
authorArnd Bergmann <arnd@arndb.de>
Fri, 12 Oct 2012 11:03:28 +0000 (11:03 +0000)
committerArnd Bergmann <arnd@arndb.de>
Wed, 17 Oct 2012 13:27:29 +0000 (15:27 +0200)
commit5276b6877efb8a180e254a06d7497f802f6f9755
tree36e20457b40aa5c8029f60516fd566dfc7a9d0b2
parentc10356b9846b13651a8a24c3a31e029ffe6eafd9
ARM: s3c: mark s3c2440_clk_add as __init_refok

s3c2440_clk_add is a subsys_interface method and calls clkdev_add_table,
which is marked as __init. The modpost script complains about this
because we must not call an __init function from a function in the .text
section, and we cannot reference an __init function from a subsys_interface
pointer.

I have verified that the only code path into s3c2440_clk_add() is
from "int __init s3c2440_init(void)", so s3c2440_clk_add can be marked
__init_refok instead.

Without this patch, building mini2440_defconfig results in:

WARNING: vmlinux.o(.text+0x9848): Section mismatch in reference from the function s3c2440_clk_add() to the function .init.text:clkdev_add_table()
The function s3c2440_clk_add() references
the function __init clkdev_add_table().
This is often because s3c2440_clk_add lacks a __init
annotation or the annotation of clkdev_add_table is wrong.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Kukjin Kim <kgene.kim@samsung.com>
Cc: Russell King <linux@arm.linux.org.uk>
Cc: Mike Turquette <mturquette@linaro.org>
Cc: Ben Dooks <ben-linux@fluff.org>
arch/arm/mach-s3c24xx/clock-s3c2440.c