mirror of
https://github.com/adulau/aha.git
synced 2024-12-28 11:46:19 +00:00
bio: use bio_kmalloc() in copy/map functions
Impact: remove possible deadlock condition There is no reason to use mempool backed allocation for map functions. Also, because kern mapping is used inside LLDs (e.g. for EH), using mempool backed allocation can lead to deadlock under extreme conditions (mempool already consumed by the time a request reached EH and requests are blocked on EH). Switch copy/map functions to bio_kmalloc(). Signed-off-by: Tejun Heo <tj@kernel.org> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
This commit is contained in:
parent
451a9ebf65
commit
a9e9dc24bb
1 changed files with 3 additions and 3 deletions
6
fs/bio.c
6
fs/bio.c
|
@ -822,7 +822,7 @@ struct bio *bio_copy_user_iov(struct request_queue *q,
|
|||
return ERR_PTR(-ENOMEM);
|
||||
|
||||
ret = -ENOMEM;
|
||||
bio = bio_alloc(gfp_mask, nr_pages);
|
||||
bio = bio_kmalloc(gfp_mask, nr_pages);
|
||||
if (!bio)
|
||||
goto out_bmd;
|
||||
|
||||
|
@ -946,7 +946,7 @@ static struct bio *__bio_map_user_iov(struct request_queue *q,
|
|||
if (!nr_pages)
|
||||
return ERR_PTR(-EINVAL);
|
||||
|
||||
bio = bio_alloc(gfp_mask, nr_pages);
|
||||
bio = bio_kmalloc(gfp_mask, nr_pages);
|
||||
if (!bio)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
|
||||
|
@ -1130,7 +1130,7 @@ static struct bio *__bio_map_kern(struct request_queue *q, void *data,
|
|||
int offset, i;
|
||||
struct bio *bio;
|
||||
|
||||
bio = bio_alloc(gfp_mask, nr_pages);
|
||||
bio = bio_kmalloc(gfp_mask, nr_pages);
|
||||
if (!bio)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
|
||||
|
|
Loading…
Reference in a new issue