Re: [PATCH] aacraid: Remove mem leak in aac_send_raw_srb().

From: Jesper Juhl
Date: Thu Mar 03 2011 - 15:50:18 EST


PING!

Any chance we could get this patch merged? Any objections?


/Jesper Juhl


On Thu, 6 Jan 2011, Jesper Juhl wrote:

>
> We leak in drivers/scsi/aacraid/commctrl.c::aac_send_raw_srb().
>
> We allocate memory:
> ...
> struct user_sgmap* usg;
> usg = kmalloc(actual_fibsize - sizeof(struct aac_srb)
> + sizeof(struct sgmap), GFP_KERNEL);
> and then neglect to free it:
> ...
> for (i = 0; i < usg->count; i++) {
> u64 addr;
> void* p;
> if (usg->sg[i].count >
> ((dev->adapter_info.options &
> AAC_OPT_NEW_COMM) ?
> (dev->scsi_host_ptr->max_sectors << 9) :
> 65536)) {
> rcode = -EINVAL;
> goto cleanup;
> ... this 'goto' makes 'usg' go out of scope and leak the memory we
> allocated.
> Other exits properly kfree(usg), it's just here it is
> neglected.
>
>
> Signed-off-by: Jesper Juhl <jj@xxxxxxxxxxxxx>
> ---
> commctrl.c | 1 +
> 1 file changed, 1 insertion(+)
>
> Compile tested only, I don't have a way to test this properly, but I
> think it's fairly obvious.
>
> diff --git a/drivers/scsi/aacraid/commctrl.c b/drivers/scsi/aacraid/commctrl.c
> index 645ddd9..33370fb 100644
> --- a/drivers/scsi/aacraid/commctrl.c
> +++ b/drivers/scsi/aacraid/commctrl.c
> @@ -649,6 +649,7 @@ static int aac_send_raw_srb(struct aac_dev* dev, void __user * arg)
> AAC_OPT_NEW_COMM) ?
> (dev->scsi_host_ptr->max_sectors << 9) :
> 65536)) {
> + kfree(usg);
> rcode = -EINVAL;
> goto cleanup;
> }
>
>
>
>

--
Jesper Juhl <jj@xxxxxxxxxxxxx> http://www.chaosbits.net/
Plain text mails only, please.
Don't top-post http://www.catb.org/~esr/jargon/html/T/top-post.html

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/