]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
mtd: nandsim: bugfix: fail if overridesize is too big
authorRichard Genoud <richard.genoud@gmail.com>
Wed, 12 Sep 2012 12:26:26 +0000 (14:26 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 12 Oct 2012 20:28:15 +0000 (05:28 +0900)
commit bb0a13a13411c4ce24c48c8ff3cdf7b48d237240 upstream.

If override size is too big, the module was actually loaded instead of
failing, because retval was not set.

This lead to memory corruption with the use of the freed structs nandsim
and nand_chip.

Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/mtd/nand/nandsim.c

index 63c8048d70b73c48bcc9f0a5cfeac510061af9a9..1f2b8803cca2fb886770d7ee7d89f6b58c0d0339 100644 (file)
@@ -2355,6 +2355,7 @@ static int __init ns_init_module(void)
                uint64_t new_size = (uint64_t)nsmtd->erasesize << overridesize;
                if (new_size >> overridesize != nsmtd->erasesize) {
                        NS_ERR("overridesize is too big\n");
+                       retval = -EINVAL;
                        goto err_exit;
                }
                /* N.B. This relies on nand_scan not doing anything with the size before we change it */