aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi
diff options
context:
space:
mode:
authorJulia Lawall <julia@diku.dk>2010-12-29 09:57:54 -0500
committerJames Bottomley <James.Bottomley@suse.de>2010-12-31 10:50:09 -0500
commit5c10007560589a2335a77cbc92347b1474518296 (patch)
tree662d3e17401bd678a89b82cf635b2719de245917 /drivers/scsi
parent8f4bfadd200477acb6dcf41a45919dd37d01a6db (diff)
[SCSI] gdth: Add missing call to gdth_ioctl_free
Add missing call to gdth_ioctl_free before aborting. The semantic match that finds this problem is as follows: (http://coccinelle.lip6.fr/) // <smpl> @@ expression buf,ha,len,addr,E; @@ buf = gdth_ioctl_alloc(ha, len, FALSE, &addr) ... when != false buf != NULL when != true buf == NULL when != \(E = buf\|buf = E\) when != gdth_ioctl_free(ha, len, buf, addr) *return ...; // </smpl> Signed-off-by: Julia Lawall <julia@diku.dk> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers/scsi')
-rw-r--r--drivers/scsi/gdth.c4
-rw-r--r--drivers/scsi/gdth_proc.c16
2 files changed, 15 insertions, 5 deletions
diff --git a/drivers/scsi/gdth.c b/drivers/scsi/gdth.c
index 76365700e2d5..3242bcabad97 100644
--- a/drivers/scsi/gdth.c
+++ b/drivers/scsi/gdth.c
@@ -4273,8 +4273,10 @@ static int ioc_general(void __user *arg, char *cmnd)
4273 } 4273 }
4274 4274
4275 rval = __gdth_execute(ha->sdev, &gen.command, cmnd, gen.timeout, &gen.info); 4275 rval = __gdth_execute(ha->sdev, &gen.command, cmnd, gen.timeout, &gen.info);
4276 if (rval < 0) 4276 if (rval < 0) {
4277 gdth_ioctl_free(ha, gen.data_len+gen.sense_len, buf, paddr);
4277 return rval; 4278 return rval;
4279 }
4278 gen.status = rval; 4280 gen.status = rval;
4279 4281
4280 if (copy_to_user(arg + sizeof(gdth_ioctl_general), buf, 4282 if (copy_to_user(arg + sizeof(gdth_ioctl_general), buf,
diff --git a/drivers/scsi/gdth_proc.c b/drivers/scsi/gdth_proc.c
index 0572b9bf4bd6..652754319a4b 100644
--- a/drivers/scsi/gdth_proc.c
+++ b/drivers/scsi/gdth_proc.c
@@ -365,8 +365,10 @@ static int gdth_get_info(char *buffer,char **start,off_t offset,int length,
365 len = 0; 365 len = 0;
366 begin = pos; 366 begin = pos;
367 } 367 }
368 if (pos > offset + length) 368 if (pos > offset + length) {
369 gdth_ioctl_free(ha, GDTH_SCRATCH, buf, paddr);
369 goto stop_output; 370 goto stop_output;
371 }
370 } 372 }
371 } 373 }
372 gdth_ioctl_free(ha, GDTH_SCRATCH, buf, paddr); 374 gdth_ioctl_free(ha, GDTH_SCRATCH, buf, paddr);
@@ -450,8 +452,10 @@ static int gdth_get_info(char *buffer,char **start,off_t offset,int length,
450 len = 0; 452 len = 0;
451 begin = pos; 453 begin = pos;
452 } 454 }
453 if (pos > offset + length) 455 if (pos > offset + length) {
456 gdth_ioctl_free(ha, GDTH_SCRATCH, buf, paddr);
454 goto stop_output; 457 goto stop_output;
458 }
455 } while (drv_no != -1); 459 } while (drv_no != -1);
456 460
457 if (is_mirr) { 461 if (is_mirr) {
@@ -472,8 +476,10 @@ static int gdth_get_info(char *buffer,char **start,off_t offset,int length,
472 len = 0; 476 len = 0;
473 begin = pos; 477 begin = pos;
474 } 478 }
475 if (pos > offset + length) 479 if (pos > offset + length) {
480 gdth_ioctl_free(ha, GDTH_SCRATCH, buf, paddr);
476 goto stop_output; 481 goto stop_output;
482 }
477 } 483 }
478 gdth_ioctl_free(ha, GDTH_SCRATCH, buf, paddr); 484 gdth_ioctl_free(ha, GDTH_SCRATCH, buf, paddr);
479 485
@@ -542,8 +548,10 @@ static int gdth_get_info(char *buffer,char **start,off_t offset,int length,
542 len = 0; 548 len = 0;
543 begin = pos; 549 begin = pos;
544 } 550 }
545 if (pos > offset + length) 551 if (pos > offset + length) {
552 gdth_ioctl_free(ha, GDTH_SCRATCH, buf, paddr);
546 goto stop_output; 553 goto stop_output;
554 }
547 } 555 }
548 } 556 }
549 gdth_ioctl_free(ha, GDTH_SCRATCH, buf, paddr); 557 gdth_ioctl_free(ha, GDTH_SCRATCH, buf, paddr);