• Chuck Lever's avatar
    SUNRPC: Fix svc_flush_dcache() · 13a9a9d7
    Chuck Lever authored
    On platforms that implement flush_dcache_page(), a large NFS WRITE
    triggers the WARN_ONCE in bvec_iter_advance():
    
    Sep 20 14:01:05 klimt.1015granger.net kernel: Attempted to advance past end of bvec iter
    Sep 20 14:01:05 klimt.1015granger.net kernel: WARNING: CPU: 0 PID: 1032 at include/linux/bvec.h:101 bvec_iter_advance.isra.0+0xa7/0x158 [sunrpc]
    
    Sep 20 14:01:05 klimt.1015granger.net kernel: Call Trace:
    Sep 20 14:01:05 klimt.1015granger.net kernel:  svc_tcp_recvfrom+0x60c/0x12c7 [sunrpc]
    Sep 20 14:01:05 klimt.1015granger.net kernel:  ? bvec_iter_advance.isra.0+0x158/0x158 [sunrpc]
    Sep 20 14:01:05 klimt.1015granger.net kernel:  ? del_timer_sync+0x4b/0x55
    Sep 20 14:01:05 klimt.1015granger.net kernel:  ? test_bit+0x1d/0x27 [sunrpc]
    Sep 20 14:01:05 klimt.1015granger.net kernel:  svc_recv+0x1193/0x15e4 [sunrpc]
    Sep 20 14:01:05 klimt.1015granger.net kernel:  ? try_to_freeze.isra.0+0x6f/0x6f [sunrpc]
    Sep 20 14:01:05 klimt.1015granger.net kernel:  ? refcount_sub_and_test.constprop.0+0x13/0x40 [sunrpc]
    Sep 20 14:01:05 klimt.1015granger.net kernel:  ? svc_xprt_put+0x1e/0x29f [sunrpc]
    Sep 20 14:01:05 klimt.1015granger.net kernel:  ? svc_send+0x39f/0x3c1 [sunrpc]
    Sep 20 14:01:05 klimt.1015granger.net kernel:  nfsd+0x282/0x345 [nfsd]
    Sep 20 14:01:05 klimt.1015granger.net kernel:  ? __kthread_parkme+0x74/0xba
    Sep 20 14:01:05 klimt.1015granger.net kernel:  kthread+0x2ad/0x2bc
    Sep 20 14:01:05 klimt.1015granger.net kernel:  ? nfsd_destroy+0x124/0x124 [nfsd]
    Sep 20 14:01:05 klimt.1015granger.net kernel:  ? test_bit+0x1d/0x27
    Sep 20 14:01:05 klimt.1015granger.net kernel:  ? kthread_mod_delayed_work+0x115/0x115
    Sep 20 14:01:05 klimt.1015granger.net kernel:  ret_from_fork+0x22/0x30
    Reported-by: default avatarHe Zhe <zhe.he@windriver.com>
    Fixes: ca07eda3 ("SUNRPC: Refactor svc_recvfrom()")
    Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
    13a9a9d7
svcsock.c 37 KB