diff --git a/block/blk-flush.c b/block/blk-flush.c index 70f1d02135ed..33b487b5cbf7 100644 --- a/block/blk-flush.c +++ b/block/blk-flush.c @@ -236,8 +236,10 @@ static void flush_end_io(struct request *flush_rq, blk_status_t error) * avoiding use-after-free. */ WRITE_ONCE(flush_rq->state, MQ_RQ_IDLE); - if (fq->rq_status != BLK_STS_OK) + if (fq->rq_status != BLK_STS_OK) { error = fq->rq_status; + fq->rq_status = BLK_STS_OK; + } if (!q->elevator) { flush_rq->tag = BLK_MQ_NO_TAG;