diff options
| author | Yu Kuai <[email protected]> | 2022-10-11 14:22:53 +0000 |
|---|---|---|
| committer | Jens Axboe <[email protected]> | 2022-10-16 23:22:51 +0000 |
| commit | 76dd298094f484c6250ebd076fa53287477b2328 (patch) | |
| tree | 4848bed6d3a876d7dd57e2ea65223cba8462348e /drivers/fpga/microchip-spi.c | |
| parent | Merge tag 'nvme-6.1-2022-10-12' of git://git.infradead.org/nvme into block-6.1 (diff) | |
| download | kernel-76dd298094f484c6250ebd076fa53287477b2328.tar.gz kernel-76dd298094f484c6250ebd076fa53287477b2328.zip | |
blk-mq: fix null pointer dereference in blk_mq_clear_rq_mapping()
Our syzkaller report a null pointer dereference, root cause is
following:
__blk_mq_alloc_map_and_rqs
set->tags[hctx_idx] = blk_mq_alloc_map_and_rqs
blk_mq_alloc_map_and_rqs
blk_mq_alloc_rqs
// failed due to oom
alloc_pages_node
// set->tags[hctx_idx] is still NULL
blk_mq_free_rqs
drv_tags = set->tags[hctx_idx];
// null pointer dereference is triggered
blk_mq_clear_rq_mapping(drv_tags, ...)
This is because commit 63064be150e4 ("blk-mq:
Add blk_mq_alloc_map_and_rqs()") merged the two steps:
1) set->tags[hctx_idx] = blk_mq_alloc_rq_map()
2) blk_mq_alloc_rqs(..., set->tags[hctx_idx])
into one step:
set->tags[hctx_idx] = blk_mq_alloc_map_and_rqs()
Since tags is not initialized yet in this case, fix the problem by
checking if tags is NULL pointer in blk_mq_clear_rq_mapping().
Fixes: 63064be150e4 ("blk-mq: Add blk_mq_alloc_map_and_rqs()")
Signed-off-by: Yu Kuai <[email protected]>
Reviewed-by: John Garry <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Jens Axboe <[email protected]>
Diffstat (limited to 'drivers/fpga/microchip-spi.c')
0 files changed, 0 insertions, 0 deletions
