-
Mike Snitzer authored
Commit 0fbb4d93 ("dm: add dm_submit_bio_remap interface") changed the alloc_io() function to delay the initialization of struct dm_io's orig_bio member, leaving it NULL until after the dm_io and associated user submitted bio is processed by __split_and_process_bio(). This change causes a NULL pointer dereference in dm_zone_map_bio() when the original user bio is inspected to detect the need for zone append command emulation. Fix this NULL pointer by updating dm_zone_map_bio() to not access ->orig_bio when the same info can be accessed from the clone of the ->orig_bio _before_ any ->map processing. Save off the bio_op() and bio_sectors() for the clone and then use the saved orig_bio_details as needed. Fixes: 0fbb4d93 ("dm: add dm_submit_bio_remap interface") Reported-by:
Damien Le Moal <damien.lemoal@opensource.wdc.com> Tested-by:
Damien Le Moal <damien.lemoal@opensource.wdc.com> Signed-off-by:
Mike Snitzer <snitzer@kernel.org>
73d7b06e