Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 92080309 authored by Sam Ravnborg's avatar Sam Ravnborg
Browse files

init/main: use __init_refok to fix section mismatch



Kill a special case in modpost by introducing the
__init_refok marker.

Signed-off-by: default avatarSam Ravnborg <sam@ravnborg.org>
parent 0e0d314e
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -423,7 +423,7 @@ static void __init setup_command_line(char *command_line)
 * gcc-3.4 accidentally inlines this function, so use noinline.
 */

static void noinline rest_init(void)
static void noinline __init_refok rest_init(void)
	__releases(kernel_lock)
{
	int pid;
+0 −14
Original line number Diff line number Diff line
@@ -626,14 +626,6 @@ static int strrcmp(const char *s, const char *sub)
 *   This pattern is identified by
 *   refsymname = __init_begin, _sinittext, _einittext
 *
 * Pattern 6:
 *   During the early init phase we have references from .init.text to
 *   .text we have an intended section mismatch - do not warn about it.
 *   See kernel_init() in init/main.c
 *   tosec   = .init.text
 *   fromsec = .text
 *   atsym = kernel_init
 *
 * Pattern 7:
 *  Logos used in drivers/video/logo reside in __initdata but the
 *  funtion that references them are EXPORT_SYMBOL() so cannot be
@@ -738,12 +730,6 @@ static int secref_whitelist(const char *modname, const char *tosec,
		if (strcmp(refsymname, *s) == 0)
			return 1;

	/* Check for pattern 6 */
	if ((strcmp(tosec, ".init.text") == 0) &&
	    (strcmp(fromsec, ".text") == 0) &&
	    (strcmp(refsymname, "kernel_init") == 0))
		return 1;

	/* Check for pattern 7 */
	if ((strcmp(tosec, ".init.data") == 0) &&
	    (strncmp(fromsec, ".text", strlen(".text")) == 0) &&