• Jisheng Zhang's avatar
    net: 9p: advance iov on empty read · d65614a0
    Jisheng Zhang authored
    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: default avatarJisheng Zhang <Jisheng.Zhang@synaptics.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    d65614a0
client.c 53.1 KB