|
@@ -315,6 +315,7 @@ out:
|
|
|
blk_put_request(rq);
|
|
|
if (next_rq) {
|
|
|
blk_rq_unmap_user(next_rq->bio);
|
|
|
+ next_rq->bio = NULL;
|
|
|
blk_put_request(next_rq);
|
|
|
}
|
|
|
return ERR_PTR(ret);
|
|
@@ -448,6 +449,7 @@ static int blk_complete_sgv4_hdr_rq(struct request *rq, struct sg_io_v4 *hdr,
|
|
|
hdr->dout_resid = rq->data_len;
|
|
|
hdr->din_resid = rq->next_rq->data_len;
|
|
|
blk_rq_unmap_user(bidi_bio);
|
|
|
+ rq->next_rq->bio = NULL;
|
|
|
blk_put_request(rq->next_rq);
|
|
|
} else if (rq_data_dir(rq) == READ)
|
|
|
hdr->din_resid = rq->data_len;
|
|
@@ -466,6 +468,7 @@ static int blk_complete_sgv4_hdr_rq(struct request *rq, struct sg_io_v4 *hdr,
|
|
|
blk_rq_unmap_user(bio);
|
|
|
if (rq->cmd != rq->__cmd)
|
|
|
kfree(rq->cmd);
|
|
|
+ rq->bio = NULL;
|
|
|
blk_put_request(rq);
|
|
|
|
|
|
return ret;
|