diff options
author | Greg Kroah-Hartman | 2016-11-14 08:11:29 +0100 |
---|---|---|
committer | Greg Kroah-Hartman | 2016-11-14 08:11:29 +0100 |
commit | 8a0a8e1c42fdf656e7b729e9c468c2caa687adb7 (patch) | |
tree | bde58e16dd5e6912deccac7e41b9a95f05187ea6 /net/sunrpc/auth_gss/svcauth_gss.c | |
parent | USB: cdc-acm: use get_icount tty operation (diff) | |
parent | Linux 4.9-rc5 (diff) | |
download | kernel-qcow2-linux-8a0a8e1c42fdf656e7b729e9c468c2caa687adb7.tar.gz kernel-qcow2-linux-8a0a8e1c42fdf656e7b729e9c468c2caa687adb7.tar.xz kernel-qcow2-linux-8a0a8e1c42fdf656e7b729e9c468c2caa687adb7.zip |
Merge 4.9-rc5 into usb-next
We want/need the USB fixes in here as well, for testing and merge
issues.
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'net/sunrpc/auth_gss/svcauth_gss.c')
-rw-r--r-- | net/sunrpc/auth_gss/svcauth_gss.c | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/net/sunrpc/auth_gss/svcauth_gss.c b/net/sunrpc/auth_gss/svcauth_gss.c index d67f7e1bc82d..45662d7f0943 100644 --- a/net/sunrpc/auth_gss/svcauth_gss.c +++ b/net/sunrpc/auth_gss/svcauth_gss.c @@ -718,30 +718,37 @@ gss_write_null_verf(struct svc_rqst *rqstp) static int gss_write_verf(struct svc_rqst *rqstp, struct gss_ctx *ctx_id, u32 seq) { - __be32 xdr_seq; + __be32 *xdr_seq; u32 maj_stat; struct xdr_buf verf_data; struct xdr_netobj mic; __be32 *p; struct kvec iov; + int err = -1; svc_putnl(rqstp->rq_res.head, RPC_AUTH_GSS); - xdr_seq = htonl(seq); + xdr_seq = kmalloc(4, GFP_KERNEL); + if (!xdr_seq) + return -1; + *xdr_seq = htonl(seq); - iov.iov_base = &xdr_seq; - iov.iov_len = sizeof(xdr_seq); + iov.iov_base = xdr_seq; + iov.iov_len = 4; xdr_buf_from_iov(&iov, &verf_data); p = rqstp->rq_res.head->iov_base + rqstp->rq_res.head->iov_len; mic.data = (u8 *)(p + 1); maj_stat = gss_get_mic(ctx_id, &verf_data, &mic); if (maj_stat != GSS_S_COMPLETE) - return -1; + goto out; *p++ = htonl(mic.len); memset((u8 *)p + mic.len, 0, round_up_to_quad(mic.len) - mic.len); p += XDR_QUADLEN(mic.len); if (!xdr_ressize_check(rqstp, p)) - return -1; - return 0; + goto out; + err = 0; +out: + kfree(xdr_seq); + return err; } struct gss_domain { |