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

Commit ba26cd7d authored by Boris Brezillon's avatar Boris Brezillon
Browse files

mtd: sa1100: avoid VLA in sa1100_setup_mtd



Enabling -Wvla found another variable-length array with randconfig
testing:

drivers/mtd/maps/sa1100-flash.c: In function 'sa1100_setup_mtd':
drivers/mtd/maps/sa1100-flash.c:224:10: error: ISO C90 forbids variable length array 'cdev' [-Werror=vla]

Dynamically allocate the cdev array passed to mtd_concat_create()
instead of using a VLA.

Reported-by: default avatarArnd Bergmann <arnd@arndb.de>
Signed-off-by: default avatarBoris Brezillon <boris.brezillon@bootlin.com>
Cc: Kees Cook <keescook@chromium.org>
Cc: Olof Johansson <olof@lixom.net>
parent 90c31cb9
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -221,7 +221,14 @@ static struct sa_info *sa1100_setup_mtd(struct platform_device *pdev,
		info->mtd = info->subdev[0].mtd;
		ret = 0;
	} else if (info->num_subdev > 1) {
		struct mtd_info *cdev[nr];
		struct mtd_info **cdev;

		cdev = kmalloc_array(nr, sizeof(*cdev), GFP_KERNEL);
		if (!cdev) {
			ret = -ENOMEM;
			goto err;
		}

		/*
		 * We detected multiple devices.  Concatenate them together.
		 */
@@ -230,6 +237,7 @@ static struct sa_info *sa1100_setup_mtd(struct platform_device *pdev,

		info->mtd = mtd_concat_create(cdev, info->num_subdev,
					      plat->name);
		kfree(cdev);
		if (info->mtd == NULL) {
			ret = -ENXIO;
			goto err;