net: nfs: don't fail when nfs_read_reply returns -NFS_RPC_DROP
authorVasily Khoruzhick <anarsoul@gmail.com>
Mon, 14 May 2018 15:34:36 +0000 (08:34 -0700)
committerJoe Hershberger <joe.hershberger@ni.com>
Wed, 13 Jun 2018 18:54:16 +0000 (13:54 -0500)
That can happen if duplicate UDP packet arrived, and that's not uncommon.
Anyway, we ignore packets with rpc_id lower than last we sent for other
requests, so it makes sense to do that for read request as well.

Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
net/nfs.c

index 83ed0a7c37c9af87b918f15e018853d70fb63d17..9a16765ba1574fea6f732652aa9d51ad9cf604c1 100644 (file)
--- a/net/nfs.c
+++ b/net/nfs.c
@@ -822,6 +822,8 @@ static void nfs_handler(uchar *pkt, unsigned dest, struct in_addr sip,
 
        case STATE_READ_REQ:
                rlen = nfs_read_reply(pkt, len);
+               if (rlen == -NFS_RPC_DROP)
+                       break;
                net_set_timeout_handler(nfs_timeout, nfs_timeout_handler);
                if (rlen > 0) {
                        nfs_offset += rlen;