diff --git a/block/blk-merge.c b/block/blk-merge.c index bef1b4d0fc02304faaacc57d3495fc47ccd84d0a..7506c4fe0264bd6038d24108f5438fea42478508 100644 --- a/block/blk-merge.c +++ b/block/blk-merge.c @@ -221,6 +221,9 @@ int blk_rq_map_sg(struct request_queue *q, struct request *rq, } /* segments in rq */ if (q->dma_drain_size && q->dma_drain_needed(rq)) { + if (rq->cmd_flags & REQ_RW) + memset(q->dma_drain_buffer, 0, q->dma_drain_size); + sg->page_link &= ~0x02; sg = sg_next(sg); sg_set_page(sg, virt_to_page(q->dma_drain_buffer),