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

Commit a5dd6970 authored by Rusty Russell's avatar Rusty Russell Committed by Linus Torvalds
Browse files

module: be more picky about allowing missing module versions



We allow missing __versions sections, because modprobe --force strips
it.  It makes less sense to allow sections where there's no version
for a specific symbol the module uses, so disallow that.

Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 6c2545ee
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -917,6 +917,10 @@ static int check_version(Elf_Shdr *sechdrs,
	if (!crc)
		return 1;

	/* No versions at all?  modprobe --force does this. */
	if (versindex == 0)
		return try_to_force_load(mod, symname) == 0;

	versions = (void *) sechdrs[versindex].sh_addr;
	num_versions = sechdrs[versindex].sh_size
		/ sizeof(struct modversion_info);
@@ -932,8 +936,9 @@ static int check_version(Elf_Shdr *sechdrs,
		goto bad_version;
	}

	if (!try_to_force_load(mod, symname))
		return 1;
	printk(KERN_WARNING "%s: no symbol version for %s\n",
	       mod->name, symname);
	return 0;

bad_version:
	printk("%s: disagrees about version of symbol %s\n",