Fixed the issue for me. Tested-by: Dmitry Vyukov <dvyukov@xxxxxxxxxx> On Mon, Nov 23, 2015 at 1:09 PM, Jan Kara <jack@xxxxxxx> wrote: > 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. > > CC: Dmitry Vyukov <dvyukov@xxxxxxxxxx> > CC: stable@xxxxxxxxxxxxxxx > Signed-off-by: Jan Kara <jack@xxxxxxx> > --- > fs/splice.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/fs/splice.c b/fs/splice.c > index 22adbbe51e52..4cf700d50b40 100644 > --- a/fs/splice.c > +++ b/fs/splice.c > @@ -891,6 +891,7 @@ ssize_t __splice_from_pipe(struct pipe_inode_info *pipe, struct splice_desc *sd, > > splice_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); > -- > 2.1.4 > -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html