scatterlist: prevent invalid free when alloc fails
authorJeffrey Carlyle <jeff.carlyle@motorola.com>
Mon, 30 Aug 2010 17:55:09 +0000 (19:55 +0200)
committerJens Axboe <jaxboe@fusionio.com>
Mon, 30 Aug 2010 17:55:09 +0000 (19:55 +0200)
When alloc fails, free_table is being called. Depending on the number of
bytes requested, we determine if we are going to call _get_free_page()
or kmalloc(). When alloc fails, our math is wrong (due to sg_size - 1),
and the last buffer is wrongfully assumed to have been allocated by
kmalloc. Hence, kfree gets called and a panic occurs.

Signed-off-by: Jeffrey Carlyle <jeff.carlyle@motorola.com>
Signed-off-by: Olusanya Soyannwo <c23746@motorola.com>
Acked-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Jens Axboe <jaxboe@fusionio.com>

No differences found