mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
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>
This commit is contained in:
parent
ca967258b6
commit
0e0d314e6a
3 changed files with 28 additions and 2 deletions
|
@ -583,6 +583,12 @@ static int strrcmp(const char *s, const char *sub)
|
|||
|
||||
/**
|
||||
* Whitelist to allow certain references to pass with no warning.
|
||||
*
|
||||
* Pattern 0:
|
||||
* Do not warn if funtion/data are marked with __init_refok/__initdata_refok.
|
||||
* The pattern is identified by:
|
||||
* fromsec = .text.init.refok | .data.init.refok
|
||||
*
|
||||
* Pattern 1:
|
||||
* If a module parameter is declared __initdata and permissions=0
|
||||
* then this is legal despite the warning generated.
|
||||
|
@ -686,6 +692,11 @@ static int secref_whitelist(const char *modname, const char *tosec,
|
|||
NULL
|
||||
};
|
||||
|
||||
/* Check for pattern 0 */
|
||||
if ((strcmp(fromsec, ".text.init.refok") == 0) ||
|
||||
(strcmp(fromsec, ".data.init.refok") == 0))
|
||||
return 1;
|
||||
|
||||
/* Check for pattern 1 */
|
||||
if (strcmp(tosec, ".init.data") != 0)
|
||||
f1 = 0;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue