tree 7d504d2e4d3d9a832a8df55eef3b4edc07acee18
parent 3faadbb0fde3c53e1c4f13eabb478c0c7cb1e4dd
author Anssi Hannula <[EMAIL PROTECTED]> Fri, 08 Jul 2005 07:57:42 -0700
committer Linus Torvalds <[EMAIL PROTECTED]> Fri, 08 Jul 2005 08:23:54 -0700

[PATCH] dvb: add missing release_firmware() calls

Add missing release_firmware() calls to fix memory leaks.

Signed-off-by: Anssi Hannula <[EMAIL PROTECTED]>
Signed-off-by: Johannes Stezenbach <[EMAIL PROTECTED]>
Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]>

 drivers/media/dvb/frontends/tda1004x.c  |    2 ++
 drivers/media/dvb/ttusb-dec/ttusb_dec.c |   11 +++++++++--
 2 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/drivers/media/dvb/frontends/tda1004x.c 
b/drivers/media/dvb/frontends/tda1004x.c
--- a/drivers/media/dvb/frontends/tda1004x.c
+++ b/drivers/media/dvb/frontends/tda1004x.c
@@ -385,6 +385,7 @@ static int tda10045_fwupload(struct dvb_
        tda10045h_set_bandwidth(state, BANDWIDTH_8_MHZ);
 
        ret = tda1004x_do_upload(state, fw->data, fw->size, TDA10045H_FWPAGE, 
TDA10045H_CODE_IN);
+       release_firmware(fw);
        if (ret)
                return ret;
        printk(KERN_INFO "tda1004x: firmware upload complete\n");
@@ -452,6 +453,7 @@ static int tda10046_fwupload(struct dvb_
                }
                tda1004x_write_mask(state, TDA1004X_CONFC4, 8, 8); // going to 
boot from HOST
                ret = tda1004x_do_upload(state, fw->data, fw->size, 
TDA10046H_CODE_CPT, TDA10046H_CODE_IN);
+               release_firmware(fw);
                if (ret)
                        return ret;
        } else {
diff --git a/drivers/media/dvb/ttusb-dec/ttusb_dec.c 
b/drivers/media/dvb/ttusb-dec/ttusb_dec.c
--- a/drivers/media/dvb/ttusb-dec/ttusb_dec.c
+++ b/drivers/media/dvb/ttusb-dec/ttusb_dec.c
@@ -1281,6 +1281,7 @@ static int ttusb_dec_boot_dsp(struct ttu
        if (firmware_size < 60) {
                printk("%s: firmware size too small for DSP code (%zu < 60).\n",
                        __FUNCTION__, firmware_size);
+               release_firmware(fw_entry);
                return -1;
        }
 
@@ -1294,6 +1295,7 @@ static int ttusb_dec_boot_dsp(struct ttu
                printk("%s: crc32 check of DSP code failed (calculated "
                       "0x%08x != 0x%08x in file), file invalid.\n",
                        __FUNCTION__, crc32_csum, crc32_check);
+               release_firmware(fw_entry);
                return -1;
        }
        memcpy(idstring, &firmware[36], 20);
@@ -1308,15 +1310,19 @@ static int ttusb_dec_boot_dsp(struct ttu
 
        result = ttusb_dec_send_command(dec, 0x41, sizeof(b0), b0, NULL, NULL);
 
-       if (result)
+       if (result) {
+               release_firmware(fw_entry);
                return result;
+       }
 
        trans_count = 0;
        j = 0;
 
        b = kmalloc(ARM_PACKET_SIZE, GFP_KERNEL);
-       if (b == NULL)
+       if (b == NULL) {
+               release_firmware(fw_entry);
                return -ENOMEM;
+       }
 
        for (i = 0; i < firmware_size; i += COMMAND_PACKET_SIZE) {
                size = firmware_size - i;
@@ -1345,6 +1351,7 @@ static int ttusb_dec_boot_dsp(struct ttu
 
        result = ttusb_dec_send_command(dec, 0x43, sizeof(b1), b1, NULL, NULL);
 
+       release_firmware(fw_entry);
        kfree(b);
 
        return result;
-
To unsubscribe from this list: send the line "unsubscribe bk-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to