Three trivial patches of no real utility. Modules are boring.
Fortunately David Howells is looking to change this, with his module signing patchset. But that's for next merge window... Cheers, Rusty. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) iQIcBAABAgAGBQJPvN++AAoJENkgDmzRrbjxnB8QAJHnsOjx3M+2IwouCMqatNJf GrVMsy7I8UPJ1JSAR/2sCoWUUpg1xhUm+koO8rPJuJZ7kDtiRKEa5cJ1JsPiYzcc RA7hWOrN/hzAFSjvdOA4ezXqn3OYaW6S1W64DxN2e0bo73n1srtAZ2lxMsQ/2SOH xYQDbTK+/6ERTL0lCghxAZYCIrKeO2oWa46EqW6FdEU2bJisxYr5Kthhig7GaKYU xluQEvjoU7hbRm9wcvrCYR0BIxnohrhQ/m9DRTxqeRHzAShYx0tiilKlS3RfPda6 mlMY7sqOH6MPsUKq8IQIn3Mz4ut8fa9E8Ukzh0rMdGnVz3GwYTnWkWp8oinUs042 BJUMn0ke6OcCdfNwLM0MPUUHXEpzMRrK1Jt2L/S1S7xewoRmJ2UhWgsUHXwL39vu 4HR4k7xS/V5GjCUec0YBKcAFg/ccH1ktWzg6mQ1nNTX73aniAJ0by2NR+n1fZOi2 m/iBYgWXLMJ9nxGbHd7UXFIDDTXS0RRNvGVyRuI82LnOhE3X3GE7wbbRgHQAnPGy JlnjQUI5sPqbQE2W/+QSGW1e/HgVWmJKwkGONRLVdgkrHdF79gaUVHjp5JOI6JvT XCm3JLMxRC93ZNJnl3qwMX/2zsTh7SfWbLiB4fzTfr82sCWLhCrnD+PWxx1OwYvZ Vv3WTJQqPKXWKnkIqKIh =gI7A -----END PGP SIGNATURE----- Merge tag 'module-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus Pull module patches from Rusty Russell, who really sells them: "Three trivial patches of no real utility. Modules are boring." But to make things slightly more exciting, he adds: "Fortunately David Howells is looking to change this, with his module signing patchset. But that's for next merge window... Cheers, Rusty." * tag 'module-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus: Guard check in module loader against integer overflow modpost: use proper kernel style for autogenerated files modpost: Stop grab_file() from leaking filedescriptors if fstat() fails
This commit is contained in:
commit
fb827ec684
2 changed files with 12 additions and 8 deletions
|
@ -2429,7 +2429,8 @@ static int copy_and_check(struct load_info *info,
|
|||
goto free_hdr;
|
||||
}
|
||||
|
||||
if (len < hdr->e_shoff + hdr->e_shnum * sizeof(Elf_Shdr)) {
|
||||
if (hdr->e_shoff >= len ||
|
||||
hdr->e_shnum * sizeof(Elf_Shdr) > len - hdr->e_shoff) {
|
||||
err = -ENOEXEC;
|
||||
goto free_hdr;
|
||||
}
|
||||
|
|
|
@ -337,17 +337,20 @@ static void sym_update_crc(const char *name, struct module *mod,
|
|||
void *grab_file(const char *filename, unsigned long *size)
|
||||
{
|
||||
struct stat st;
|
||||
void *map;
|
||||
void *map = MAP_FAILED;
|
||||
int fd;
|
||||
|
||||
fd = open(filename, O_RDONLY);
|
||||
if (fd < 0 || fstat(fd, &st) != 0)
|
||||
if (fd < 0)
|
||||
return NULL;
|
||||
if (fstat(fd, &st))
|
||||
goto failed;
|
||||
|
||||
*size = st.st_size;
|
||||
map = mmap(NULL, *size, PROT_READ|PROT_WRITE, MAP_PRIVATE, fd, 0);
|
||||
close(fd);
|
||||
|
||||
failed:
|
||||
close(fd);
|
||||
if (map == MAP_FAILED)
|
||||
return NULL;
|
||||
return map;
|
||||
|
@ -1850,14 +1853,14 @@ static void add_header(struct buffer *b, struct module *mod)
|
|||
buf_printf(b, "\n");
|
||||
buf_printf(b, "struct module __this_module\n");
|
||||
buf_printf(b, "__attribute__((section(\".gnu.linkonce.this_module\"))) = {\n");
|
||||
buf_printf(b, " .name = KBUILD_MODNAME,\n");
|
||||
buf_printf(b, "\t.name = KBUILD_MODNAME,\n");
|
||||
if (mod->has_init)
|
||||
buf_printf(b, " .init = init_module,\n");
|
||||
buf_printf(b, "\t.init = init_module,\n");
|
||||
if (mod->has_cleanup)
|
||||
buf_printf(b, "#ifdef CONFIG_MODULE_UNLOAD\n"
|
||||
" .exit = cleanup_module,\n"
|
||||
"\t.exit = cleanup_module,\n"
|
||||
"#endif\n");
|
||||
buf_printf(b, " .arch = MODULE_ARCH_INIT,\n");
|
||||
buf_printf(b, "\t.arch = MODULE_ARCH_INIT,\n");
|
||||
buf_printf(b, "};\n");
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue