2014-10-23 19:29:57

by Tony Battersby

[permalink] [raw]
Subject: [PATCH] lib/scatterlist: fix memory leak with scsi-mq

Fix a memory leak with scsi-mq triggered by commands with large data
transfer length.

Fixes: c53c6d6a68b1 ("scatterlist: allow chaining to preallocated chunks")
Cc: <[email protected]> # 3.17.x
Signed-off-by: Tony Battersby <[email protected]>
---

For inclusion in 3.18 and 3.17.x.

--- a/lib/scatterlist.c 2014-10-23 13:32:27.000000000 -0400
+++ b/lib/scatterlist.c 2014-10-23 13:32:36.000000000 -0400
@@ -203,10 +203,10 @@ void __sg_free_table(struct sg_table *ta
}

table->orig_nents -= sg_size;
- if (!skip_first_chunk) {
- free_fn(sgl, alloc_size);
+ if (skip_first_chunk)
skip_first_chunk = false;
- }
+ else
+ free_fn(sgl, alloc_size);
sgl = next;
}


2014-10-24 09:25:08

by Christoph Hellwig

[permalink] [raw]
Subject: Re: [PATCH] lib/scatterlist: fix memory leak with scsi-mq

On Thu, Oct 23, 2014 at 03:10:21PM -0400, Tony Battersby wrote:
> Fix a memory leak with scsi-mq triggered by commands with large data
> transfer length.

Thanks, this was indeed caused by a last minute change due to someone
complaining about my earlier version being a little too convoluted.

Thanks for tracking this down!

2014-10-28 00:08:18

by Martin K. Petersen

[permalink] [raw]
Subject: Re: [PATCH] lib/scatterlist: fix memory leak with scsi-mq

>>>>> "Tony" == Tony Battersby <[email protected]> writes:

Tony> Fix a memory leak with scsi-mq triggered by commands with large
Tony> data transfer length.

Tony> Fixes: c53c6d6a68b1 ("scatterlist: allow chaining to preallocated
Tony> chunks")

Reviewed-by: Martin K. Petersen <[email protected]>

--
Martin K. Petersen Oracle Linux Engineering