diff --git a/[refs] b/[refs] index 260f73168144..fef23254670a 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 82f66fbef58de4ad7519708d0b9e685e20fa4e8a +refs/heads/master: 9b61764bcb4360e04386f0415a01da8271631004 diff --git a/trunk/block/ll_rw_blk.c b/trunk/block/ll_rw_blk.c index 8025d646ab30..61c2e396f2fa 100644 --- a/trunk/block/ll_rw_blk.c +++ b/trunk/block/ll_rw_blk.c @@ -1354,8 +1354,9 @@ int blk_rq_map_sg(struct request_queue *q, struct request *rq, else sg = sg_next(sg); - memset(sg, 0, sizeof(*sg)); - sg->page = bvec->bv_page; + sg_dma_len(sg) = 0; + sg_dma_address(sg) = 0; + sg_set_page(sg, bvec->bv_page); sg->length = nbytes; sg->offset = bvec->bv_offset; nsegs++; @@ -1363,6 +1364,9 @@ int blk_rq_map_sg(struct request_queue *q, struct request *rq, bvprv = bvec; } /* segments in rq */ + if (sg) + __sg_mark_end(sg); + return nsegs; }