SUNRPC: Use atomic(64)_t for seq_send(64)
[linux-2.6-block.git] / net / sunrpc / auth_gss / gss_krb5_wrap.c
index a737c2da08373e33aabb42b994cf83a02182711a..6af6f119d9c1af6e5fb271138874fe55b35782c0 100644 (file)
@@ -228,9 +228,7 @@ gss_wrap_kerberos_v1(struct krb5_ctx *kctx, int offset,
 
        memcpy(ptr + GSS_KRB5_TOK_HDR_LEN, md5cksum.data, md5cksum.len);
 
-       spin_lock(&krb5_seq_lock);
-       seq_send = kctx->seq_send++;
-       spin_unlock(&krb5_seq_lock);
+       seq_send = atomic_fetch_inc(&kctx->seq_send);
 
        /* XXX would probably be more efficient to compute checksum
         * and encrypt at the same time: */
@@ -440,7 +438,6 @@ static u32
 gss_wrap_kerberos_v2(struct krb5_ctx *kctx, u32 offset,
                     struct xdr_buf *buf, struct page **pages)
 {
-       int             blocksize;
        u8              *ptr, *plainhdr;
        s32             now;
        u8              flags = 0x00;
@@ -473,15 +470,12 @@ gss_wrap_kerberos_v2(struct krb5_ctx *kctx, u32 offset,
        *ptr++ = 0xff;
        be16ptr = (__be16 *)ptr;
 
-       blocksize = crypto_skcipher_blocksize(kctx->acceptor_enc);
        *be16ptr++ = 0;
        /* "inner" token header always uses 0 for RRC */
        *be16ptr++ = 0;
 
        be64ptr = (__be64 *)be16ptr;
-       spin_lock(&krb5_seq_lock);
-       *be64ptr = cpu_to_be64(kctx->seq_send64++);
-       spin_unlock(&krb5_seq_lock);
+       *be64ptr = cpu_to_be64(atomic64_fetch_inc(&kctx->seq_send64));
 
        err = (*kctx->gk5e->encrypt_v2)(kctx, offset, buf, pages);
        if (err)
@@ -623,4 +617,3 @@ gss_unwrap_kerberos(struct gss_ctx *gctx, int offset, struct xdr_buf *buf)
                return gss_unwrap_kerberos_v2(kctx, offset, buf);
        }
 }
-