Преглед изворни кода

Make /dev/zero reads interruptible by signals

This helps with bad latencies for large reads from /dev/zero, but might
conceivably break some application that "knows" that a read of /dev/zero
cannot return early.  So do this early in the merge window to give us
maximal test coverage, even if the patch is totally trivial.

Obviously, no well-behaved application should ever depend on the read
being uninterruptible, but hey, bugs happen.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Linus Torvalds пре 16 година
родитељ
комит
2b83868723
1 измењених фајлова са 2 додато и 3 уклоњено
  1. 2 3
      drivers/char/mem.c

+ 2 - 3
drivers/char/mem.c

@@ -694,9 +694,8 @@ static ssize_t read_zero(struct file * file, char __user * buf,
 		written += chunk - unwritten;
 		written += chunk - unwritten;
 		if (unwritten)
 		if (unwritten)
 			break;
 			break;
-		/* Consider changing this to just 'signal_pending()' with lots of testing */
-		if (fatal_signal_pending(current))
-			return written ? written : -EINTR;
+		if (signal_pending(current))
+			return written ? written : -ERESTARTSYS;
 		buf += chunk;
 		buf += chunk;
 		count -= chunk;
 		count -= chunk;
 		cond_resched();
 		cond_resched();