aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mm/page_alloc.c2
-rw-r--r--mm/sparse.c2
-rw-r--r--scripts/mod/modpost.c27
3 files changed, 29 insertions, 2 deletions
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index fd7745111e1..6fd0b7455b0 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -2179,7 +2179,7 @@ void __init setup_per_cpu_pageset(void)
2179 2179
2180#endif 2180#endif
2181 2181
2182static __meminit 2182static __meminit noinline
2183int zone_wait_table_init(struct zone *zone, unsigned long zone_size_pages) 2183int zone_wait_table_init(struct zone *zone, unsigned long zone_size_pages)
2184{ 2184{
2185 int i; 2185 int i;
diff --git a/mm/sparse.c b/mm/sparse.c
index 9079afe8f45..6f3fff907bc 100644
--- a/mm/sparse.c
+++ b/mm/sparse.c
@@ -44,7 +44,7 @@ EXPORT_SYMBOL(page_to_nid);
44#endif 44#endif
45 45
46#ifdef CONFIG_SPARSEMEM_EXTREME 46#ifdef CONFIG_SPARSEMEM_EXTREME
47static struct mem_section *sparse_index_alloc(int nid) 47static struct mem_section noinline *sparse_index_alloc(int nid)
48{ 48{
49 struct mem_section *section = NULL; 49 struct mem_section *section = NULL;
50 unsigned long array_size = SECTIONS_PER_ROOT * 50 unsigned long array_size = SECTIONS_PER_ROOT *
diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
index 4ab36de45aa..480e18b00aa 100644
--- a/scripts/mod/modpost.c
+++ b/scripts/mod/modpost.c
@@ -642,6 +642,16 @@ static int strrcmp(const char *s, const char *sub)
642 * tosec = .init.text 642 * tosec = .init.text
643 * fromsec = .paravirtprobe 643 * fromsec = .paravirtprobe
644 * 644 *
645 * Pattern 9:
646 * Some of functions are common code between boot time and hotplug
647 * time. The bootmem allocater is called only boot time in its
648 * functions. So it's ok to reference.
649 * tosec = .init.text
650 *
651 * Pattern 10:
652 * ia64 has machvec table for each platform. It is mixture of function
653 * pointer of .init.text and .text.
654 * fromsec = .machvec
645 **/ 655 **/
646static int secref_whitelist(const char *modname, const char *tosec, 656static int secref_whitelist(const char *modname, const char *tosec,
647 const char *fromsec, const char *atsym, 657 const char *fromsec, const char *atsym,
@@ -668,6 +678,12 @@ static int secref_whitelist(const char *modname, const char *tosec,
668 NULL 678 NULL
669 }; 679 };
670 680
681 const char *pat4sym[] = {
682 "sparse_index_alloc",
683 "zone_wait_table_init",
684 NULL
685 };
686
671 /* Check for pattern 1 */ 687 /* Check for pattern 1 */
672 if (strcmp(tosec, ".init.data") != 0) 688 if (strcmp(tosec, ".init.data") != 0)
673 f1 = 0; 689 f1 = 0;
@@ -726,6 +742,17 @@ static int secref_whitelist(const char *modname, const char *tosec,
726 (strcmp(fromsec, ".paravirtprobe") == 0)) 742 (strcmp(fromsec, ".paravirtprobe") == 0))
727 return 1; 743 return 1;
728 744
745 /* Check for pattern 9 */
746 if ((strcmp(tosec, ".init.text") == 0) &&
747 (strcmp(fromsec, ".text") == 0))
748 for (s = pat4sym; *s; s++)
749 if (strcmp(atsym, *s) == 0)
750 return 1;
751
752 /* Check for pattern 10 */
753 if (strcmp(fromsec, ".machvec") == 0)
754 return 1;
755
729 return 0; 756 return 0;
730} 757}
731 758