diff --git a/drivers/char/random.c b/drivers/char/random.c
index c511a831f0c053e60220d39c1f45b94ee3a93cb7..f43c89f7c449831b2441f5f8f55441f2253a65ce 100644
--- a/drivers/char/random.c
+++ b/drivers/char/random.c
@@ -1039,6 +1039,7 @@ write_pool(struct entropy_store *r, const char __user *buffer, size_t count)
 		p += bytes;
 
 		add_entropy_words(r, buf, (bytes + 3) / 4);
+		cond_resched();
 	}
 
 	return 0;