diff options
Diffstat (limited to 'scripts/mod/modpost.c')
-rw-r--r-- | scripts/mod/modpost.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c index 1912c752e422..be0827f734c2 100644 --- a/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c | |||
@@ -589,7 +589,7 @@ static int strrcmp(const char *s, const char *sub) | |||
589 | * the pattern is identified by: | 589 | * the pattern is identified by: |
590 | * tosec = .init.text | .exit.text | .init.data | 590 | * tosec = .init.text | .exit.text | .init.data |
591 | * fromsec = .data | 591 | * fromsec = .data |
592 | * atsym = *driver, *_template, *_sht, *_ops, *_probe, *probe_one | 592 | * atsym = *driver, *_template, *_sht, *_ops, *_probe, *probe_one, *_console |
593 | * | 593 | * |
594 | * Pattern 3: | 594 | * Pattern 3: |
595 | * Some symbols belong to init section but still it is ok to reference | 595 | * Some symbols belong to init section but still it is ok to reference |
@@ -599,6 +599,14 @@ static int strrcmp(const char *s, const char *sub) | |||
599 | * For ex. symbols marking the init section boundaries. | 599 | * For ex. symbols marking the init section boundaries. |
600 | * This pattern is identified by | 600 | * This pattern is identified by |
601 | * refsymname = __init_begin, _sinittext, _einittext | 601 | * refsymname = __init_begin, _sinittext, _einittext |
602 | * Pattern 4: | ||
603 | * During the early init phase we have references from .init.text to | ||
604 | * .text we have an intended section mismatch - do not warn about it. | ||
605 | * See kernel_init() in init/main.c | ||
606 | * tosec = .init.text | ||
607 | * fromsec = .text | ||
608 | * atsym = kernel_init | ||
609 | * Some symbols belong to init section but still it is ok to reference | ||
602 | **/ | 610 | **/ |
603 | static int secref_whitelist(const char *modname, const char *tosec, | 611 | static int secref_whitelist(const char *modname, const char *tosec, |
604 | const char *fromsec, const char *atsym, | 612 | const char *fromsec, const char *atsym, |
@@ -668,6 +676,11 @@ static int secref_whitelist(const char *modname, const char *tosec, | |||
668 | if (strcmp(refsymname, *s) == 0) | 676 | if (strcmp(refsymname, *s) == 0) |
669 | return 1; | 677 | return 1; |
670 | } | 678 | } |
679 | /* Check for pattern 4 */ | ||
680 | if ((strcmp(tosec, ".init.text") == 0) && | ||
681 | (strcmp(fromsec, ".text") == 0) && | ||
682 | (strcmp(refsymname, "kernel_init") == 0)) | ||
683 | return 1; | ||
671 | return 0; | 684 | return 0; |
672 | } | 685 | } |
673 | 686 | ||