diff options
Diffstat (limited to 'scripts/mod')
-rw-r--r-- | scripts/mod/modpost.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c index 2aa47623f5f8..569e68410d7a 100644 --- a/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c | |||
@@ -641,12 +641,20 @@ static int secref_whitelist(const char *modname, const char *tosec, | |||
641 | if (f1 && f2) | 641 | if (f1 && f2) |
642 | return 1; | 642 | return 1; |
643 | 643 | ||
644 | /* Whitelist all references from .pci_fixup section if vmlinux */ | 644 | /* Whitelist all references from .pci_fixup section if vmlinux |
645 | * Whitelist all refereces from .text.head to .init.data if vmlinux | ||
646 | * Whitelist all refereces from .text.head to .init.text if vmlinux | ||
647 | */ | ||
645 | if (is_vmlinux(modname)) { | 648 | if (is_vmlinux(modname)) { |
646 | if ((strcmp(fromsec, ".pci_fixup") == 0) && | 649 | if ((strcmp(fromsec, ".pci_fixup") == 0) && |
647 | (strcmp(tosec, ".init.text") == 0)) | 650 | (strcmp(tosec, ".init.text") == 0)) |
648 | return 1; | 651 | return 1; |
649 | 652 | ||
653 | if ((strcmp(fromsec, ".text.head") == 0) && | ||
654 | ((strcmp(tosec, ".init.data") == 0) || | ||
655 | (strcmp(tosec, ".init.text") == 0))) | ||
656 | return 1; | ||
657 | |||
650 | /* Check for pattern 3 */ | 658 | /* Check for pattern 3 */ |
651 | for (s = pat3refsym; *s; s++) | 659 | for (s = pat3refsym; *s; s++) |
652 | if (strcmp(refsymname, *s) == 0) | 660 | if (strcmp(refsymname, *s) == 0) |