From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753824AbdDLAGL (ORCPT ); Tue, 11 Apr 2017 20:06:11 -0400 Received: from scorn.kernelslacker.org ([45.56.101.199]:39798 "EHLO scorn.kernelslacker.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752379AbdDLAGI (ORCPT ); Tue, 11 Apr 2017 20:06:08 -0400 Date: Tue, 11 Apr 2017 20:06:07 -0400 From: Dave Jones To: Al Viro Cc: Linux Kernel Subject: Re: iov_iter_pipe warning. Message-ID: <20170412000607.ob4cjv7vof3f64uu@codemonkey.org.uk> Mail-Followup-To: Dave Jones , Al Viro , Linux Kernel References: <20170411002215.GE29622@ZenIV.linux.org.uk> <20170411030532.vcam25fz6224ny2h@codemonkey.org.uk> <20170411032839.GF29622@ZenIV.linux.org.uk> <20170411205336.uyz5vfw52twhh6ob@codemonkey.org.uk> <20170411211216.GH29622@ZenIV.linux.org.uk> <20170411222502.ldgahltwvrrxdbbw@codemonkey.org.uk> <20170411232842.GI29622@ZenIV.linux.org.uk> <20170411234558.zyzxznzaas3ge7qe@codemonkey.org.uk> <20170411235158.GK29622@ZenIV.linux.org.uk> <20170411235641.GL29622@ZenIV.linux.org.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20170411235641.GL29622@ZenIV.linux.org.uk> User-Agent: NeoMutt/20170306 (1.8.0) X-Spam-Note: SpamAssassin invocation failed Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Apr 12, 2017 at 12:56:41AM +0100, Al Viro wrote: > On Wed, Apr 12, 2017 at 12:51:58AM +0100, Al Viro wrote: > > On Tue, Apr 11, 2017 at 07:45:58PM -0400, Dave Jones wrote: > > > > if (file->f_op->splice_write == generic_splice_sendpage) { > > > > struct socket *sock = file->private_data; > > > > printk(KERN_ERR "socket [%d, %p]\n", sock->type, sock->ops); > > > > } > > > > printk(KERN_ERR "in->f_op = %p\n", in->f_op); > > > > > > Ugh, this explodes with a million errors when I try to compile it. > > > It misses socket definition, and include causes another > > > cascade of errors about linkage.h and nonsense. > > > > Ignore the socket part - you've already triggered it with NFS file as > > destination, so this is not particularly interesting. I would still like > > to see in->f_op and even more - the checks in default_file_splice_read(). > > ... and the latter had a braino - WARN_ON(size != ret), not len != ret. > Diff follows: super fast repro.. [ 51.795286] WARNING: CPU: 1 PID: 2057 at fs/splice.c:985 splice_direct_to_actor+0x13f/0x280 [ 51.806721] CPU: 1 PID: 2057 Comm: trinity-c3 Not tainted 4.11.0-rc6-think+ #9 [ 51.814567] ------------[ cut here ]------------ [ 51.814573] WARNING: CPU: 2 PID: 2018 at fs/splice.c:985 splice_direct_to_actor+0x13f/0x280 [ 51.852613] Call Trace: [ 51.864076] dump_stack+0x68/0x93 [ 51.875475] __warn+0xcb/0xf0 [ 51.886831] warn_slowpath_null+0x1d/0x20 [ 51.898162] splice_direct_to_actor+0x13f/0x280 [ 51.909509] ? generic_pipe_buf_nosteal+0x10/0x10 [ 51.920949] do_splice_direct+0x9e/0xd0 [ 51.932166] do_sendfile+0x1d7/0x3c0 [ 51.943349] SyS_sendfile64+0x73/0xe0 [ 51.954495] do_syscall_64+0x66/0x1d0 [ 51.965630] entry_SYSCALL64_slow_path+0x25/0x25 [ 51.976718] RIP: 0033:0x7f3e6ecc80f9 [ 51.987732] RSP: 002b:00007ffcb8b38728 EFLAGS: 00000246 [ 51.998705] ORIG_RAX: 0000000000000028 [ 52.009546] RAX: ffffffffffffffda RBX: 0000000000000028 RCX: 00007f3e6ecc80f9 [ 52.020507] RDX: 00007f3e6f264000 RSI: 000000000000011a RDI: 000000000000019b [ 52.031427] RBP: 00007f3e6f382000 R08: 0000000000000010 R09: 0000000000000000 [ 52.042263] R10: 0000000000000005 R11: 0000000000000246 R12: 0000000000000002 [ 52.053040] R13: 00007f3e6f382048 R14: 00007f3e6f39ead8 R15: 00007f3e6f382000 [ 52.063787] CPU: 2 PID: 2018 Comm: trinity-c6 Not tainted 4.11.0-rc6-think+ #9 [ 52.063997] ---[ end trace 51a5bc02dc45a59d ]--- [ 52.063998] in->f_op = ffffffff81c26480, ->splice_write = (null) [ 52.106748] Call Trace: [ 52.117338] dump_stack+0x68/0x93 [ 52.127832] __warn+0xcb/0xf0 [ 52.138224] warn_slowpath_null+0x1d/0x20 [ 52.148737] splice_direct_to_actor+0x13f/0x280 [ 52.159331] ? generic_pipe_buf_nosteal+0x10/0x10 [ 52.169897] do_splice_direct+0x9e/0xd0 [ 52.180412] do_sendfile+0x1d7/0x3c0 [ 52.190821] SyS_sendfile64+0x73/0xe0 [ 52.201210] do_syscall_64+0x66/0x1d0 [ 52.211503] entry_SYSCALL64_slow_path+0x25/0x25 [ 52.221740] RIP: 0033:0x7f3e6ecc80f9 [ 52.231955] RSP: 002b:00007ffcb8b38728 EFLAGS: 00000246 [ 52.242137] ORIG_RAX: 0000000000000028 [ 52.252235] RAX: ffffffffffffffda RBX: 0000000000000028 RCX: 00007f3e6ecc80f9 [ 52.262453] RDX: 00007f3e6f263000 RSI: 000000000000011d RDI: 000000000000011d [ 52.272637] RBP: 00007f3e6f36d000 R08: 00000000000000c7 R09: ffffffffffffffef [ 52.282775] R10: 0000000000000004 R11: 0000000000000246 R12: 0000000000000002 [ 52.292889] R13: 00007f3e6f36d048 R14: 00007f3e6f39ead8 R15: 00007f3e6f36d000 [ 52.304196] ---[ end trace 51a5bc02dc45a59e ]--- [ 52.314808] in->f_op = ffffffff81c26480, ->splice_write = ffffffff812b2b20 $ grep ffffffff812b2b20 /proc/kallsyms ffffffff812b2b20 T iter_file_splice_write $ grep ffffffff81c26480 /proc/kallsyms ffffffff81c26480 r shmem_file_operations