diff options
Diffstat (limited to 'scripts/mod/modpost.c')
-rw-r--r-- | scripts/mod/modpost.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c index 4ab36de45aa2..480e18b00aa6 100644 --- a/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c @@ -642,6 +642,16 @@ static int strrcmp(const char *s, const char *sub) * tosec = .init.text * fromsec = .paravirtprobe * + * Pattern 9: + * Some of functions are common code between boot time and hotplug + * time. The bootmem allocater is called only boot time in its + * functions. So it's ok to reference. + * tosec = .init.text + * + * Pattern 10: + * ia64 has machvec table for each platform. It is mixture of function + * pointer of .init.text and .text. + * fromsec = .machvec **/ static int secref_whitelist(const char *modname, const char *tosec, const char *fromsec, const char *atsym, @@ -668,6 +678,12 @@ static int secref_whitelist(const char *modname, const char *tosec, NULL }; + const char *pat4sym[] = { + "sparse_index_alloc", + "zone_wait_table_init", + NULL + }; + /* Check for pattern 1 */ if (strcmp(tosec, ".init.data") != 0) f1 = 0; @@ -726,6 +742,17 @@ static int secref_whitelist(const char *modname, const char *tosec, (strcmp(fromsec, ".paravirtprobe") == 0)) return 1; + /* Check for pattern 9 */ + if ((strcmp(tosec, ".init.text") == 0) && + (strcmp(fromsec, ".text") == 0)) + for (s = pat4sym; *s; s++) + if (strcmp(atsym, *s) == 0) + return 1; + + /* Check for pattern 10 */ + if (strcmp(fromsec, ".machvec") == 0) + return 1; + return 0; } |