packet : remove init_net restriction
[safe/jmp/linux-2.6] / net / sunrpc / auth_gss / gss_spkm3_seal.c
index 36c3bae..5a3a65a 100644 (file)
@@ -34,7 +34,6 @@
  */
 
 #include <linux/types.h>
-#include <linux/slab.h>
 #include <linux/jiffies.h>
 #include <linux/sunrpc/gss_spkm3.h>
 #include <linux/random.h>
@@ -107,10 +106,10 @@ spkm3_make_token(struct spkm3_ctx *ctx,
                tokenlen = 10 + ctxelen + 1 + md5elen + 1;
 
                /* Create token header using generic routines */
-               token->len = g_token_size(&ctx->mech_used, tokenlen);
+               token->len = g_token_size(&ctx->mech_used, tokenlen + 2);
 
                ptr = token->data;
-               g_make_token_header(&ctx->mech_used, tokenlen, &ptr);
+               g_make_token_header(&ctx->mech_used, tokenlen + 2, &ptr);
 
                spkm3_make_mic_token(&ptr, tokenlen, &mic_hdr, &md5cksum, md5elen, md5zbit);
        } else if (toktype == SPKM_WRAP_TOK) { /* Not Supported */
@@ -123,9 +122,6 @@ spkm3_make_token(struct spkm3_ctx *ctx,
 
        return  GSS_S_COMPLETE;
 out_err:
-       if (md5cksum.data)
-               kfree(md5cksum.data);
-
        token->data = NULL;
        token->len = 0;
        return GSS_S_FAILURE;
@@ -172,7 +168,11 @@ make_spkm3_checksum(s32 cksumtype, struct xdr_netobj *key, char *header,
        if (err)
                goto out;
 
-       sg_set_buf(sg, header, hdrlen);
+       err = crypto_hash_init(&desc);
+       if (err)
+               goto out;
+
+       sg_init_one(sg, header, hdrlen);
        crypto_hash_update(&desc, sg, sg->length);
 
        xdr_process_buf(body, body_offset, body->len - body_offset,
@@ -184,5 +184,3 @@ out:
 
        return err ? GSS_S_FAILURE : 0;
 }
-
-EXPORT_SYMBOL(make_spkm3_checksum);