mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 02:32:09 -04:00
sgl_alloc_order: fix memory leak
[ Upstream commit b2a182a40278bc5849730e66bca01a762188ed86 ] sgl_alloc_order() can fail when 'length' is large on a memory constrained system. When order > 0 it will potentially be making several multi-page allocations with the later ones more likely to fail than the earlier one. So it is important that sgl_alloc_order() frees up any pages it has obtained before returning NULL. In the case when order > 0 it calls the wrong free page function and leaks. In testing the leak was sufficient to bring down my 8 GiB laptop with OOM. Reviewed-by: Bart Van Assche <[email protected]> Signed-off-by: Douglas Gilbert <[email protected]> Signed-off-by: Jens Axboe <[email protected]> Signed-off-by: Sasha Levin <[email protected]>
This commit is contained in:
parent
742fd49cf8
commit
c421c08208
1 changed files with 1 additions and 1 deletions
|
|
@ -514,7 +514,7 @@ struct scatterlist *sgl_alloc_order(unsigned long long length,
|
|||
elem_len = min_t(u64, length, PAGE_SIZE << order);
|
||||
page = alloc_pages(gfp, order);
|
||||
if (!page) {
|
||||
sgl_free(sgl);
|
||||
sgl_free_order(sgl, order);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue