block: make bio_crypt_clone() able to fail
bio_crypt_clone() assumes its gfp_mask argument always includes __GFP_DIRECT_RECLAIM, so that the mempool_alloc() will always succeed. However, bio_crypt_clone() might be called with GFP_ATOMIC via setup_clone() in drivers/md/dm-rq.c, or with GFP_NOWAIT via kcryptd_io_read() in drivers/md/dm-crypt.c. Neither case is currently reachable with a bio that actually has an encryption context. However, it's fragile to rely on this. Just make bio_crypt_clone() able to fail, analogous to bio_integrity_clone(). Reported-by:Miaohe Lin <linmiaohe@huawei.com> Signed-off-by:
Eric Biggers <ebiggers@google.com> Reviewed-by:
Mike Snitzer <snitzer@redhat.com> Reviewed-by:
Satya Tangirala <satyat@google.com> Cc: Satya Tangirala <satyat@google.com> Signed-off-by:
Jens Axboe <axboe@kernel.dk>
Showing
- block/bio.c 9 additions, 11 deletionsblock/bio.c
- block/blk-crypto.c 4 additions, 1 deletionblock/blk-crypto.c
- block/bounce.c 9 additions, 10 deletionsblock/bounce.c
- drivers/md/dm.c 4 additions, 3 deletionsdrivers/md/dm.c
- include/linux/blk-crypto.h 16 additions, 4 deletionsinclude/linux/blk-crypto.h
Loading
Please register or sign in to comment