summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFUJITA Tomonori2007-08-05 17:31:24 +0200
committerJames Bottomley2007-10-12 20:38:28 +0200
commitea312552e94883efc42cfa4651bcf964f3110564 (patch)
treea12b5602abef524382c958fc14fd936cb66683cc
parent[SCSI] Fix async scanning double-add problems (diff)
downloadkernel-qcow2-linux-ea312552e94883efc42cfa4651bcf964f3110564.tar.gz
kernel-qcow2-linux-ea312552e94883efc42cfa4651bcf964f3110564.tar.xz
kernel-qcow2-linux-ea312552e94883efc42cfa4651bcf964f3110564.zip
[SCSI] sg: increase sglist_len of the sg_scatter_hold structure
unsigned short is too small for sizeof(struct scatterlist) * min(q->max_hw_segments, q->max_phys_segments). This fixes memory leak with 4096 segments since 16 (likely sg size with x86) * 4096 sets sglist_len to zero. This might not happen without sg chaining support. Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> Acked-by: Douglas Gilbert <dougg@torque.net> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
-rw-r--r--drivers/scsi/sg.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/scsi/sg.c b/drivers/scsi/sg.c
index 85d38940a6c9..fdc6618c1f61 100644
--- a/drivers/scsi/sg.c
+++ b/drivers/scsi/sg.c
@@ -114,7 +114,7 @@ static struct class_interface sg_interface = {
typedef struct sg_scatter_hold { /* holding area for scsi scatter gather info */
unsigned short k_use_sg; /* Count of kernel scatter-gather pieces */
- unsigned short sglist_len; /* size of malloc'd scatter-gather list ++ */
+ unsigned sglist_len; /* size of malloc'd scatter-gather list ++ */
unsigned bufflen; /* Size of (aggregate) data buffer */
unsigned b_malloc_len; /* actual len malloc'ed in buffer */
struct scatterlist *buffer;/* scatter list */