| From e9776d0f4adee8877145672f6416b06b57f2dc27 Mon Sep 17 00:00:00 2001 |
| From: Trond Myklebust <trond.myklebust@primarydata.com> |
| Date: Sun, 16 Feb 2014 13:28:01 -0500 |
| Subject: SUNRPC: Fix a pipe_version reference leak |
| |
| From: Trond Myklebust <trond.myklebust@primarydata.com> |
| |
| commit e9776d0f4adee8877145672f6416b06b57f2dc27 upstream. |
| |
| In gss_alloc_msg(), if the call to gss_encode_v1_msg() fails, we |
| want to release the reference to the pipe_version that was obtained |
| earlier in the function. |
| |
| Fixes: 9d3a2260f0f4b (SUNRPC: Fix buffer overflow checking in...) |
| Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| net/sunrpc/auth_gss/auth_gss.c | 4 +++- |
| 1 file changed, 3 insertions(+), 1 deletion(-) |
| |
| --- a/net/sunrpc/auth_gss/auth_gss.c |
| +++ b/net/sunrpc/auth_gss/auth_gss.c |
| @@ -500,10 +500,12 @@ gss_alloc_msg(struct gss_auth *gss_auth, |
| default: |
| err = gss_encode_v1_msg(gss_msg, service_name, gss_auth->target_name); |
| if (err) |
| - goto err_free_msg; |
| + goto err_put_pipe_version; |
| }; |
| kref_get(&gss_auth->kref); |
| return gss_msg; |
| +err_put_pipe_version: |
| + put_pipe_version(gss_auth->net); |
| err_free_msg: |
| kfree(gss_msg); |
| err: |