diff options
author | Sam Ravnborg <sam@ravnborg.org> | 2007-05-17 14:14:48 -0400 |
---|---|---|
committer | Sam Ravnborg <sam@ravnborg.org> | 2007-05-19 03:11:58 -0400 |
commit | 0e0d314e6a01bb14d303e35e6f7ba24b17020044 (patch) | |
tree | 596929a373bbbba7c2d7af4ae6e485a4c584b76f /scripts/mod | |
parent | ca967258b69eb65dcb07bbab90fdf964c6d2ec45 (diff) |
kbuild: introduce __init_refok/__initdata_refok to supress section mismatch warnings
Throughout the kernel there are a few legitimite references
to init or exit sections. Most of these are covered by the
patterns included in modpost but a few nees special attention.
To avoid hardcoding a lot of function names in modpost introduce
a marker so relevant function/data can be marked.
When modpost see a reference to a init/exit function from
a function/data marked no warning will be issued.
Idea from: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Diffstat (limited to 'scripts/mod')
-rw-r--r-- | scripts/mod/modpost.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c index 2909391a8035..7c87267b6ff0 100644 --- a/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c | |||
@@ -583,6 +583,12 @@ static int strrcmp(const char *s, const char *sub) | |||
583 | 583 | ||
584 | /** | 584 | /** |
585 | * Whitelist to allow certain references to pass with no warning. | 585 | * Whitelist to allow certain references to pass with no warning. |
586 | * | ||
587 | * Pattern 0: | ||
588 | * Do not warn if funtion/data are marked with __init_refok/__initdata_refok. | ||
589 | * The pattern is identified by: | ||
590 | * fromsec = .text.init.refok | .data.init.refok | ||
591 | * | ||
586 | * Pattern 1: | 592 | * Pattern 1: |
587 | * If a module parameter is declared __initdata and permissions=0 | 593 | * If a module parameter is declared __initdata and permissions=0 |
588 | * then this is legal despite the warning generated. | 594 | * then this is legal despite the warning generated. |
@@ -686,6 +692,11 @@ static int secref_whitelist(const char *modname, const char *tosec, | |||
686 | NULL | 692 | NULL |
687 | }; | 693 | }; |
688 | 694 | ||
695 | /* Check for pattern 0 */ | ||
696 | if ((strcmp(fromsec, ".text.init.refok") == 0) || | ||
697 | (strcmp(fromsec, ".data.init.refok") == 0)) | ||
698 | return 1; | ||
699 | |||
689 | /* Check for pattern 1 */ | 700 | /* Check for pattern 1 */ |
690 | if (strcmp(tosec, ".init.data") != 0) | 701 | if (strcmp(tosec, ".init.data") != 0) |
691 | f1 = 0; | 702 | f1 = 0; |