> On May 24, 2016, at 8:10 PM, Al Viro <v...@zeniv.linux.org.uk> wrote: > > Slap the WARN_ON(!size); in the very beginning of iov_iter_advance(), see > where it's triggered...
diff --git a/lib/iov_iter.c b/lib/iov_iter.c index 28cb431..d89e154 100644 --- a/lib/iov_iter.c +++ b/lib/iov_iter.c @@ -488,6 +488,7 @@ EXPORT_SYMBOL(iov_iter_copy_from_user_atomic); void iov_iter_advance(struct iov_iter *i, size_t size) { + WARN_ON(!size); iterate_and_advance(i, size, v, 0, 0, 0) } EXPORT_SYMBOL(iov_iter_advance); [ 1.359869] This architecture does not have kernel memory protection. init started: BusyBox v1.24.1 () starting pid 78, tty '': '/etc/init.d/rcS' [ 1.435863] random: udevadm urandom read with 0 bits of entropy available [ 1.448116] ------------[ cut here ]------------ [ 1.448193] WARNING: CPU: 1 PID: 88 at lib/iov_iter.c:491 iov_iter_advance+0xf0/0x1b8 [ 1.451973] Modules linked in: [ 1.462753] CPU: 1 PID: 88 Comm: udevd Not tainted 4.6.0 #195 [ 1.462793] Hardware name: Qualcomm (Flattened Device Tree) [ 1.468346] [<c021a978>] (unwind_backtrace) from [<c02158a8>] (show_stack+0x20/0x24) [ 1.473713] [<c02158a8>] (show_stack) from [<c044f310>] (dump_stack+0x90/0xa4) [ 1.481701] [<c044f310>] (dump_stack) from [<c0228130>] (__warn+0xf8/0x110) [ 1.488727] [<c0228130>] (__warn) from [<c0228218>] (warn_slowpath_null+0x30/0x38) [ 1.495588] [<c0228218>] (warn_slowpath_null) from [<c04607e8>] (iov_iter_advance+0xf0/0x1b8) [ 1.503244] [<c04607e8>] (iov_iter_advance) from [<c034114c>] (do_readv_writev+0x2d0/0x370) [ 1.511827] [<c034114c>] (do_readv_writev) from [<c034123c>] (vfs_readv+0x50/0x68) [ 1.519983] [<c034123c>] (vfs_readv) from [<c03412b0>] (do_readv+0x5c/0xb8) [ 1.527621] [<c03412b0>] (do_readv) from [<c0341f18>] (SyS_readv+0x1c/0x20) [ 1.534485] [<c0341f18>] (SyS_readv) from [<c0210f80>] (ret_fast_syscall+0x0/0x3c) [ 1.541556] ---[ end trace eef892a602dbe329 ]---