From: Trond Myklebust <trond.myklebust@fys.uio.no>

RPCSEC_GSS: Make it safe to share crypto tfms among multiple threads.


---

 net/sunrpc/auth_gss/gss_krb5_crypto.c |    6 ++----
 1 files changed, 2 insertions(+), 4 deletions(-)

diff -puN net/sunrpc/auth_gss/gss_krb5_crypto.c~nfs-07-gss_krb5 net/sunrpc/auth_gss/gss_krb5_crypto.c
--- 25/net/sunrpc/auth_gss/gss_krb5_crypto.c~nfs-07-gss_krb5	2004-01-09 22:16:12.000000000 -0800
+++ 25-akpm/net/sunrpc/auth_gss/gss_krb5_crypto.c	2004-01-09 22:16:12.000000000 -0800
@@ -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 = offset_in_page(out);
 	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 = offset_in_page(out);
 	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);

_