diff --git a/drivers/md/dm.c b/drivers/md/dm.c
index d6de00f367efdde4137055dfa4c82fefcbcd1f9a..68136806d365821f63ace7675ce21ba2bf10ed8d 100644
--- a/drivers/md/dm.c
+++ b/drivers/md/dm.c
@@ -903,7 +903,8 @@ static void dec_pending(struct dm_io *io, blk_status_t error)
 			queue_io(md, bio);
 		} else {
 			/* done with normal IO or empty flush */
-			bio->bi_status = io_error;
+			if (io_error)
+				bio->bi_status = io_error;
 			bio_endio(bio);
 		}
 	}