diff --git a/block/blk-timeout.c b/block/blk-timeout.c
index 9b4ad138bb33a4559a98fec2e0edc2136b8eff52..972a63f848fbb8541a099ae80ecce660cbe826cf 100644
--- a/block/blk-timeout.c
+++ b/block/blk-timeout.c
@@ -158,6 +158,8 @@ void blk_rq_timed_out_timer(unsigned long data)
  */
 void blk_abort_request(struct request *req)
 {
+	if (blk_mark_rq_complete(req))
+		return;
 	blk_delete_timer(req);
 	blk_rq_timed_out(req);
 }