lib/scatterlist: do not re-write gfp_flags in __sg_alloc_table()
We are seeing a lot of sg_alloc_table allocation failures using the new drm prime infrastructure. We isolated the cause to code in __sg_alloc_table that was re-writing the gfp_flags. There is a comment in the code that suggest that there is an assumption about the allocation coming from a memory pool. This was likely true when sg lists were primarily used for disk I/O. Signed-off-by: Mandeep Singh Baines <msb@chromium.org> Cc: Jens Axboe <axboe@kernel.dk> Cc: Paul Gortmaker <paul.gortmaker@windriver.com> Cc: Cong Wang <amwang@redhat.com> Cc: Daniel Vetter <daniel.vetter@ffwll.ch> Cc: Rob Clark <rob.clark@linaro.org> Cc: Sumit Semwal <sumit.semwal@linaro.org> Cc: Inki Dae <inki.dae@samsung.com> Cc: Dave Airlie <airlied@redhat.com> Cc: Sonny Rao <sonnyrao@chromium.org> Cc: Olof Johansson <olofj@chromium.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
c24aa64d16
commit
e04f228335
|
@ -279,14 +279,6 @@ int __sg_alloc_table(struct sg_table *table, unsigned int nents,
|
|||
if (!left)
|
||||
sg_mark_end(&sg[sg_size - 1]);
|
||||
|
||||
/*
|
||||
* only really needed for mempool backed sg allocations (like
|
||||
* SCSI), a possible improvement here would be to pass the
|
||||
* table pointer into the allocator and let that clear these
|
||||
* flags
|
||||
*/
|
||||
gfp_mask &= ~__GFP_WAIT;
|
||||
gfp_mask |= __GFP_HIGH;
|
||||
prv = sg;
|
||||
} while (left);
|
||||
|
||||
|
|
Loading…
Reference in New Issue