Re: iov_iter_pipe warning.

From: Al Viro
Date: Mon Apr 10 2017 - 15:28:07 EST


On Tue, Mar 21, 2017 at 04:59:01PM -0400, Dave Jones wrote:
> WARNING: CPU: 0 PID: 9290 at lib/iov_iter.c:836 iov_iter_pipe+0x71/0x80
> CPU: 0 PID: 9290 Comm: trinity-c7 Not tainted 4.11.0-rc3-think+ #3
> Call Trace:
> dump_stack+0x68/0x93
> __warn+0xcb/0xf0
> warn_slowpath_null+0x1d/0x20
> iov_iter_pipe+0x71/0x80
> generic_file_splice_read+0x37/0x140
> do_splice_to+0x79/0x90
> splice_direct_to_actor+0xb8/0x220
> ? generic_pipe_buf_nosteal+0x10/0x10
> do_splice_direct+0x9e/0xd0
> do_sendfile+0x1d7/0x3c0
> SyS_sendfile64+0x73/0xe0
> do_syscall_64+0x66/0x1d0

Cute... We have ->splice_read() called in attempt to shove something into
a full internal pipe. How do you achieve that situation? actor() callback
claiming to have drained more than it actually had to?

Do you have a reliable reproducer?