V4L/DVB (13963): siano, fix memory leak
authorJiri Slaby <jslaby@suse.cz>
Wed, 6 Jan 2010 16:45:27 +0000 (13:45 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Fri, 26 Feb 2010 18:10:34 +0000 (15:10 -0300)
Stanse found a memory leak in smscore_gpio_configure. buffer is not
freed/assigned on all paths. Fix that.

Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/dvb/siano/smscoreapi.c

index ca758bcb48c95ee00d8a23cd4e047f37e98d08f4..4bfd3451b5682ca5a49a9f6b8fdea2726f554d63 100644 (file)
@@ -1459,8 +1459,10 @@ int smscore_gpio_configure(struct smscore_device_t *coredev, u8 PinNum,
        if (!(coredev->device_flags & SMS_DEVICE_FAMILY2)) {
                pMsg->xMsgHeader.msgType = MSG_SMS_GPIO_CONFIG_REQ;
                if (GetGpioPinParams(PinNum, &TranslatedPinNum, &GroupNum,
-                               &groupCfg) != 0)
-                       return -EINVAL;
+                               &groupCfg) != 0) {
+                       rc = -EINVAL;
+                       goto free;
+               }
 
                pMsg->msgData[1] = TranslatedPinNum;
                pMsg->msgData[2] = GroupNum;
@@ -1490,6 +1492,7 @@ int smscore_gpio_configure(struct smscore_device_t *coredev, u8 PinNum,
                else
                        sms_err("smscore_gpio_configure error");
        }
+free:
        kfree(buffer);
 
        return rc;