summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@home.transmeta.com>2002-11-05 03:53:25 -0800
committerLinus Torvalds <torvalds@home.transmeta.com>2002-11-05 03:53:25 -0800
commitd472b9dc1fc7783e4ec969629e6967462be7f062 (patch)
treecbaeda1a7670a195570787960b3094c656e52ee7
parent82670e1f1c08d668645b80bd7d80e1fdf8f3eeee (diff)
parent81297f9dea7f4e9203f2b689d649ce4f5a898593 (diff)
Merge http://gkernel.bkbits.net/misc-2.5
into home.transmeta.com:/home/torvalds/v2.5/linux
-rw-r--r--drivers/char/i810_rng.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/char/i810_rng.c b/drivers/char/i810_rng.c
index 8bc0fe1ff8d3..3dfd9a456cf9 100644
--- a/drivers/char/i810_rng.c
+++ b/drivers/char/i810_rng.c
@@ -27,6 +27,7 @@
#include <linux/miscdevice.h>
#include <linux/smp_lock.h>
#include <linux/mm.h>
+#include <linux/delay.h>
#include <asm/io.h>
#include <asm/uaccess.h>
@@ -243,8 +244,13 @@ static ssize_t rng_dev_read (struct file *filp, char *buf, size_t size,
if (filp->f_flags & O_NONBLOCK)
return ret ? : -EAGAIN;
- current->state = TASK_INTERRUPTIBLE;
- schedule_timeout(1);
+ if (need_resched())
+ {
+ current->state = TASK_INTERRUPTIBLE;
+ schedule_timeout(1);
+ }
+ else
+ udelay(200);
if (signal_pending (current))
return ret ? : -ERESTARTSYS;