]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - net/sunrpc/auth_gss/svcauth_gss.c
sunrpc: Disable splice for krb5i
[linux.git] / net / sunrpc / auth_gss / svcauth_gss.c
index a54a7a3d28f5300e7940769b1b3bc0b5daa7cfbb..7b1ee5a0b03cd10d167a6ca522243c4285996151 100644 (file)
@@ -838,6 +838,14 @@ unwrap_integ_data(struct svc_rqst *rqstp, struct xdr_buf *buf, u32 seq, struct g
        struct xdr_netobj mic;
        struct xdr_buf integ_buf;
 
+       /* NFS READ normally uses splice to send data in-place. However
+        * the data in cache can change after the reply's MIC is computed
+        * but before the RPC reply is sent. To prevent the client from
+        * rejecting the server-computed MIC in this somewhat rare case,
+        * do not use splice with the GSS integrity service.
+        */
+       clear_bit(RQ_SPLICE_OK, &rqstp->rq_flags);
+
        /* Did we already verify the signature on the original pass through? */
        if (rqstp->rq_deferred)
                return 0;