Patch "vfs: Avoid softlockups with sendfile(2)" has been added to the 3.10-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
vfs: Avoid softlockups with sendfile(2)
to the 3.10-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
vfs-avoid-softlockups-with-sendfile-2.patch
and it can be found in the queue-3.10 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
c2489e07c0a71a56fb2c84bc0ee66cddfca7d068Mon Sep 17 00:00:00 2001
From: Jan Kara <[email protected]>
Date: Mon, 23 Nov 2015 13:09:51 +0100
Subject: vfs: Avoid softlockups with sendfile(2)
From: Jan Kara <[email protected]>
commit c2489e07c0a71a56fb2c84bc0ee66cddfca7d068 upstream.
The following test program from Dmitry can cause softlockups or RCU stalls as it copies 1GB from tmpfs into eventfd and we don't have any scheduling point at that path in sendfile(2) implementation:
int r1 = eventfd(0, 0);
int r2 = memfd_create("", 0);
unsigned long n = 1<<30;
fallocate(r2, 0, 0, n);
sendfile(r1, r2, 0, n);Add cond_resched() into __splice_from_pipe() to fix the problem.
--- fs/splice.c | 1 + 1 file changed, 1 insertion(+)
fs/splice.c +1 -0
@@ -949,6 +949,7 @@ ssize_t __splice_from_pipe(struct pipe_isplice_from_pipe_begin (sd); do { + cond_resched(); ret = splice_from_pipe_next(pipe, sd); if (ret > 0) ret = splice_from_pipe_feed(pipe, sd, actor);
Patches currently in stable-queue which might be from [email protected] are
queue-3.10/vfs-avoid-softlockups-with-sendfile-2.patch