2007-11-30 21:58:29

by Sami Farin

[permalink] [raw]
Subject: drivers/char/random.c:write_pool() -- cond_resched needed?

In write_pool(), isn't cond_resched() needed after call to
add_entropy_words() because otherwise there can be large latencies
(think of command "dd if=/dev/zero of=/dev/random bs=100000000" ) ?

--
Do what you love because life is too short for anything else.


2007-12-03 18:50:26

by Matt Mackall

[permalink] [raw]
Subject: Re: drivers/char/random.c:write_pool() -- cond_resched needed?

On Fri, Nov 30, 2007 at 11:58:10PM +0200, Sami Farin wrote:
> In write_pool(), isn't cond_resched() needed after call to
> add_entropy_words() because otherwise there can be large latencies
> (think of command "dd if=/dev/zero of=/dev/random bs=100000000" ) ?

Yes, looks like you're right.

Reduce latency for large writes to /dev/[u]random

Signed-off-by: Matt Mackall <[email protected]>

diff -r c60016ba6237 drivers/char/random.c
--- a/drivers/char/random.c Tue Nov 13 09:09:36 2007 -0800
+++ b/drivers/char/random.c Mon Dec 03 12:48:30 2007 -0600
@@ -1041,6 +1041,7 @@ write_pool(struct entropy_store *r, cons
p += bytes;

add_entropy_words(r, buf, (bytes + 3) / 4);
+ cond_resched();
}

return 0;


--
Mathematics is the supreme nostalgia of our time.