block: fix bmd->is_null_mapped initialization
authorChristoph Hellwig <hch@lst.de>
Wed, 23 Sep 2020 15:07:13 +0000 (17:07 +0200)
committerJens Axboe <axboe@kernel.dk>
Wed, 23 Sep 2020 15:18:39 +0000 (09:18 -0600)
bmd is allocated using kmalloc in bio_alloc_map_data, so make sure
is_null_mapped is properly initialized to false for the !null_mapped
case.

Fixes: f3256075ba49 ("block: remove the BIO_NULL_MAPPED flag")
Reported-by: Marc Hartmayer <mhartmay@linux.ibm.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/blk-map.c

index be11892..21630dc 100644 (file)
@@ -148,6 +148,7 @@ static int bio_copy_user_iov(struct request *rq, struct rq_map_data *map_data,
         * shortlived one.
         */
        bmd->is_our_pages = !map_data;
+       bmd->is_null_mapped = (map_data && map_data->null_mapped);
 
        nr_pages = DIV_ROUND_UP(offset + len, PAGE_SIZE);
        if (nr_pages > BIO_MAX_PAGES)
@@ -218,8 +219,6 @@ static int bio_copy_user_iov(struct request *rq, struct rq_map_data *map_data,
        }
 
        bio->bi_private = bmd;
-       if (map_data && map_data->null_mapped)
-               bmd->is_null_mapped = true;
 
        bounce_bio = bio;
        ret = blk_rq_append_bio(rq, &bounce_bio);