diff options
author | FUJITA Tomonori <tomof@acm.org> | 2007-08-05 11:31:24 -0400 |
---|---|---|
committer | James Bottomley <jejb@mulgrave.localdomain> | 2007-10-12 14:38:28 -0400 |
commit | ea312552e94883efc42cfa4651bcf964f3110564 (patch) | |
tree | a12b5602abef524382c958fc14fd936cb66683cc | |
parent | 6b7f123f378743d739377871c0cbfbaf28c7d25a (diff) |
[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.c | 2 |
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 = { | |||
114 | 114 | ||
115 | typedef struct sg_scatter_hold { /* holding area for scsi scatter gather info */ | 115 | typedef struct sg_scatter_hold { /* holding area for scsi scatter gather info */ |
116 | unsigned short k_use_sg; /* Count of kernel scatter-gather pieces */ | 116 | unsigned short k_use_sg; /* Count of kernel scatter-gather pieces */ |
117 | unsigned short sglist_len; /* size of malloc'd scatter-gather list ++ */ | 117 | unsigned sglist_len; /* size of malloc'd scatter-gather list ++ */ |
118 | unsigned bufflen; /* Size of (aggregate) data buffer */ | 118 | unsigned bufflen; /* Size of (aggregate) data buffer */ |
119 | unsigned b_malloc_len; /* actual len malloc'ed in buffer */ | 119 | unsigned b_malloc_len; /* actual len malloc'ed in buffer */ |
120 | struct scatterlist *buffer;/* scatter list */ | 120 | struct scatterlist *buffer;/* scatter list */ |