diff options
-rw-r--r-- | arch/x86/crypto/aesni-intel_glue.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/arch/x86/crypto/aesni-intel_glue.c b/arch/x86/crypto/aesni-intel_glue.c index e1e60c7d5813..e0135526345d 100644 --- a/arch/x86/crypto/aesni-intel_glue.c +++ b/arch/x86/crypto/aesni-intel_glue.c | |||
@@ -873,21 +873,19 @@ rfc4106_set_hash_subkey(u8 *hash_subkey, const u8 *key, unsigned int key_len) | |||
873 | crypto_ablkcipher_clear_flags(ctr_tfm, ~0); | 873 | crypto_ablkcipher_clear_flags(ctr_tfm, ~0); |
874 | 874 | ||
875 | ret = crypto_ablkcipher_setkey(ctr_tfm, key, key_len); | 875 | ret = crypto_ablkcipher_setkey(ctr_tfm, key, key_len); |
876 | if (ret) { | 876 | if (ret) |
877 | crypto_free_ablkcipher(ctr_tfm); | 877 | goto out; |
878 | return ret; | ||
879 | } | ||
880 | 878 | ||
881 | req = ablkcipher_request_alloc(ctr_tfm, GFP_KERNEL); | 879 | req = ablkcipher_request_alloc(ctr_tfm, GFP_KERNEL); |
882 | if (!req) { | 880 | if (!req) { |
883 | crypto_free_ablkcipher(ctr_tfm); | 881 | ret = -EINVAL; |
884 | return -EINVAL; | 882 | goto out_free_ablkcipher; |
885 | } | 883 | } |
886 | 884 | ||
887 | req_data = kmalloc(sizeof(*req_data), GFP_KERNEL); | 885 | req_data = kmalloc(sizeof(*req_data), GFP_KERNEL); |
888 | if (!req_data) { | 886 | if (!req_data) { |
889 | crypto_free_ablkcipher(ctr_tfm); | 887 | ret = -ENOMEM; |
890 | return -ENOMEM; | 888 | goto out_free_request; |
891 | } | 889 | } |
892 | memset(req_data->iv, 0, sizeof(req_data->iv)); | 890 | memset(req_data->iv, 0, sizeof(req_data->iv)); |
893 | 891 | ||
@@ -913,9 +911,12 @@ rfc4106_set_hash_subkey(u8 *hash_subkey, const u8 *key, unsigned int key_len) | |||
913 | if (!ret) | 911 | if (!ret) |
914 | ret = req_data->result.err; | 912 | ret = req_data->result.err; |
915 | } | 913 | } |
914 | out_free_request: | ||
916 | ablkcipher_request_free(req); | 915 | ablkcipher_request_free(req); |
917 | kfree(req_data); | 916 | kfree(req_data); |
917 | out_free_ablkcipher: | ||
918 | crypto_free_ablkcipher(ctr_tfm); | 918 | crypto_free_ablkcipher(ctr_tfm); |
919 | out: | ||
919 | return ret; | 920 | return ret; |
920 | } | 921 | } |
921 | 922 | ||