Messages in this thread | | | Date | Tue, 11 Apr 2017 01:22:15 +0100 | From | Al Viro <> | Subject | Re: iov_iter_pipe warning. |
| |
On Mon, Apr 10, 2017 at 07:48:30PM -0400, Dave Jones wrote: > > if (WARN_ON(pipe->nr_bufs)) > > printk(KERN_ERR "->splice_write = %p", > > sd->u.file->f_op->splice_write); > > and see which function it is? > > s/nr_bufs/nrbufs/ aside, I tried this, and it didn't trigger, even > though I hit the iov_iter_pipe WARN again.
Huh? So you have WARN_ON(pipe->nrbufs == pipe->buffers) trigger depite WARN_ON(pipe->nrbufs) *not* triggering a bit earlier? Nuts...
Let's do this: * in generic_file_splice_read(): WARN_ON(pipe->nrbufs == pipe->buffers) *and* WARN_ON(!pipe->buffers) in the very beginning. * in do_splice_to(): ditto. * in splice_direct_to_actor(): if (WARN_ON... from upthread (with the typo fix, of course). * in iov_iter_pipe() turn the test into if (WARN_ON(pipe->nrbufs == pipe->buffers)) WARN_ON(pipe != current->splice_pipe);
| |