OSDN Git Service

nfsd/callback: Drop a useless data copy when comparing sessionid
authorKinglong Mee <kinglongmee@gmail.com>
Sun, 5 Feb 2017 01:57:48 +0000 (09:57 +0800)
committerJ. Bruce Fields <bfields@redhat.com>
Fri, 17 Feb 2017 21:26:02 +0000 (16:26 -0500)
Signed-off-by: Kinglong Mee <kinglongmee@gmail.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
fs/nfsd/nfs4callback.c

index ea74149..0274db6 100644 (file)
@@ -397,13 +397,10 @@ static int decode_cb_sequence4resok(struct xdr_stream *xdr,
                                    struct nfsd4_callback *cb)
 {
        struct nfsd4_session *session = cb->cb_clp->cl_cb_session;
-       struct nfs4_sessionid id;
-       int status;
+       int status = -ESERVERFAULT;
        __be32 *p;
        u32 dummy;
 
-       status = -ESERVERFAULT;
-
        /*
         * If the server returns different values for sessionID, slotID or
         * sequence number, the server is looney tunes.
@@ -411,9 +408,8 @@ static int decode_cb_sequence4resok(struct xdr_stream *xdr,
        p = xdr_inline_decode(xdr, NFS4_MAX_SESSIONID_LEN + 4 + 4 + 4 + 4);
        if (unlikely(p == NULL))
                goto out_overflow;
-       memcpy(id.data, p, NFS4_MAX_SESSIONID_LEN);
-       if (memcmp(id.data, session->se_sessionid.data,
-                                       NFS4_MAX_SESSIONID_LEN) != 0) {
+
+       if (memcmp(p, session->se_sessionid.data, NFS4_MAX_SESSIONID_LEN)) {
                dprintk("NFS: %s Invalid session id\n", __func__);
                goto out;
        }