Re: [PATCH 2/2] vfs: Avoid softlockups with sendfile(2)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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



[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]