Re: iov_iter_pipe warning.

From: Dave Jones
Date: Mon Apr 10 2017 - 15:42:15 EST


On Mon, Apr 10, 2017 at 08:28:00PM +0100, Al Viro wrote:
> 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?

Not reliable, but I'll see if I can find some time to narrow it down
this week. I've been working on better logging of "wtf just happened"
the last few weeks, so it should get easier once I finish that work.

Dave