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

Commit 8e70c458 authored by Sam Ravnborg's avatar Sam Ravnborg
Browse files

kbuild: warn about duplicate exported symbols



In modpost introduce a check for symbols exported twice.
This check caught only one victim (inet_bind_bucket_create) for
which a patch is already sent to netdev.

Signed-off-by: default avatarSam Ravnborg <sam@ravnborg.org>
parent 040fcc81
Loading
Loading
Loading
Loading
+13 −3
Original line number Diff line number Diff line
@@ -117,6 +117,7 @@ struct symbol {
	unsigned int vmlinux:1;    /* 1 if symbol is defined in vmlinux */
	unsigned int kernel:1;     /* 1 if symbol is from kernel
				    *  (only for external modules) **/
	unsigned int preloaded:1;  /* 1 if symbol from Module.symvers */
	char name[0];
};

@@ -186,9 +187,17 @@ static struct symbol *sym_add_exported(const char *name, struct module *mod)
{
	struct symbol *s = find_symbol(name);

	if (!s)
	if (!s) {
		s = new_symbol(name, mod);

	} else {
		if (!s->preloaded) {
			warn("%s: duplicate symbol '%s' previous definition "
			     "was in %s%s\n", mod->name, name,
			     s->module->name,
			     is_vmlinux(s->module->name) ?"":".ko");
		}
	}
	s->preloaded = 0;
	s->vmlinux   = is_vmlinux(mod->name);
	s->kernel    = 0;
	return s;
@@ -707,6 +716,7 @@ static void read_dump(const char *fname, unsigned int kernel)
		}
		s = sym_add_exported(symname, mod);
		s->kernel    = kernel;
		s->preloaded = 1;
		sym_update_crc(symname, mod, crc);
	}
	return;