nfs: Remove unneeded checking of the return value from scnprintf
authorKinglong Mee <kinglongmee@gmail.com>
Mon, 31 Aug 2015 02:53:43 +0000 (10:53 +0800)
committerTrond Myklebust <trond.myklebust@primarydata.com>
Tue, 1 Sep 2015 22:19:40 +0000 (15:19 -0700)
The return value from scnprintf always less than the buffer length.
So, result >= len always false. This patch removes those checking.

int vscnprintf(char *buf, size_t size, const char *fmt, va_list args)
{
        int i;

i = vsnprintf(buf, size, fmt, args);

if (likely(i < size))
return i;
if (size != 0)
return size - 1;
return 0;
}

Signed-off-by: Kinglong Mee <kinglongmee@gmail.com>
Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
fs/nfs/nfs4proc.c

index 3f73539579e54671602575f188091a96b5a7fbba..693b903b48bdfb78808274e90f53971eb1f21244 100644 (file)
@@ -5014,11 +5014,10 @@ nfs4_init_nonuniform_client_string(struct nfs_client *clp)
        int result;
        size_t len;
        char *str;
        int result;
        size_t len;
        char *str;
-       bool retried = false;
 
        if (clp->cl_owner_id != NULL)
                return 0;
 
        if (clp->cl_owner_id != NULL)
                return 0;
-retry:
+
        rcu_read_lock();
        len = 14 + strlen(clp->cl_ipaddr) + 1 +
                strlen(rpc_peeraddr2str(clp->cl_rpcclient, RPC_DISPLAY_ADDR)) +
        rcu_read_lock();
        len = 14 + strlen(clp->cl_ipaddr) + 1 +
                strlen(rpc_peeraddr2str(clp->cl_rpcclient, RPC_DISPLAY_ADDR)) +
@@ -5046,14 +5045,6 @@ retry:
                        rpc_peeraddr2str(clp->cl_rpcclient, RPC_DISPLAY_PROTO));
        rcu_read_unlock();
 
                        rpc_peeraddr2str(clp->cl_rpcclient, RPC_DISPLAY_PROTO));
        rcu_read_unlock();
 
-       /* Did something change? */
-       if (result >= len) {
-               kfree(str);
-               if (retried)
-                       return -EINVAL;
-               retried = true;
-               goto retry;
-       }
        clp->cl_owner_id = str;
        return 0;
 }
        clp->cl_owner_id = str;
        return 0;
 }
@@ -5085,10 +5076,6 @@ nfs4_init_uniquifier_client_string(struct nfs_client *clp)
                        clp->rpc_ops->version, clp->cl_minorversion,
                        nfs4_client_id_uniquifier,
                        clp->cl_rpcclient->cl_nodename);
                        clp->rpc_ops->version, clp->cl_minorversion,
                        nfs4_client_id_uniquifier,
                        clp->cl_rpcclient->cl_nodename);
-       if (result >= len) {
-               kfree(str);
-               return -EINVAL;
-       }
        clp->cl_owner_id = str;
        return 0;
 }
        clp->cl_owner_id = str;
        return 0;
 }
@@ -5124,10 +5111,6 @@ nfs4_init_uniform_client_string(struct nfs_client *clp)
        result = scnprintf(str, len, "Linux NFSv%u.%u %s",
                        clp->rpc_ops->version, clp->cl_minorversion,
                        clp->cl_rpcclient->cl_nodename);
        result = scnprintf(str, len, "Linux NFSv%u.%u %s",
                        clp->rpc_ops->version, clp->cl_minorversion,
                        clp->cl_rpcclient->cl_nodename);
-       if (result >= len) {
-               kfree(str);
-               return -EINVAL;
-       }
        clp->cl_owner_id = str;
        return 0;
 }
        clp->cl_owner_id = str;
        return 0;
 }