net: 9p: advance iov on empty read
I met below warning when cating a small size(about 80bytes) txt file
on 9pfs(msize=2097152 is passed to 9p mount option), the reason is we
miss iov_iter_advance() if the read count is 0 for zerocopy case, so
we didn't truncate the pipe, then iov_iter_pipe() thinks the pipe is
full. Fix it by removing the exception for 0 to ensure to call
iov_iter_advance() even on empty read for zerocopy case.
[ 8.279568] WARNING: CPU: 0 PID: 39 at lib/iov_iter.c:1203 iov_iter_pipe+0x31/0x40
[ 8.280028] Modules linked in:
[ 8.280561] CPU: 0 PID: 39 Comm: cat Not tainted 5.11.0+ #6
[ 8.281260] RIP: 0010:iov_iter_pipe+0x31/0x40
[ 8.281974] Code: 2b 42 54 39 42 5c 76 22 c7 07 20 00 00 00 48 89 57 18 8b 42 50 48 c7 47 08 b
[ 8.283169] RSP: 0018:
ffff888000cbbd80 EFLAGS:
00000246
[ 8.283512] RAX:
0000000000000010 RBX:
ffff888000117d00 RCX:
0000000000000000
[ 8.283876] RDX:
ffff88800031d600 RSI:
0000000000000000 RDI:
ffff888000cbbd90
[ 8.284244] RBP:
ffff888000cbbe38 R08:
0000000000000000 R09:
ffff8880008d2058
[ 8.284605] R10:
0000000000000002 R11:
ffff888000375510 R12:
0000000000000050
[ 8.284964] R13:
ffff888000cbbe80 R14:
0000000000000050 R15:
ffff88800031d600
[ 8.285439] FS:
00007f24fd8af600(0000) GS:
ffff88803ec00000(0000) knlGS:
0000000000000000
[ 8.285844] CS: 0010 DS: 0000 ES: 0000 CR0:
0000000080050033
[ 8.286150] CR2:
00007f24fd7d7b90 CR3:
0000000000c97000 CR4:
00000000000406b0
[ 8.286710] Call Trace:
[ 8.288279] generic_file_splice_read+0x31/0x1a0
[ 8.289273] ? do_splice_to+0x2f/0x90
[ 8.289511] splice_direct_to_actor+0xcc/0x220
[ 8.289788] ? pipe_to_sendpage+0xa0/0xa0
[ 8.290052] do_splice_direct+0x8b/0xd0
[ 8.290314] do_sendfile+0x1ad/0x470
[ 8.290576] do_syscall_64+0x2d/0x40
[ 8.290818] entry_SYSCALL_64_after_hwframe+0x44/0xa9
[ 8.291409] RIP: 0033:0x7f24fd7dca0a
[ 8.292511] Code: c3 0f 1f 80 00 00 00 00 4c 89 d2 4c 89 c6 e9 bd fd ff ff 0f 1f 44 00 00 31 8
[ 8.293360] RSP: 002b:
00007ffc20932818 EFLAGS:
00000206 ORIG_RAX:
0000000000000028
[ 8.293800] RAX:
ffffffffffffffda RBX:
0000000001000000 RCX:
00007f24fd7dca0a
[ 8.294153] RDX:
0000000000000000 RSI:
0000000000000003 RDI:
0000000000000001
[ 8.294504] RBP:
0000000000000003 R08:
0000000000000000 R09:
0000000000000000
[ 8.294867] R10:
0000000001000000 R11:
0000000000000206 R12:
0000000000000003
[ 8.295217] R13:
0000000000000001 R14:
0000000000000001 R15:
0000000000000000
[ 8.295782] ---[ end trace
63317af81b3ca24b ]---
Signed-off-by: Jisheng Zhang <Jisheng.Zhang@synaptics.com>
Signed-off-by: David S. Miller <davem@davemloft.net>