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

Commit fb727077 authored by Maxime Ripard's avatar Maxime Ripard Committed by Greg Kroah-Hartman
Browse files

nvmem: sunxi: Check for memory allocation failure



The sunxi_sid driver doesn't check for kmalloc return status before
derefencing the returned pointer, which could lead to a NULL pointer
dereference if kmalloc failed. Check for its return code to make sure it
deosn't happen.

Reported-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: default avatarMaxime Ripard <maxime.ripard@free-electrons.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent ace22170
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -103,7 +103,7 @@ static int sunxi_sid_probe(struct platform_device *pdev)
	struct nvmem_device *nvmem;
	struct regmap *regmap;
	struct sunxi_sid *sid;
	int i, size;
	int ret, i, size;
	char *randomness;

	sid = devm_kzalloc(dev, sizeof(*sid), GFP_KERNEL);
@@ -131,6 +131,11 @@ static int sunxi_sid_probe(struct platform_device *pdev)
		return PTR_ERR(nvmem);

	randomness = kzalloc(sizeof(u8) * size, GFP_KERNEL);
	if (!randomness) {
		ret = -EINVAL;
		goto err_unreg_nvmem;
	}

	for (i = 0; i < size; i++)
		randomness[i] = sunxi_sid_read_byte(sid, i);

@@ -140,6 +145,10 @@ static int sunxi_sid_probe(struct platform_device *pdev)
	platform_set_drvdata(pdev, nvmem);

	return 0;

err_unreg_nvmem:
	nvmem_unregister(nvmem);
	return ret;
}

static int sunxi_sid_remove(struct platform_device *pdev)