On Sat, Oct 12, 2019 at 4:07 AM Markus Elfring Markus.Elfring@web.de wrote:
From: Markus Elfring elfring@users.sourceforge.net Date: Sat, 12 Oct 2019 10:30:21 +0200
The return value from a call of the function “kmemdup” was not checked in this function implementation. Thus add the corresponding error handling.
Fixes: 19022aaae677dfa171a719e9d1ff04823ce65a65 ("staging: drm/imx: Add parallel display support") Signed-off-by: Markus Elfring elfring@users.sourceforge.net
drivers/gpu/drm/imx/parallel-display.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/imx/parallel-display.c b/drivers/gpu/drm/imx/parallel-display.c index 35518e5de356..39c4798f56b6 100644 --- a/drivers/gpu/drm/imx/parallel-display.c +++ b/drivers/gpu/drm/imx/parallel-display.c @@ -210,8 +210,13 @@ static int imx_pd_bind(struct device *dev, struct device *master, void *data) return -ENOMEM;
edidp = of_get_property(np, "edid", &imxpd->edid_len);
if (edidp)
if (edidp) { imxpd->edid = kmemdup(edidp, imxpd->edid_len, GFP_KERNEL);
if (!imxpd->edid) {
devm_kfree(dev, imxpd);
You should not try to free imxpd here as it is a resource-managed allocation via devm_kzalloc(). It means memory allocated with this function is automatically freed on driver detach. So, this patch introduces a double-free.
return -ENOMEM;
}
} ret = of_property_read_string(np, "interface-pix-fmt", &fmt); if (!ret) {
-- 2.23.0