]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
SUNRPC: return proper error from gss_wrap_req_priv
authorChen Hanxiao <chenhx.fnst@fujitsu.com>
Thu, 23 May 2024 08:47:16 +0000 (16:47 +0800)
committerTrond Myklebust <trond.myklebust@hammerspace.com>
Thu, 30 May 2024 20:12:43 +0000 (16:12 -0400)
don't return 0 if snd_buf->len really greater than snd_buf->buflen

Signed-off-by: Chen Hanxiao <chenhx.fnst@fujitsu.com>
Fixes: 0c77668ddb4e ("SUNRPC: Introduce trace points in rpc_auth_gss.ko")
Reviewed-by: Benjamin Coddington <bcodding@redhat.com>
Reviewed-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
net/sunrpc/auth_gss/auth_gss.c

index c7af0220f82f42d8e630c9ee182d4e3c4922fb87..369310909fc98596c8a06db8ac3c976a719ca7b2 100644 (file)
@@ -1875,8 +1875,10 @@ gss_wrap_req_priv(struct rpc_cred *cred, struct gss_cl_ctx *ctx,
        offset = (u8 *)p - (u8 *)snd_buf->head[0].iov_base;
        maj_stat = gss_wrap(ctx->gc_gss_ctx, offset, snd_buf, inpages);
        /* slack space should prevent this ever happening: */
-       if (unlikely(snd_buf->len > snd_buf->buflen))
+       if (unlikely(snd_buf->len > snd_buf->buflen)) {
+               status = -EIO;
                goto wrap_failed;
+       }
        /* We're assuming that when GSS_S_CONTEXT_EXPIRED, the encryption was
         * done anyway, so it's safe to put the request on the wire: */
        if (maj_stat == GSS_S_CONTEXT_EXPIRED)