diff --git a/fs/nfs/pagelist.c b/fs/nfs/pagelist.c
index 932c6cc27a7664a29c9bf8d5883990c510e59b02..be7cbce6e4c7a71c0fbd22a03193e20c9fec55ce 100644
--- a/fs/nfs/pagelist.c
+++ b/fs/nfs/pagelist.c
@@ -116,7 +116,7 @@ __nfs_iocounter_wait(struct nfs_io_counter *c)
 		if (atomic_read(&c->io_count) == 0)
 			break;
 		ret = nfs_wait_bit_killable(&q.key);
-	} while (atomic_read(&c->io_count) != 0);
+	} while (atomic_read(&c->io_count) != 0 && !ret);
 	finish_wait(wq, &q.wait);
 	return ret;
 }