Make it safe to share tfm's among multiple threads. diff -puN net/sunrpc/auth_gss/gss_krb5_crypto.c~gss-krb5-iv-on-stack net/sunrpc/auth_gss/gss_krb5_crypto.c --- linux-2.5.71/net/sunrpc/auth_gss/gss_krb5_crypto.c~gss-krb5-iv-on-stack 2003-06-16 21:51:51.000000000 -0400 +++ linux-2.5.71-bfields/net/sunrpc/auth_gss/gss_krb5_crypto.c 2003-06-16 21:55:11.000000000 -0400 @@ -71,14 +71,13 @@ krb5_encrypt( if (iv) memcpy(local_iv, iv, crypto_tfm_alg_ivsize(tfm)); - crypto_cipher_set_iv(tfm, local_iv, crypto_tfm_alg_ivsize(tfm)); memcpy(out, in, length); sg[0].page = virt_to_page(out); sg[0].offset = ((long)out & ~PAGE_MASK); sg[0].length = length; - ret = crypto_cipher_encrypt(tfm, sg, sg, length); + ret = crypto_cipher_encrypt_iv(tfm, sg, sg, length, local_iv); out: dprintk("gss_k5encrypt returns %d\n",ret); @@ -110,14 +109,13 @@ krb5_decrypt( } if (iv) memcpy(local_iv,iv, crypto_tfm_alg_ivsize(tfm)); - crypto_cipher_set_iv(tfm, local_iv, crypto_tfm_alg_blocksize(tfm)); memcpy(out, in, length); sg[0].page = virt_to_page(out); sg[0].offset = ((long)out & ~PAGE_MASK); sg[0].length = length; - ret = crypto_cipher_decrypt(tfm, sg, sg, length); + ret = crypto_cipher_decrypt_iv(tfm, sg, sg, length, local_iv); out: dprintk("gss_k5decrypt returns %d\n",ret); _