Description of Problem: /dev/urandom is broken by some lowlatency code that is apparently incorrect. It causes read calls to urandom to return incomplete. Version-Release number of selected component (if applicable): Kernel 2.4.18-3 How Reproducible: Always Steps to Reproduce: 1. dd if=/dev/urandom of=/tmp/testfile bs=1M count=1 2. 3. Actual Results: testfile is very small, 1M is requested, several kilobytes is returned Expected Results: 1M file o garbage Additional Information: --- random.c.orig Thu Apr 18 06:50:33 2002 +++ random.c Sun May 19 08:40:14 2002 @@ -1371,8 +1371,7 @@ add_timer_randomness(&extract_timer_state, nbytes); #if LOWLATENCY_NEEDED /* This can happen in softirq's, but that's what we want */ - if (conditional_schedule_needed()) - break; + conditional_schedule(); #endif }
Andrew Morton said: >Yeah, unfortunately it's called under spinlock, so we can't schedule >from there (I think). >I guess I'll just remove that chunk - it's only worth a millisecond or >so anyway. So ignore the patch I gave and just remove the whole #if LOWLATENCY_NEEDED.
thanks for the report! Fixed for the next build