V4L/DVB (5743): Tuner: clean up kfree() after release
authorMichael Krufky <mkrufky@linuxtv.org>
Mon, 4 Jun 2007 19:00:45 +0000 (16:00 -0300)
committerMauro Carvalho Chehab <mchehab@infradead.org>
Wed, 18 Jul 2007 17:23:56 +0000 (14:23 -0300)
Although it is safe to kfree(NULL), We only need to kfree(priv)
if the release callback is undefined.  As it stands now, there
is some redundancy in the operation of releasing the priv data
structures. This patch will call kfree(priv) and set priv to NULL,
if the release callback isnt defined.  Otherwise, let the release
callback handle this itself.
Thanks to Mauro Carvalho Chehab for suggesting this.

Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
drivers/media/video/tuner-core.c

index 0e71a22f1d4f6cff2f265e796fa1ad454fb002ac..acbffbfdb5084ddd8a7ca463be8c9de6ef00a22e 100644 (file)
@@ -180,8 +180,10 @@ static void set_type(struct i2c_client *c, unsigned int type,
        /* discard private data, in case set_type() was previously called */
        if (t->release)
                t->release(c);
-       kfree(t->priv);
-       t->priv = NULL;
+       else {
+               kfree(t->priv);
+               t->priv = NULL;
+       }
 
        switch (t->type) {
        case TUNER_MT2032:
@@ -566,7 +568,9 @@ static int tuner_detach(struct i2c_client *client)
 
        if (t->release)
                t->release(client);
-       kfree(t->priv);
+       else {
+               kfree(t->priv);
+       }
        kfree(t);
        return 0;
 }