On Wed, Jun 26, 2019 at 10:47:57AM +0900, Damien Le Moal wrote: > @@ -1501,9 +1502,14 @@ struct bio *bio_map_kern(struct request_queue *q, void *data, unsigned int len, > unsigned long end = (kaddr + len + PAGE_SIZE - 1) >> PAGE_SHIFT; > unsigned long start = kaddr >> PAGE_SHIFT; > const int nr_pages = end - start; > + bool is_vmalloc = is_vmalloc_addr(data); > + struct page *page; > int offset, i; > struct bio *bio; > > + if (is_vmalloc) > + invalidate_kernel_vmap_range(data, len); That is not correct. The submission path needs an unconditional flush_kernel_vmap_range call, and the read completion path will additionally need the invalidate_kernel_vmap_range call.