diff options
author | Hein Tibosch <hein_tibosch@yahoo.es> | 2012-10-04 20:16:58 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-10-05 14:05:32 -0400 |
commit | 33e2a4227ddff7c18921ac175fae3ab0e3ff8a76 (patch) | |
tree | e3f8dfab4c54292b0266c0d585e47f3745e97fd1 | |
parent | 4965f5667f36a95b41cda6638875bc992bd7d18b (diff) |
lib/decompress.c add __init to decompress_method and data
Fix the warning:
WARNING: vmlinux.o(.text+0x14cfd8): Section mismatch in reference from the variable compressed_formats to the function .init.text:gunzip()
The function compressed_formats() references
the function __init gunzip().
etc..
Within decompress.c, compressed_formats[] needs 'a __initdata annotation',
because some of it's data members refer to functions which will be
unloaded after init.
Consequently, its user decompress_method() will get the __init prefix.
Signed-off-by: Hein Tibosch <hein_tibosch@yahoo.es>
Cc: Albin Tonnerre <albin.tonnerre@free-electrons.com>
Cc: Phillip Lougher <phillip@lougher.demon.co.uk>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r-- | lib/decompress.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/lib/decompress.c b/lib/decompress.c index 3d766b7f60ab..31a804277282 100644 --- a/lib/decompress.c +++ b/lib/decompress.c | |||
@@ -14,6 +14,7 @@ | |||
14 | 14 | ||
15 | #include <linux/types.h> | 15 | #include <linux/types.h> |
16 | #include <linux/string.h> | 16 | #include <linux/string.h> |
17 | #include <linux/init.h> | ||
17 | 18 | ||
18 | #ifndef CONFIG_DECOMPRESS_GZIP | 19 | #ifndef CONFIG_DECOMPRESS_GZIP |
19 | # define gunzip NULL | 20 | # define gunzip NULL |
@@ -31,11 +32,13 @@ | |||
31 | # define unlzo NULL | 32 | # define unlzo NULL |
32 | #endif | 33 | #endif |
33 | 34 | ||
34 | static const struct compress_format { | 35 | struct compress_format { |
35 | unsigned char magic[2]; | 36 | unsigned char magic[2]; |
36 | const char *name; | 37 | const char *name; |
37 | decompress_fn decompressor; | 38 | decompress_fn decompressor; |
38 | } compressed_formats[] = { | 39 | }; |
40 | |||
41 | static const struct compress_format compressed_formats[] __initdata = { | ||
39 | { {037, 0213}, "gzip", gunzip }, | 42 | { {037, 0213}, "gzip", gunzip }, |
40 | { {037, 0236}, "gzip", gunzip }, | 43 | { {037, 0236}, "gzip", gunzip }, |
41 | { {0x42, 0x5a}, "bzip2", bunzip2 }, | 44 | { {0x42, 0x5a}, "bzip2", bunzip2 }, |
@@ -45,7 +48,7 @@ static const struct compress_format { | |||
45 | { {0, 0}, NULL, NULL } | 48 | { {0, 0}, NULL, NULL } |
46 | }; | 49 | }; |
47 | 50 | ||
48 | decompress_fn decompress_method(const unsigned char *inbuf, int len, | 51 | decompress_fn __init decompress_method(const unsigned char *inbuf, int len, |
49 | const char **name) | 52 | const char **name) |
50 | { | 53 | { |
51 | const struct compress_format *cf; | 54 | const struct compress_format *cf; |