2014-02-13 08:33:30

by Jean-Francois Moine

[permalink] [raw]
Subject: [PATCH] drm/i2c: tda998x: fix memory leak in case of i2c error

When the creation of the second i2c client was failing, the private
buffer was not freed.

This bug was introduced by the commit 6ae668cc19e8
'drm/i2c: tda998x: check the CEC device creation'

Signed-off-by: Jean-Francois Moine <[email protected]>
---
drivers/gpu/drm/i2c/tda998x_drv.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i2c/tda998x_drv.c b/drivers/gpu/drm/i2c/tda998x_drv.c
index fa18cf3..faa77f5 100644
--- a/drivers/gpu/drm/i2c/tda998x_drv.c
+++ b/drivers/gpu/drm/i2c/tda998x_drv.c
@@ -1151,8 +1151,10 @@ tda998x_encoder_init(struct i2c_client *client,

priv->current_page = 0xff;
priv->cec = i2c_new_dummy(client->adapter, 0x34);
- if (!priv->cec)
+ if (!priv->cec) {
+ kfree(priv);
return -ENODEV;
+ }
priv->dpms = DRM_MODE_DPMS_OFF;

encoder_slave->slave_priv = priv;
--
1.9.0.rc3


2014-02-13 19:40:24

by Russell King - ARM Linux

[permalink] [raw]
Subject: Re: [PATCH] drm/i2c: tda998x: fix memory leak in case of i2c error

On Thu, Feb 13, 2014 at 09:13:34AM +0100, Jean-Francois Moine wrote:
> When the creation of the second i2c client was failing, the private
> buffer was not freed.
>
> This bug was introduced by the commit 6ae668cc19e8
> 'drm/i2c: tda998x: check the CEC device creation'
>
> Signed-off-by: Jean-Francois Moine <[email protected]>

Since David got there first with his patch, which is identical to yours,
I'll take his description, and take this as an acked-by for it.

--
FTTC broadband for 0.8mile line: 5.8Mbps down 500kbps up. Estimation
in database were 13.1 to 19Mbit for a good line, about 7.5+ for a bad.
Estimate before purchase was "up to 13.2Mbit".