Messages in this thread Patch in this message | | | Date | Wed, 15 Feb 2006 18:23:06 -0300 | From | Davi Arnaut <> | Subject | [PATCH 1/2] strndup_user, convert (module) |
| |
Convert kernel/module.c string duplication to strdup_user()
Signed-off-by: Davi Arnaut <davi.arnaut@gmail.com> --
diff --git a/kernel/module.c b/kernel/module.c index 5aad477..d7d428d 100644 --- a/kernel/module.c +++ b/kernel/module.c @@ -1538,7 +1538,6 @@ static struct module *load_module(void _ unsigned int i, symindex = 0, strindex = 0, setupindex, exindex, exportindex, modindex, obsparmindex, infoindex, gplindex, crcindex, gplcrcindex, versindex, pcpuindex; - long arglen; struct module *mod; long err = 0; void *percpu = NULL, *ptr = NULL; /* Stops spurious gcc warning */ @@ -1655,23 +1654,11 @@ static struct module *load_module(void _ } /* Now copy in args */ - arglen = strlen_user(uargs); - if (!arglen) { - err = -EFAULT; - goto free_hdr; - } - args = kmalloc(arglen, GFP_KERNEL); - if (!args) { - err = -ENOMEM; + args = strdup_user(uargs); + if (IS_ERR(args)) { + err = PTR_ERR(args); goto free_hdr; } - if (copy_from_user(args, uargs, arglen) != 0) { - err = -EFAULT; - goto free_mod; - } - - /* Userspace could have altered the string after the strlen_user() */ - args[arglen - 1] = '\0'; if (find_module(mod->name)) { err = -EEXIST; - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |