Commit fbb5b7ae authored by Tom Zanussi's avatar Tom Zanussi Committed by Linus Torvalds

relayfs: fix infinite loop with splice()

Running kmemtraced, which uses splice() on relayfs, causes a hard lock on
x86-64 SMP.  As described by Tom Zanussi:

  It looks like you hit the same problem as described here:

  commit 8191ecd1

      splice: fix infinite loop in generic_file_splice_read()

  relay uses the same loop but it never got noticed or fixed.

Cc: Mathieu Desnoyers <>
Tested-by: 's avatarPekka Enberg <>
Signed-off-by: 's avatarTom Zanussi <>
Signed-off-by: 's avatarPekka Enberg <>
Signed-off-by: 's avatarAndrew Morton <>
Signed-off-by: 's avatarLinus Torvalds <>
parent 36137120
......@@ -1317,12 +1317,9 @@ static ssize_t relay_file_splice_read(struct file *in,
if (ret < 0)
else if (!ret) {
if (spliced)
if (flags & SPLICE_F_NONBLOCK) {
if (flags & SPLICE_F_NONBLOCK)
ret = -EAGAIN;
*ppos += ret;
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment