From 5d875829ba29e409d9fd48dd44cdbe1d829a7da2 Mon Sep 17 00:00:00 2001 From: Julia Lawall Date: Wed, 29 Dec 2010 15:57:54 +0100 Subject: [PATCH] --- yaml --- r: 226884 b: refs/heads/master c: 5c10007560589a2335a77cbc92347b1474518296 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/scsi/gdth.c | 4 +++- trunk/drivers/scsi/gdth_proc.c | 16 ++++++++++++---- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index 85c86328dbd6..e37dcf70f602 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 8f4bfadd200477acb6dcf41a45919dd37d01a6db +refs/heads/master: 5c10007560589a2335a77cbc92347b1474518296 diff --git a/trunk/drivers/scsi/gdth.c b/trunk/drivers/scsi/gdth.c index 76365700e2d5..3242bcabad97 100644 --- a/trunk/drivers/scsi/gdth.c +++ b/trunk/drivers/scsi/gdth.c @@ -4273,8 +4273,10 @@ static int ioc_general(void __user *arg, char *cmnd) } rval = __gdth_execute(ha->sdev, &gen.command, cmnd, gen.timeout, &gen.info); - if (rval < 0) + if (rval < 0) { + gdth_ioctl_free(ha, gen.data_len+gen.sense_len, buf, paddr); return rval; + } gen.status = rval; if (copy_to_user(arg + sizeof(gdth_ioctl_general), buf, diff --git a/trunk/drivers/scsi/gdth_proc.c b/trunk/drivers/scsi/gdth_proc.c index 0572b9bf4bd6..652754319a4b 100644 --- a/trunk/drivers/scsi/gdth_proc.c +++ b/trunk/drivers/scsi/gdth_proc.c @@ -365,8 +365,10 @@ static int gdth_get_info(char *buffer,char **start,off_t offset,int length, len = 0; begin = pos; } - if (pos > offset + length) + if (pos > offset + length) { + gdth_ioctl_free(ha, GDTH_SCRATCH, buf, paddr); goto stop_output; + } } } 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, len = 0; begin = pos; } - if (pos > offset + length) + if (pos > offset + length) { + gdth_ioctl_free(ha, GDTH_SCRATCH, buf, paddr); goto stop_output; + } } while (drv_no != -1); if (is_mirr) { @@ -472,8 +476,10 @@ static int gdth_get_info(char *buffer,char **start,off_t offset,int length, len = 0; begin = pos; } - if (pos > offset + length) + if (pos > offset + length) { + gdth_ioctl_free(ha, GDTH_SCRATCH, buf, paddr); goto stop_output; + } } gdth_ioctl_free(ha, GDTH_SCRATCH, buf, paddr); @@ -542,8 +548,10 @@ static int gdth_get_info(char *buffer,char **start,off_t offset,int length, len = 0; begin = pos; } - if (pos > offset + length) + if (pos > offset + length) { + gdth_ioctl_free(ha, GDTH_SCRATCH, buf, paddr); goto stop_output; + } } } gdth_ioctl_free(ha, GDTH_SCRATCH, buf, paddr);