Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=b797b5beac966df5c5d96c0d39fe366f57135343
Commit:     b797b5beac966df5c5d96c0d39fe366f57135343
Parent:     451c11a161168fbdbba17573d4b062fdd2a4c2c4
Author:     J.Bruce Fields <[EMAIL PROTECTED]>
AuthorDate: Wed Dec 13 00:35:19 2006 -0800
Committer:  Linus Torvalds <[EMAIL PROTECTED]>
CommitDate: Wed Dec 13 09:05:53 2006 -0800

    [PATCH] knfsd: svcrpc: fix gss krb5i memory leak
    
    The memory leak here is embarassingly obvious.
    
    This fixes a problem that causes the kernel to leak a small amount of memory
    every time it receives a integrity-protected request.
    
    Thanks to Aim Le Rouzic for the bug report.
    
    Signed-off-by: J. Bruce Fields <[EMAIL PROTECTED]>
    Signed-off-by: Neil Brown <[EMAIL PROTECTED]>
    Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
    Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]>
---
 net/sunrpc/auth_gss/svcauth_gss.c |    9 +++++----
 1 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/net/sunrpc/auth_gss/svcauth_gss.c 
b/net/sunrpc/auth_gss/svcauth_gss.c
index 700353b..3bf3520 100644
--- a/net/sunrpc/auth_gss/svcauth_gss.c
+++ b/net/sunrpc/auth_gss/svcauth_gss.c
@@ -804,19 +804,19 @@ unwrap_integ_data(struct xdr_buf *buf, u32 seq, struct 
gss_ctx *ctx)
 
        integ_len = svc_getnl(&buf->head[0]);
        if (integ_len & 3)
-               goto out;
+               return stat;
        if (integ_len > buf->len)
-               goto out;
+               return stat;
        if (xdr_buf_subsegment(buf, &integ_buf, 0, integ_len))
                BUG();
        /* copy out mic... */
        if (read_u32_from_xdr_buf(buf, integ_len, &mic.len))
                BUG();
        if (mic.len > RPC_MAX_AUTH_SIZE)
-               goto out;
+               return stat;
        mic.data = kmalloc(mic.len, GFP_KERNEL);
        if (!mic.data)
-               goto out;
+               return stat;
        if (read_bytes_from_xdr_buf(buf, integ_len + 4, mic.data, mic.len))
                goto out;
        maj_stat = gss_verify_mic(ctx, &integ_buf, &mic);
@@ -826,6 +826,7 @@ unwrap_integ_data(struct xdr_buf *buf, u32 seq, struct 
gss_ctx *ctx)
                goto out;
        stat = 0;
 out:
+       kfree(mic.data);
        return stat;
 }
 
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to