aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/dvb
diff options
context:
space:
mode:
authorAnssi Hannula <anssi.hannula@gmail.com>2005-07-07 20:57:42 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2005-07-07 21:23:54 -0400
commit0c744b010078bd65724477e75261e51712d290a0 (patch)
tree7d504d2e4d3d9a832a8df55eef3b4edc07acee18 /drivers/media/dvb
parent3faadbb0fde3c53e1c4f13eabb478c0c7cb1e4dd (diff)
[PATCH] dvb: add missing release_firmware() calls
Add missing release_firmware() calls to fix memory leaks. Signed-off-by: Anssi Hannula <anssi.hannula@gmail.com> Signed-off-by: Johannes Stezenbach <js@linuxtv.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers/media/dvb')
-rw-r--r--drivers/media/dvb/frontends/tda1004x.c2
-rw-r--r--drivers/media/dvb/ttusb-dec/ttusb_dec.c11
2 files changed, 11 insertions, 2 deletions
diff --git a/drivers/media/dvb/frontends/tda1004x.c b/drivers/media/dvb/frontends/tda1004x.c
index 237edc486122..2d5f56cbf506 100644
--- a/drivers/media/dvb/frontends/tda1004x.c
+++ b/drivers/media/dvb/frontends/tda1004x.c
@@ -385,6 +385,7 @@ static int tda10045_fwupload(struct dvb_frontend* fe)
385 tda10045h_set_bandwidth(state, BANDWIDTH_8_MHZ); 385 tda10045h_set_bandwidth(state, BANDWIDTH_8_MHZ);
386 386
387 ret = tda1004x_do_upload(state, fw->data, fw->size, TDA10045H_FWPAGE, TDA10045H_CODE_IN); 387 ret = tda1004x_do_upload(state, fw->data, fw->size, TDA10045H_FWPAGE, TDA10045H_CODE_IN);
388 release_firmware(fw);
388 if (ret) 389 if (ret)
389 return ret; 390 return ret;
390 printk(KERN_INFO "tda1004x: firmware upload complete\n"); 391 printk(KERN_INFO "tda1004x: firmware upload complete\n");
@@ -452,6 +453,7 @@ static int tda10046_fwupload(struct dvb_frontend* fe)
452 } 453 }
453 tda1004x_write_mask(state, TDA1004X_CONFC4, 8, 8); // going to boot from HOST 454 tda1004x_write_mask(state, TDA1004X_CONFC4, 8, 8); // going to boot from HOST
454 ret = tda1004x_do_upload(state, fw->data, fw->size, TDA10046H_CODE_CPT, TDA10046H_CODE_IN); 455 ret = tda1004x_do_upload(state, fw->data, fw->size, TDA10046H_CODE_CPT, TDA10046H_CODE_IN);
456 release_firmware(fw);
455 if (ret) 457 if (ret)
456 return ret; 458 return ret;
457 } else { 459 } else {
diff --git a/drivers/media/dvb/ttusb-dec/ttusb_dec.c b/drivers/media/dvb/ttusb-dec/ttusb_dec.c
index 505bdaff5a7e..45c9a9a08e4d 100644
--- 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 ttusb_dec *dec)
1281 if (firmware_size < 60) { 1281 if (firmware_size < 60) {
1282 printk("%s: firmware size too small for DSP code (%zu < 60).\n", 1282 printk("%s: firmware size too small for DSP code (%zu < 60).\n",
1283 __FUNCTION__, firmware_size); 1283 __FUNCTION__, firmware_size);
1284 release_firmware(fw_entry);
1284 return -1; 1285 return -1;
1285 } 1286 }
1286 1287
@@ -1294,6 +1295,7 @@ static int ttusb_dec_boot_dsp(struct ttusb_dec *dec)
1294 printk("%s: crc32 check of DSP code failed (calculated " 1295 printk("%s: crc32 check of DSP code failed (calculated "
1295 "0x%08x != 0x%08x in file), file invalid.\n", 1296 "0x%08x != 0x%08x in file), file invalid.\n",
1296 __FUNCTION__, crc32_csum, crc32_check); 1297 __FUNCTION__, crc32_csum, crc32_check);
1298 release_firmware(fw_entry);
1297 return -1; 1299 return -1;
1298 } 1300 }
1299 memcpy(idstring, &firmware[36], 20); 1301 memcpy(idstring, &firmware[36], 20);
@@ -1308,15 +1310,19 @@ static int ttusb_dec_boot_dsp(struct ttusb_dec *dec)
1308 1310
1309 result = ttusb_dec_send_command(dec, 0x41, sizeof(b0), b0, NULL, NULL); 1311 result = ttusb_dec_send_command(dec, 0x41, sizeof(b0), b0, NULL, NULL);
1310 1312
1311 if (result) 1313 if (result) {
1314 release_firmware(fw_entry);
1312 return result; 1315 return result;
1316 }
1313 1317
1314 trans_count = 0; 1318 trans_count = 0;
1315 j = 0; 1319 j = 0;
1316 1320
1317 b = kmalloc(ARM_PACKET_SIZE, GFP_KERNEL); 1321 b = kmalloc(ARM_PACKET_SIZE, GFP_KERNEL);
1318 if (b == NULL) 1322 if (b == NULL) {
1323 release_firmware(fw_entry);
1319 return -ENOMEM; 1324 return -ENOMEM;
1325 }
1320 1326
1321 for (i = 0; i < firmware_size; i += COMMAND_PACKET_SIZE) { 1327 for (i = 0; i < firmware_size; i += COMMAND_PACKET_SIZE) {
1322 size = firmware_size - i; 1328 size = firmware_size - i;
@@ -1345,6 +1351,7 @@ static int ttusb_dec_boot_dsp(struct ttusb_dec *dec)
1345 1351
1346 result = ttusb_dec_send_command(dec, 0x43, sizeof(b1), b1, NULL, NULL); 1352 result = ttusb_dec_send_command(dec, 0x43, sizeof(b1), b1, NULL, NULL);
1347 1353
1354 release_firmware(fw_entry);
1348 kfree(b); 1355 kfree(b);
1349 1356
1350 return result; 1357 return result;