nfsd4: reject bad forechannel attrs earlier
authorJ. Bruce Fields <bfields@redhat.com>
Tue, 11 Sep 2012 19:33:21 +0000 (15:33 -0400)
committerJ. Bruce Fields <bfields@redhat.com>
Mon, 1 Oct 2012 21:39:58 +0000 (17:39 -0400)
This could simplify the logic a little later.

Signed-off-by: J. Bruce Fields <bfields@redhat.com>
fs/nfsd/nfs4state.c

index 5507842..64938ca 100644 (file)
@@ -1771,6 +1771,8 @@ nfsd4_create_session(struct svc_rqst *rqstp,
 
        if (cr_ses->flags & ~SESSION4_FLAG_MASK_A)
                return nfserr_inval;
+       if (check_forechannel_attrs(cr_ses->fore_channel))
+               return nfserr_toosmall;
 
        nfs4_lock_state();
        unconf = find_unconfirmed_client(&cr_ses->clientid, true);
@@ -1811,10 +1813,6 @@ nfsd4_create_session(struct svc_rqst *rqstp,
        cr_ses->flags &= ~SESSION4_PERSIST;
        cr_ses->flags &= ~SESSION4_RDMA;
 
-       status = nfserr_toosmall;
-       if (check_forechannel_attrs(cr_ses->fore_channel))
-               goto out;
-
        status = nfserr_jukebox;
        new = alloc_init_session(rqstp, conf, cr_ses);
        if (!new)