summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCristian Stoica <cristian.stoica@freescale.com>2015-01-07 17:55:01 +0800
committerZhenhua Luo <zhenhua.luo@freescale.com>2015-01-08 18:15:48 +0800
commite5e0b7344822a3fd9f24d5253ae828d3acbca09c (patch)
tree703eee8707e7a85ea7158d6b62e2d32cc4b794dd
parentfadb98fa93b4e2fe5b7912e3725eb96c3bc71866 (diff)
downloadmeta-fsl-ppc-e5e0b7344822a3fd9f24d5253ae828d3acbca09c.tar.gz
cryptodev: update origin and remove stale patches
- Nikos handed over project maintainance to Phil Sutter. - Several pending patches have been merged upstream so we removed them from the recipe. The remaining ones have been sorted Signed-off-by: Cristian Stoica <cristian.stoica@freescale.com> Change-Id: I0c6160c739d379ba787e72423d1564b9a3d05d8b Reviewed-on: http://git.am.freescale.net:8181/24177 Reviewed-by: Zhenhua Luo <zhenhua.luo@freescale.com> Tested-by: Zhenhua Luo <zhenhua.luo@freescale.com>
-rw-r--r--recipes-kernel/cryptodev/cryptodev-fsl.inc29
-rw-r--r--recipes-kernel/cryptodev/cryptodev-fsl/0001-add-support-for-composite-TLS10-SHA1-AES-algorithm-o.patch (renamed from recipes-kernel/cryptodev/cryptodev-fsl/0001-add-support-for-composite-TLS-SHA1-AES-algorithm-off.patch)31
-rw-r--r--recipes-kernel/cryptodev/cryptodev-fsl/0002-add-support-for-COMPAT_CIOCAUTHCRYPT-ioctl.patch (renamed from recipes-kernel/cryptodev/cryptodev-fsl/0007-add-support-for-COMPAT_CIOCAUTHCRYPT-ioctl.patch)34
-rw-r--r--recipes-kernel/cryptodev/cryptodev-fsl/0002-use-function-local-storage-for-cipher-and-hmac-keys.patch87
-rw-r--r--recipes-kernel/cryptodev/cryptodev-fsl/0003-Add-support-for-aead-keys-for-composite-algorithms.patch170
-rw-r--r--recipes-kernel/cryptodev/cryptodev-fsl/0003-PKC-support-added-in-cryptodev-module.patch (renamed from recipes-kernel/cryptodev/cryptodev-fsl/0009-PKC-support-added-in-cryptodev-module.patch)60
-rw-r--r--recipes-kernel/cryptodev/cryptodev-fsl/0004-Compat-versions-of-PKC-IOCTLs.patch (renamed from recipes-kernel/cryptodev/cryptodev-fsl/0010-Compat-versions-of-PKC-IOCTLs.patch)22
-rw-r--r--recipes-kernel/cryptodev/cryptodev-fsl/0004-fix-scatterlist-size-for-in-place-operations.patch39
-rw-r--r--recipes-kernel/cryptodev/cryptodev-fsl/0005-Asynchronous-interface-changes-in-cryptodev.patch (renamed from recipes-kernel/cryptodev/cryptodev-fsl/0011-Asynchronous-interface-changes-in-cryptodev.patch)34
-rw-r--r--recipes-kernel/cryptodev/cryptodev-fsl/0005-add-dst_len-parameter-to-be-provided-by-the-user.patch70
-rw-r--r--recipes-kernel/cryptodev/cryptodev-fsl/0006-ECC_KEYGEN-and-DLC_KEYGEN-supported-in-cryptodev-mod.patch (renamed from recipes-kernel/cryptodev/cryptodev-fsl/0012-ECC_KEYGEN-and-DLC_KEYGEN-supported-in-cryptodev-mod.patch)33
-rw-r--r--recipes-kernel/cryptodev/cryptodev-fsl/0006-fix-build-error-on-some-targets.patch64
-rw-r--r--recipes-kernel/cryptodev/cryptodev-fsl/0007-RCU-stall-fixed-in-PKC-asynchronous-interface.patch (renamed from recipes-kernel/cryptodev/cryptodev-fsl/0013-RCU-stall-fixed-in-PKC-asynchronous-interface.patch)32
-rw-r--r--recipes-kernel/cryptodev/cryptodev-fsl/0008-Add-RSA-Key-generation-offloading.patch (renamed from recipes-kernel/cryptodev/cryptodev-fsl/0015-Add-RSA-Key-generation-offloading.patch)28
-rw-r--r--recipes-kernel/cryptodev/cryptodev-fsl/0008-fix-cipher-algorithm-memleaks.patch53
-rw-r--r--recipes-kernel/cryptodev/cryptodev-fsl/0009-Fixed-compilation-error-of-openssl-with-fsl-cryptode.patch (renamed from recipes-kernel/cryptodev/cryptodev-fsl/0016-Fixed-compilation-error-of-openssl-with-fsl-cryptode.patch)84
-rw-r--r--recipes-kernel/cryptodev/cryptodev-fsl/0014-use-static-allocation-for-keys-copied-from-userspace.patch131
17 files changed, 210 insertions, 791 deletions
diff --git a/recipes-kernel/cryptodev/cryptodev-fsl.inc b/recipes-kernel/cryptodev/cryptodev-fsl.inc
index 70544e2..e32e350 100644
--- a/recipes-kernel/cryptodev/cryptodev-fsl.inc
+++ b/recipes-kernel/cryptodev/cryptodev-fsl.inc
@@ -1,24 +1,17 @@
1FILESEXTRAPATHS_prepend := "${THISDIR}/cryptodev-fsl:" 1FILESEXTRAPATHS_prepend := "${THISDIR}/cryptodev-fsl:"
2 2
3SRC_URI_qoriq-ppc = "git://github.com/nmav/cryptodev-linux.git \ 3SRC_URI_qoriq-ppc = "git://github.com/cryptodev-linux/cryptodev-linux.git \
4 file://0001-add-support-for-composite-TLS-SHA1-AES-algorithm-off.patch \ 4 file://0001-add-support-for-composite-TLS10-SHA1-AES-algorithm-o.patch \
5 file://0002-use-function-local-storage-for-cipher-and-hmac-keys.patch \ 5 file://0002-add-support-for-COMPAT_CIOCAUTHCRYPT-ioctl.patch \
6 file://0003-Add-support-for-aead-keys-for-composite-algorithms.patch \ 6 file://0003-PKC-support-added-in-cryptodev-module.patch \
7 file://0004-fix-scatterlist-size-for-in-place-operations.patch \ 7 file://0004-Compat-versions-of-PKC-IOCTLs.patch \
8 file://0005-add-dst_len-parameter-to-be-provided-by-the-user.patch \ 8 file://0005-Asynchronous-interface-changes-in-cryptodev.patch \
9 file://0006-fix-build-error-on-some-targets.patch \ 9 file://0006-ECC_KEYGEN-and-DLC_KEYGEN-supported-in-cryptodev-mod.patch \
10 file://0007-add-support-for-COMPAT_CIOCAUTHCRYPT-ioctl.patch \ 10 file://0007-RCU-stall-fixed-in-PKC-asynchronous-interface.patch \
11 file://0008-fix-cipher-algorithm-memleaks.patch \ 11 file://0008-Add-RSA-Key-generation-offloading.patch \
12 file://0009-PKC-support-added-in-cryptodev-module.patch \ 12 file://0009-Fixed-compilation-error-of-openssl-with-fsl-cryptode.patch \
13 file://0010-Compat-versions-of-PKC-IOCTLs.patch \
14 file://0011-Asynchronous-interface-changes-in-cryptodev.patch \
15 file://0012-ECC_KEYGEN-and-DLC_KEYGEN-supported-in-cryptodev-mod.patch \
16 file://0013-RCU-stall-fixed-in-PKC-asynchronous-interface.patch \
17 file://0014-use-static-allocation-for-keys-copied-from-userspace.patch \
18 file://0015-Add-RSA-Key-generation-offloading.patch \
19 file://0016-Fixed-compilation-error-of-openssl-with-fsl-cryptode.patch \
20" 13"
21SRCREV_qoriq-ppc = "e8609a408d40c83ae8fc11bbe9a7b3847612669b" 14SRCREV_qoriq-ppc = "6aa62a2c320b04f55fdfe0ed015c3d9b48997239"
22 15
23S_qoriq-ppc = "${WORKDIR}/git" 16S_qoriq-ppc = "${WORKDIR}/git"
24 17
diff --git a/recipes-kernel/cryptodev/cryptodev-fsl/0001-add-support-for-composite-TLS-SHA1-AES-algorithm-off.patch b/recipes-kernel/cryptodev/cryptodev-fsl/0001-add-support-for-composite-TLS10-SHA1-AES-algorithm-o.patch
index 094fb0b..796e548 100644
--- a/recipes-kernel/cryptodev/cryptodev-fsl/0001-add-support-for-composite-TLS-SHA1-AES-algorithm-off.patch
+++ b/recipes-kernel/cryptodev/cryptodev-fsl/0001-add-support-for-composite-TLS10-SHA1-AES-algorithm-o.patch
@@ -1,23 +1,22 @@
1From 434790a1bbafa371c0c6647238234573db98d017 Mon Sep 17 00:00:00 2001 1From 715ade8236f40cf811c39f9538dfd60803967fcd Mon Sep 17 00:00:00 2001
2From: Cristian Stoica <cristian.stoica@freescale.com> 2From: Cristian Stoica <cristian.stoica@freescale.com>
3Date: Thu, 29 Aug 2013 16:52:30 +0300 3Date: Thu, 29 Aug 2013 16:52:30 +0300
4Subject: [[Patch][fsl 01/16] add support for composite TLS(SHA1,AES) 4Subject: [PATCH 1/9] add support for composite TLS10(SHA1,AES) algorithm
5 algorithm offload 5 offload
6 6
7Upstream-status: Pending 7This adds support for composite algorithm offload as a primitive
8crypto (cipher + hmac) operation.
8 9
9This adds support for composite algorithm offload in a single crypto 10It requires kernel support for tls10(hmac(sha1),cbc(aes)) algorithm
10(cipher + hmac) operation. 11provided either in software or accelerated by hardware such as
11 12Freescale B*, P* and T* platforms.
12It requires either software or hardware TLS support in the Linux kernel
13and can be used with Freescale B*, P* and T* platforms that have support
14for hardware TLS acceleration.
15 13
14Change-Id: Ia1c605da3860e91e681295dfc8df7c09eb4006cf
16Signed-off-by: Cristian Stoica <cristian.stoica@freescale.com> 15Signed-off-by: Cristian Stoica <cristian.stoica@freescale.com>
17Tested-by: Horia Ioan Geanta Neag <horia.geanta@freescale.com> 16Reviewed-on: http://git.am.freescale.net:8181/17218
18--- 17---
19 crypto/cryptodev.h | 1 + 18 crypto/cryptodev.h | 1 +
20 ioctl.c | 5 +++++ 19 ioctl.c | 5 +++++
21 2 files changed, 6 insertions(+) 20 2 files changed, 6 insertions(+)
22 21
23diff --git a/crypto/cryptodev.h b/crypto/cryptodev.h 22diff --git a/crypto/cryptodev.h b/crypto/cryptodev.h
@@ -33,10 +32,10 @@ index 7fb9c7d..c0e8cd4 100644
33 }; 32 };
34 33
35diff --git a/ioctl.c b/ioctl.c 34diff --git a/ioctl.c b/ioctl.c
36index d4e83f4..a0f1db1 100644 35index 5a55a76..f9b9b2e 100644
37--- a/ioctl.c 36--- a/ioctl.c
38+++ b/ioctl.c 37+++ b/ioctl.c
39@@ -146,6 +146,11 @@ crypto_create_session(struct fcrypt *fcr, struct session_op *sop) 38@@ -159,6 +159,11 @@ crypto_create_session(struct fcrypt *fcr, struct session_op *sop)
40 stream = 1; 39 stream = 1;
41 aead = 1; 40 aead = 1;
42 break; 41 break;
@@ -49,5 +48,5 @@ index d4e83f4..a0f1db1 100644
49 alg_name = "ecb(cipher_null)"; 48 alg_name = "ecb(cipher_null)";
50 stream = 1; 49 stream = 1;
51-- 50--
521.7.9.7 511.8.3.1
53 52
diff --git a/recipes-kernel/cryptodev/cryptodev-fsl/0007-add-support-for-COMPAT_CIOCAUTHCRYPT-ioctl.patch b/recipes-kernel/cryptodev/cryptodev-fsl/0002-add-support-for-COMPAT_CIOCAUTHCRYPT-ioctl.patch
index b796f16..086a97f 100644
--- a/recipes-kernel/cryptodev/cryptodev-fsl/0007-add-support-for-COMPAT_CIOCAUTHCRYPT-ioctl.patch
+++ b/recipes-kernel/cryptodev/cryptodev-fsl/0002-add-support-for-COMPAT_CIOCAUTHCRYPT-ioctl.patch
@@ -1,25 +1,26 @@
1From 75e26bf18997488518228cb851585bf8e4c3120f Mon Sep 17 00:00:00 2001 1From 4b766c93e4ee19248dd66bbebb61fb5cc9c8a012 Mon Sep 17 00:00:00 2001
2From: Horia Geanta <horia.geanta@freescale.com> 2From: Horia Geanta <horia.geanta@freescale.com>
3Date: Wed, 4 Dec 2013 15:43:41 +0200 3Date: Wed, 4 Dec 2013 15:43:41 +0200
4Subject: [[Patch][fsl 07/16] add support for COMPAT_CIOCAUTHCRYPT ioctl() 4Subject: [PATCH 2/9] add support for COMPAT_CIOCAUTHCRYPT ioctl()
5 5
6Upstream-status: Pending 6Upstream-status: Pending
7 7
8Needed for 64b kernel with 32b user space. 8Needed for 64b kernel with 32b user space.
9 9
10Change-Id: I44a999a4164e7ae7122dee6ed0716b2f25cadbc1
10Signed-off-by: Horia Geanta <horia.geanta@freescale.com> 11Signed-off-by: Horia Geanta <horia.geanta@freescale.com>
11Tested-by: Cristian Stoica <cristian.stoica@freescale.com> 12Tested-by: Cristian Stoica <cristian.stoica@freescale.com>
12--- 13---
13 authenc.c | 80 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 14 authenc.c | 78 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
14 cryptodev_int.h | 41 ++++++++++++++++++++++++++++ 15 cryptodev_int.h | 40 +++++++++++++++++++++++++++++
15 ioctl.c | 16 +++++++++++ 16 ioctl.c | 16 ++++++++++++
16 3 files changed, 137 insertions(+) 17 3 files changed, 134 insertions(+)
17 18
18diff --git a/authenc.c b/authenc.c 19diff --git a/authenc.c b/authenc.c
19index 5235973..259a225 100644 20index 1bd7377..ef0d3db 100644
20--- a/authenc.c 21--- a/authenc.c
21+++ b/authenc.c 22+++ b/authenc.c
22@@ -241,6 +241,86 @@ static int fill_caop_from_kcaop(struct kernel_crypt_auth_op *kcaop, struct fcryp 23@@ -272,6 +272,84 @@ static int fill_caop_from_kcaop(struct kernel_crypt_auth_op *kcaop, struct fcryp
23 return 0; 24 return 0;
24 } 25 }
25 26
@@ -34,7 +35,6 @@ index 5235973..259a225 100644
34+ caop->op = compat->op; 35+ caop->op = compat->op;
35+ caop->flags = compat->flags; 36+ caop->flags = compat->flags;
36+ caop->len = compat->len; 37+ caop->len = compat->len;
37+ caop->dst_len = compat->dst_len;
38+ caop->auth_len = compat->auth_len; 38+ caop->auth_len = compat->auth_len;
39+ caop->tag_len = compat->tag_len; 39+ caop->tag_len = compat->tag_len;
40+ caop->iv_len = compat->iv_len; 40+ caop->iv_len = compat->iv_len;
@@ -54,7 +54,6 @@ index 5235973..259a225 100644
54+ compat->op = caop->op; 54+ compat->op = caop->op;
55+ compat->flags = caop->flags; 55+ compat->flags = caop->flags;
56+ compat->len = caop->len; 56+ compat->len = caop->len;
57+ compat->dst_len = caop->dst_len;
58+ compat->auth_len = caop->auth_len; 57+ compat->auth_len = caop->auth_len;
59+ compat->tag_len = caop->tag_len; 58+ compat->tag_len = caop->tag_len;
60+ compat->iv_len = caop->iv_len; 59+ compat->iv_len = caop->iv_len;
@@ -107,10 +106,10 @@ index 5235973..259a225 100644
107 int kcaop_from_user(struct kernel_crypt_auth_op *kcaop, 106 int kcaop_from_user(struct kernel_crypt_auth_op *kcaop,
108 struct fcrypt *fcr, void __user *arg) 107 struct fcrypt *fcr, void __user *arg)
109diff --git a/cryptodev_int.h b/cryptodev_int.h 108diff --git a/cryptodev_int.h b/cryptodev_int.h
110index d7660fa..8d206c9 100644 109index d7660fa..8e687e7 100644
111--- a/cryptodev_int.h 110--- a/cryptodev_int.h
112+++ b/cryptodev_int.h 111+++ b/cryptodev_int.h
113@@ -73,11 +73,43 @@ struct compat_crypt_op { 112@@ -73,11 +73,42 @@ struct compat_crypt_op {
114 compat_uptr_t iv;/* initialization vector for encryption operations */ 113 compat_uptr_t iv;/* initialization vector for encryption operations */
115 }; 114 };
116 115
@@ -120,7 +119,6 @@ index d7660fa..8d206c9 100644
120+ uint16_t op; /* COP_ENCRYPT or COP_DECRYPT */ 119+ uint16_t op; /* COP_ENCRYPT or COP_DECRYPT */
121+ uint16_t flags; /* see COP_FLAG_AEAD_* */ 120+ uint16_t flags; /* see COP_FLAG_AEAD_* */
122+ uint32_t len; /* length of source data */ 121+ uint32_t len; /* length of source data */
123+ uint32_t dst_len; /* length of result data */
124+ uint32_t auth_len; /* length of auth data */ 122+ uint32_t auth_len; /* length of auth data */
125+ compat_uptr_t auth_src; /* authenticated-only data */ 123+ compat_uptr_t auth_src; /* authenticated-only data */
126+ 124+
@@ -154,7 +152,7 @@ index d7660fa..8d206c9 100644
154 152
155 #endif /* CONFIG_COMPAT */ 153 #endif /* CONFIG_COMPAT */
156 154
157@@ -108,6 +140,15 @@ struct kernel_crypt_auth_op { 155@@ -108,6 +139,15 @@ struct kernel_crypt_auth_op {
158 156
159 /* auth */ 157 /* auth */
160 158
@@ -171,10 +169,10 @@ index d7660fa..8d206c9 100644
171 struct fcrypt *fcr, void __user *arg); 169 struct fcrypt *fcr, void __user *arg);
172 int kcaop_to_user(struct kernel_crypt_auth_op *kcaop, 170 int kcaop_to_user(struct kernel_crypt_auth_op *kcaop,
173diff --git a/ioctl.c b/ioctl.c 171diff --git a/ioctl.c b/ioctl.c
174index 3baf195..18874d3 100644 172index f9b9b2e..1563c75 100644
175--- a/ioctl.c 173--- a/ioctl.c
176+++ b/ioctl.c 174+++ b/ioctl.c
177@@ -991,6 +991,7 @@ cryptodev_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg_) 175@@ -998,6 +998,7 @@ cryptodev_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg_)
178 struct session_op sop; 176 struct session_op sop;
179 struct compat_session_op compat_sop; 177 struct compat_session_op compat_sop;
180 struct kernel_crypt_op kcop; 178 struct kernel_crypt_op kcop;
@@ -182,7 +180,7 @@ index 3baf195..18874d3 100644
182 int ret; 180 int ret;
183 181
184 if (unlikely(!pcr)) 182 if (unlikely(!pcr))
185@@ -1033,6 +1034,21 @@ cryptodev_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg_) 183@@ -1040,6 +1041,21 @@ cryptodev_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg_)
186 return ret; 184 return ret;
187 185
188 return compat_kcop_to_user(&kcop, fcr, arg); 186 return compat_kcop_to_user(&kcop, fcr, arg);
@@ -205,5 +203,5 @@ index 3baf195..18874d3 100644
205 case COMPAT_CIOCASYNCCRYPT: 203 case COMPAT_CIOCASYNCCRYPT:
206 if (unlikely(ret = compat_kcop_from_user(&kcop, fcr, arg))) 204 if (unlikely(ret = compat_kcop_from_user(&kcop, fcr, arg)))
207-- 205--
2081.7.9.7 2061.8.3.1
209 207
diff --git a/recipes-kernel/cryptodev/cryptodev-fsl/0002-use-function-local-storage-for-cipher-and-hmac-keys.patch b/recipes-kernel/cryptodev/cryptodev-fsl/0002-use-function-local-storage-for-cipher-and-hmac-keys.patch
deleted file mode 100644
index 4702fd4..0000000
--- a/recipes-kernel/cryptodev/cryptodev-fsl/0002-use-function-local-storage-for-cipher-and-hmac-keys.patch
+++ /dev/null
@@ -1,87 +0,0 @@
1From cc65307405a21c3b709ca6f2a6f64ff0c67c0eed Mon Sep 17 00:00:00 2001
2From: Cristian Stoica <cristian.stoica@freescale.com>
3Date: Wed, 18 Sep 2013 13:42:31 +0300
4Subject: [[Patch][fsl 02/16] use function-local storage for cipher and hmac
5 keys
6
7Upstream-status: Pending
8
9This refactorization is necessary for next patches that add support for
10aead composite ciphers where the aead key is the sum of cipher and hmac
11keys.
12
13Without this patch, the hmac and cipher keys can't be combined in the
14same ioctl.
15
16Signed-off-by: Cristian Stoica <cristian.stoica@freescale.com>
17Tested-by: Horia Ioan Geanta Neag <horia.geanta@freescale.com>
18---
19 ioctl.c | 14 ++++++--------
20 1 file changed, 6 insertions(+), 8 deletions(-)
21
22diff --git a/ioctl.c b/ioctl.c
23index a0f1db1..c614373 100644
24--- a/ioctl.c
25+++ b/ioctl.c
26@@ -109,6 +109,8 @@ crypto_create_session(struct fcrypt *fcr, struct session_op *sop)
27 const char *alg_name = NULL;
28 const char *hash_name = NULL;
29 int hmac_mode = 1, stream = 0, aead = 0;
30+ uint8_t enckey[CRYPTO_CIPHER_MAX_KEY_LEN];
31+ uint8_t mackey[CRYPTO_HMAC_MAX_KEY_LEN];
32
33 /* Does the request make sense? */
34 if (unlikely(!sop->cipher && !sop->mac)) {
35@@ -227,8 +229,6 @@ crypto_create_session(struct fcrypt *fcr, struct session_op *sop)
36
37 /* Set-up crypto transform. */
38 if (alg_name) {
39- uint8_t keyp[CRYPTO_CIPHER_MAX_KEY_LEN];
40-
41 if (unlikely(sop->keylen > CRYPTO_CIPHER_MAX_KEY_LEN)) {
42 ddebug(1, "Setting key failed for %s-%zu.",
43 alg_name, (size_t)sop->keylen*8);
44@@ -236,12 +236,12 @@ crypto_create_session(struct fcrypt *fcr, struct session_op *sop)
45 goto error_cipher;
46 }
47
48- if (unlikely(copy_from_user(keyp, sop->key, sop->keylen))) {
49+ if (unlikely(copy_from_user(enckey, sop->key, sop->keylen))) {
50 ret = -EFAULT;
51 goto error_cipher;
52 }
53
54- ret = cryptodev_cipher_init(&ses_new->cdata, alg_name, keyp,
55+ ret = cryptodev_cipher_init(&ses_new->cdata, alg_name, enckey,
56 sop->keylen, stream, aead);
57 if (ret < 0) {
58 ddebug(1, "Failed to load cipher for %s", alg_name);
59@@ -251,8 +251,6 @@ crypto_create_session(struct fcrypt *fcr, struct session_op *sop)
60 }
61
62 if (hash_name && aead == 0) {
63- uint8_t keyp[CRYPTO_HMAC_MAX_KEY_LEN];
64-
65 if (unlikely(sop->mackeylen > CRYPTO_HMAC_MAX_KEY_LEN)) {
66 ddebug(1, "Setting key failed for %s-%zu.",
67 hash_name, (size_t)sop->mackeylen*8);
68@@ -260,14 +258,14 @@ crypto_create_session(struct fcrypt *fcr, struct session_op *sop)
69 goto error_hash;
70 }
71
72- if (sop->mackey && unlikely(copy_from_user(keyp, sop->mackey,
73+ if (sop->mackey && unlikely(copy_from_user(mackey, sop->mackey,
74 sop->mackeylen))) {
75 ret = -EFAULT;
76 goto error_hash;
77 }
78
79 ret = cryptodev_hash_init(&ses_new->hdata, hash_name, hmac_mode,
80- keyp, sop->mackeylen);
81+ mackey, sop->mackeylen);
82 if (ret != 0) {
83 ddebug(1, "Failed to load hash for %s", hash_name);
84 ret = -EINVAL;
85--
861.7.9.7
87
diff --git a/recipes-kernel/cryptodev/cryptodev-fsl/0003-Add-support-for-aead-keys-for-composite-algorithms.patch b/recipes-kernel/cryptodev/cryptodev-fsl/0003-Add-support-for-aead-keys-for-composite-algorithms.patch
deleted file mode 100644
index 033552a..0000000
--- a/recipes-kernel/cryptodev/cryptodev-fsl/0003-Add-support-for-aead-keys-for-composite-algorithms.patch
+++ /dev/null
@@ -1,170 +0,0 @@
1From 8cabaedb69acc5b44c7a9cf058045908130a6af7 Mon Sep 17 00:00:00 2001
2From: Cristian Stoica <cristian.stoica@freescale.com>
3Date: Wed, 23 Oct 2013 16:57:22 +0300
4Subject: [[Patch][fsl 03/16] Add support for aead keys for composite
5 algorithms
6
7Upstream-status: Pending
8
9Composite aead algorithms (e.g. AES-CBC + HMAC-SHA1) need two keys to
10operate. The two keys are wrapped in a single buffer in the form
11used also by crypto/authenc.c
12Blockcipher and non-composite aead algorithms (e.g. AES-GCM) use a
13single key which is simply copied from user-space.
14
15Signed-off-by: Cristian Stoica <cristian.stoica@freescale.com>
16Tested-by: Horia Ioan Geanta Neag <horia.geanta@freescale.com>
17---
18 cryptlib.c | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
19 cryptlib.h | 3 +++
20 ioctl.c | 24 ++++++++++++++----------
21 3 files changed, 76 insertions(+), 10 deletions(-)
22
23diff --git a/cryptlib.c b/cryptlib.c
24index a7fbff4..2986d09 100644
25--- a/cryptlib.c
26+++ b/cryptlib.c
27@@ -34,6 +34,8 @@
28 #include <crypto/hash.h>
29 #include <crypto/cryptodev.h>
30 #include <crypto/aead.h>
31+#include <linux/rtnetlink.h>
32+#include <crypto/authenc.h>
33 #include "cryptodev_int.h"
34
35
36@@ -53,6 +55,63 @@ static void cryptodev_complete(struct crypto_async_request *req, int err)
37 complete(&res->completion);
38 }
39
40+int cryptodev_get_cipher_keylen(unsigned int *keylen, struct session_op *sop,
41+ int aead)
42+{
43+ unsigned int klen = sop->keylen;
44+
45+ if (unlikely(sop->keylen > CRYPTO_CIPHER_MAX_KEY_LEN))
46+ return -EINVAL;
47+
48+ if (aead && sop->mackeylen) {
49+ if (unlikely(sop->mackeylen > CRYPTO_HMAC_MAX_KEY_LEN))
50+ return -EINVAL;
51+ klen += sop->mackeylen;
52+ klen += RTA_SPACE(sizeof(struct crypto_authenc_key_param));
53+ }
54+
55+ *keylen = klen;
56+ return 0;
57+}
58+
59+int cryptodev_get_cipher_key(uint8_t *key, struct session_op *sop, int aead)
60+{
61+ /* Get algorithm key from user-space. For composite aead algorithms,
62+ * the key representation is in the format used by linux kernel in
63+ * crypto/authenc.c
64+ */
65+ struct crypto_authenc_key_param *param;
66+ struct rtattr *rta;
67+ int ret = 0;
68+
69+ if (aead && sop->mackeylen) {
70+ /* the key header type and header length */
71+ rta = (void *)key;
72+ rta->rta_type = CRYPTO_AUTHENC_KEYA_PARAM;
73+ rta->rta_len = RTA_LENGTH(sizeof(*param));
74+
75+ /* the key parameter is the length of the encryption key */
76+ param = RTA_DATA(rta);
77+ param->enckeylen = cpu_to_be32(sop->keylen);
78+
79+ /* copy the hash key */
80+ key += RTA_SPACE(sizeof(*param));
81+ if (unlikely(copy_from_user(key, sop->mackey, sop->mackeylen))) {
82+ ret = -EFAULT;
83+ goto error;
84+ }
85+ /* get the pointer ready for the encryption key */
86+ key += sop->mackeylen;
87+ }
88+ /* blockcipher algorithms have the key ready to use */
89+ if (unlikely(copy_from_user(key, sop->key, sop->keylen)))
90+ ret = -EFAULT;
91+
92+error:
93+ return ret;
94+}
95+
96+
97 int cryptodev_cipher_init(struct cipher_data *out, const char *alg_name,
98 uint8_t *keyp, size_t keylen, int stream, int aead)
99 {
100diff --git a/cryptlib.h b/cryptlib.h
101index 0744284..a0a8a63 100644
102--- a/cryptlib.h
103+++ b/cryptlib.h
104@@ -25,6 +25,9 @@ struct cipher_data {
105 int cryptodev_cipher_init(struct cipher_data *out, const char *alg_name,
106 uint8_t *key, size_t keylen, int stream, int aead);
107 void cryptodev_cipher_deinit(struct cipher_data *cdata);
108+int cryptodev_get_cipher_key(uint8_t *key, struct session_op *sop, int aead);
109+int cryptodev_get_cipher_keylen(unsigned int *keylen, struct session_op *sop,
110+ int aead);
111 ssize_t cryptodev_cipher_decrypt(struct cipher_data *cdata,
112 const struct scatterlist *sg1,
113 struct scatterlist *sg2, size_t len);
114diff --git a/ioctl.c b/ioctl.c
115index c614373..3baf195 100644
116--- a/ioctl.c
117+++ b/ioctl.c
118@@ -109,7 +109,8 @@ crypto_create_session(struct fcrypt *fcr, struct session_op *sop)
119 const char *alg_name = NULL;
120 const char *hash_name = NULL;
121 int hmac_mode = 1, stream = 0, aead = 0;
122- uint8_t enckey[CRYPTO_CIPHER_MAX_KEY_LEN];
123+ uint8_t *key = NULL;
124+ unsigned int keylen;
125 uint8_t mackey[CRYPTO_HMAC_MAX_KEY_LEN];
126
127 /* Does the request make sense? */
128@@ -229,20 +230,22 @@ crypto_create_session(struct fcrypt *fcr, struct session_op *sop)
129
130 /* Set-up crypto transform. */
131 if (alg_name) {
132- if (unlikely(sop->keylen > CRYPTO_CIPHER_MAX_KEY_LEN)) {
133- ddebug(1, "Setting key failed for %s-%zu.",
134- alg_name, (size_t)sop->keylen*8);
135- ret = -EINVAL;
136+ ret = cryptodev_get_cipher_keylen(&keylen, sop, aead);
137+ if (unlikely(ret < 0))
138 goto error_cipher;
139- }
140
141- if (unlikely(copy_from_user(enckey, sop->key, sop->keylen))) {
142- ret = -EFAULT;
143+ key = kmalloc(keylen, GFP_KERNEL);
144+ if (unlikely(!key)) {
145+ ret = -ENOMEM;
146 goto error_cipher;
147 }
148
149- ret = cryptodev_cipher_init(&ses_new->cdata, alg_name, enckey,
150- sop->keylen, stream, aead);
151+ ret = cryptodev_get_cipher_key(key, sop, aead);
152+ if (unlikely(ret < 0))
153+ goto error_cipher;
154+
155+ ret = cryptodev_cipher_init(&ses_new->cdata, alg_name, key, keylen,
156+ stream, aead);
157 if (ret < 0) {
158 ddebug(1, "Failed to load cipher for %s", alg_name);
159 ret = -EINVAL;
160@@ -318,6 +321,7 @@ error_hash:
161 kfree(ses_new->sg);
162 kfree(ses_new->pages);
163 error_cipher:
164+ kfree(key);
165 kfree(ses_new);
166
167 return ret;
168--
1691.7.9.7
170
diff --git a/recipes-kernel/cryptodev/cryptodev-fsl/0009-PKC-support-added-in-cryptodev-module.patch b/recipes-kernel/cryptodev/cryptodev-fsl/0003-PKC-support-added-in-cryptodev-module.patch
index b403731..a4f7816 100644
--- a/recipes-kernel/cryptodev/cryptodev-fsl/0009-PKC-support-added-in-cryptodev-module.patch
+++ b/recipes-kernel/cryptodev/cryptodev-fsl/0003-PKC-support-added-in-cryptodev-module.patch
@@ -1,22 +1,22 @@
1From 55be37e9e308990b2eeeef7f974dfbfbb1120266 Mon Sep 17 00:00:00 2001 1From 5b57fc2124cef0acc3c7e8de376ebd9aa4f1fdd3 Mon Sep 17 00:00:00 2001
2From: Yashpal Dutta <yashpal.dutta@freescale.com> 2From: Yashpal Dutta <yashpal.dutta@freescale.com>
3Date: Fri, 7 Mar 2014 06:16:09 +0545 3Date: Fri, 7 Mar 2014 06:16:09 +0545
4Subject: [[Patch][fsl 09/16] PKC support added in cryptodev module 4Subject: [PATCH 3/9] PKC support added in cryptodev module
5 5
6Upstream-status: Pending 6Upstream-status: Pending
7 7
8Signed-off-by: Yashpal Dutta <yashpal.dutta@freescale.com> 8Signed-off-by: Yashpal Dutta <yashpal.dutta@freescale.com>
9--- 9---
10 cryptlib.c | 66 ++++++++- 10 cryptlib.c | 66 +++++++++-
11 cryptlib.h | 28 ++++ 11 cryptlib.h | 28 ++++
12 crypto/cryptodev.h | 15 ++- 12 crypto/cryptodev.h | 15 ++-
13 cryptodev_int.h | 20 ++- 13 cryptodev_int.h | 20 ++-
14 ioctl.c | 196 +++++++++++++++++++++++++-- 14 ioctl.c | 196 +++++++++++++++++++++++++--
15 main.c | 378 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 15 main.c | 378 +++++++++++++++++++++++++++++++++++++++++++++++++++++
16 6 files changed, 685 insertions(+), 18 deletions(-) 16 6 files changed, 685 insertions(+), 18 deletions(-)
17 17
18diff --git a/cryptlib.c b/cryptlib.c 18diff --git a/cryptlib.c b/cryptlib.c
19index 3576f39..fa0b63f 100644 19index 44ce763..6900028 100644
20--- a/cryptlib.c 20--- a/cryptlib.c
21+++ b/cryptlib.c 21+++ b/cryptlib.c
22@@ -5,6 +5,8 @@ 22@@ -5,6 +5,8 @@
@@ -40,7 +40,7 @@ index 3576f39..fa0b63f 100644
40 static void cryptodev_complete(struct crypto_async_request *req, int err) 40 static void cryptodev_complete(struct crypto_async_request *req, int err)
41 { 41 {
42 struct cryptodev_result *res = req->data; 42 struct cryptodev_result *res = req->data;
43@@ -244,7 +241,6 @@ static inline int waitfor(struct cryptodev_result *cr, ssize_t ret) 43@@ -259,7 +256,6 @@ static inline int waitfor(struct cryptodev_result *cr, ssize_t ret)
44 case 0: 44 case 0:
45 break; 45 break;
46 case -EINPROGRESS: 46 case -EINPROGRESS:
@@ -48,7 +48,7 @@ index 3576f39..fa0b63f 100644
48 wait_for_completion(&cr->completion); 48 wait_for_completion(&cr->completion);
49 /* At this point we known for sure the request has finished, 49 /* At this point we known for sure the request has finished,
50 * because wait_for_completion above was not interruptible. 50 * because wait_for_completion above was not interruptible.
51@@ -424,3 +420,61 @@ int cryptodev_hash_final(struct hash_data *hdata, void *output) 51@@ -439,3 +435,61 @@ int cryptodev_hash_final(struct hash_data *hdata, void *output)
52 return waitfor(hdata->async.result, ret); 52 return waitfor(hdata->async.result, ret);
53 } 53 }
54 54
@@ -111,7 +111,7 @@ index 3576f39..fa0b63f 100644
111+ return ret; 111+ return ret;
112+} 112+}
113diff --git a/cryptlib.h b/cryptlib.h 113diff --git a/cryptlib.h b/cryptlib.h
114index 4cb66ad..e77edc5 100644 114index a0a8a63..56d325a 100644
115--- a/cryptlib.h 115--- a/cryptlib.h
116+++ b/cryptlib.h 116+++ b/cryptlib.h
117@@ -1,3 +1,6 @@ 117@@ -1,3 +1,6 @@
@@ -123,7 +123,7 @@ index 4cb66ad..e77edc5 100644
123 123
124@@ -89,5 +92,30 @@ void cryptodev_hash_deinit(struct hash_data *hdata); 124@@ -89,5 +92,30 @@ void cryptodev_hash_deinit(struct hash_data *hdata);
125 int cryptodev_hash_init(struct hash_data *hdata, const char *alg_name, 125 int cryptodev_hash_init(struct hash_data *hdata, const char *alg_name,
126 int hmac_mode, void *mackey, unsigned int mackeylen); 126 int hmac_mode, void *mackey, size_t mackeylen);
127 127
128+/* Operation Type */ 128+/* Operation Type */
129+enum offload_type { 129+enum offload_type {
@@ -153,7 +153,7 @@ index 4cb66ad..e77edc5 100644
153+int cryptodev_pkc_offload(struct cryptodev_pkc *); 153+int cryptodev_pkc_offload(struct cryptodev_pkc *);
154 #endif 154 #endif
155diff --git a/crypto/cryptodev.h b/crypto/cryptodev.h 155diff --git a/crypto/cryptodev.h b/crypto/cryptodev.h
156index 3ea3d35..575ce63 100644 156index c0e8cd4..96675fe 100644
157--- a/crypto/cryptodev.h 157--- a/crypto/cryptodev.h
158+++ b/crypto/cryptodev.h 158+++ b/crypto/cryptodev.h
159@@ -1,6 +1,10 @@ 159@@ -1,6 +1,10 @@
@@ -169,7 +169,7 @@ index 3ea3d35..575ce63 100644
169 169
170 #ifndef L_CRYPTODEV_H 170 #ifndef L_CRYPTODEV_H
171 #define L_CRYPTODEV_H 171 #define L_CRYPTODEV_H
172@@ -246,6 +250,9 @@ struct crypt_kop { 172@@ -245,6 +249,9 @@ struct crypt_kop {
173 __u16 crk_oparams; 173 __u16 crk_oparams;
174 __u32 crk_pad1; 174 __u32 crk_pad1;
175 struct crparam crk_param[CRK_MAXPARAM]; 175 struct crparam crk_param[CRK_MAXPARAM];
@@ -179,7 +179,7 @@ index 3ea3d35..575ce63 100644
179 }; 179 };
180 180
181 enum cryptodev_crk_op_t { 181 enum cryptodev_crk_op_t {
182@@ -290,5 +297,7 @@ enum cryptodev_crk_op_t { 182@@ -289,5 +296,7 @@ enum cryptodev_crk_op_t {
183 */ 183 */
184 #define CIOCASYNCCRYPT _IOW('c', 110, struct crypt_op) 184 #define CIOCASYNCCRYPT _IOW('c', 110, struct crypt_op)
185 #define CIOCASYNCFETCH _IOR('c', 111, struct crypt_op) 185 #define CIOCASYNCFETCH _IOR('c', 111, struct crypt_op)
@@ -189,7 +189,7 @@ index 3ea3d35..575ce63 100644
189+#define CIOCASYMASYNFETCH _IOR('c', 113, struct crypt_kop) 189+#define CIOCASYMASYNFETCH _IOR('c', 113, struct crypt_kop)
190 #endif /* L_CRYPTODEV_H */ 190 #endif /* L_CRYPTODEV_H */
191diff --git a/cryptodev_int.h b/cryptodev_int.h 191diff --git a/cryptodev_int.h b/cryptodev_int.h
192index 8891837..b08c253 100644 192index 8e687e7..fdbcc61 100644
193--- a/cryptodev_int.h 193--- a/cryptodev_int.h
194+++ b/cryptodev_int.h 194+++ b/cryptodev_int.h
195@@ -1,4 +1,6 @@ 195@@ -1,4 +1,6 @@
@@ -200,7 +200,7 @@ index 8891837..b08c253 100644
200 #ifndef CRYPTODEV_INT_H 200 #ifndef CRYPTODEV_INT_H
201 # define CRYPTODEV_INT_H 201 # define CRYPTODEV_INT_H
202 202
203@@ -113,6 +115,14 @@ struct compat_crypt_auth_op { 203@@ -112,6 +114,14 @@ struct compat_crypt_auth_op {
204 204
205 #endif /* CONFIG_COMPAT */ 205 #endif /* CONFIG_COMPAT */
206 206
@@ -215,7 +215,7 @@ index 8891837..b08c253 100644
215 /* kernel-internal extension to struct crypt_op */ 215 /* kernel-internal extension to struct crypt_op */
216 struct kernel_crypt_op { 216 struct kernel_crypt_op {
217 struct crypt_op cop; 217 struct crypt_op cop;
218@@ -158,6 +168,14 @@ int crypto_run(struct fcrypt *fcr, struct kernel_crypt_op *kcop); 218@@ -157,6 +167,14 @@ int crypto_run(struct fcrypt *fcr, struct kernel_crypt_op *kcop);
219 219
220 #include <cryptlib.h> 220 #include <cryptlib.h>
221 221
@@ -231,7 +231,7 @@ index 8891837..b08c253 100644
231 struct csession { 231 struct csession {
232 struct list_head entry; 232 struct list_head entry;
233diff --git a/ioctl.c b/ioctl.c 233diff --git a/ioctl.c b/ioctl.c
234index 63467e0..44070e1 100644 234index 1563c75..782d7fe 100644
235--- a/ioctl.c 235--- a/ioctl.c
236+++ b/ioctl.c 236+++ b/ioctl.c
237@@ -4,6 +4,7 @@ 237@@ -4,6 +4,7 @@
@@ -242,7 +242,7 @@ index 63467e0..44070e1 100644
242 * 242 *
243 * This file is part of linux cryptodev. 243 * This file is part of linux cryptodev.
244 * 244 *
245@@ -87,8 +88,37 @@ struct crypt_priv { 245@@ -89,8 +90,37 @@ struct crypt_priv {
246 int itemcount; 246 int itemcount;
247 struct work_struct cryptask; 247 struct work_struct cryptask;
248 wait_queue_head_t user_waiter; 248 wait_queue_head_t user_waiter;
@@ -280,7 +280,7 @@ index 63467e0..44070e1 100644
280 #define FILL_SG(sg, ptr, len) \ 280 #define FILL_SG(sg, ptr, len) \
281 do { \ 281 do { \
282 (sg)->page = virt_to_page(ptr); \ 282 (sg)->page = virt_to_page(ptr); \
283@@ -467,7 +497,8 @@ cryptodev_open(struct inode *inode, struct file *filp) 283@@ -472,7 +502,8 @@ cryptodev_open(struct inode *inode, struct file *filp)
284 INIT_LIST_HEAD(&pcr->free.list); 284 INIT_LIST_HEAD(&pcr->free.list);
285 INIT_LIST_HEAD(&pcr->todo.list); 285 INIT_LIST_HEAD(&pcr->todo.list);
286 INIT_LIST_HEAD(&pcr->done.list); 286 INIT_LIST_HEAD(&pcr->done.list);
@@ -290,7 +290,7 @@ index 63467e0..44070e1 100644
290 INIT_WORK(&pcr->cryptask, cryptask_routine); 290 INIT_WORK(&pcr->cryptask, cryptask_routine);
291 291
292 init_waitqueue_head(&pcr->user_waiter); 292 init_waitqueue_head(&pcr->user_waiter);
293@@ -634,6 +665,79 @@ static int crypto_async_fetch(struct crypt_priv *pcr, 293@@ -639,6 +670,79 @@ static int crypto_async_fetch(struct crypt_priv *pcr,
294 } 294 }
295 #endif 295 #endif
296 296
@@ -370,7 +370,7 @@ index 63467e0..44070e1 100644
370 /* this function has to be called from process context */ 370 /* this function has to be called from process context */
371 static int fill_kcop_from_cop(struct kernel_crypt_op *kcop, struct fcrypt *fcr) 371 static int fill_kcop_from_cop(struct kernel_crypt_op *kcop, struct fcrypt *fcr)
372 { 372 {
373@@ -657,11 +761,8 @@ static int fill_kcop_from_cop(struct kernel_crypt_op *kcop, struct fcrypt *fcr) 373@@ -662,11 +766,8 @@ static int fill_kcop_from_cop(struct kernel_crypt_op *kcop, struct fcrypt *fcr)
374 374
375 if (cop->iv) { 375 if (cop->iv) {
376 rc = copy_from_user(kcop->iv, cop->iv, kcop->ivlen); 376 rc = copy_from_user(kcop->iv, cop->iv, kcop->ivlen);
@@ -383,7 +383,7 @@ index 63467e0..44070e1 100644
383 } 383 }
384 384
385 return 0; 385 return 0;
386@@ -687,6 +788,25 @@ static int fill_cop_from_kcop(struct kernel_crypt_op *kcop, struct fcrypt *fcr) 386@@ -692,6 +793,25 @@ static int fill_cop_from_kcop(struct kernel_crypt_op *kcop, struct fcrypt *fcr)
387 return 0; 387 return 0;
388 } 388 }
389 389
@@ -409,7 +409,7 @@ index 63467e0..44070e1 100644
409 static int kcop_from_user(struct kernel_crypt_op *kcop, 409 static int kcop_from_user(struct kernel_crypt_op *kcop,
410 struct fcrypt *fcr, void __user *arg) 410 struct fcrypt *fcr, void __user *arg)
411 { 411 {
412@@ -816,7 +936,8 @@ cryptodev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg_) 412@@ -821,7 +941,8 @@ cryptodev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg_)
413 413
414 switch (cmd) { 414 switch (cmd) {
415 case CIOCASYMFEAT: 415 case CIOCASYMFEAT:
@@ -419,7 +419,7 @@ index 63467e0..44070e1 100644
419 case CRIOGET: 419 case CRIOGET:
420 fd = clonefd(filp); 420 fd = clonefd(filp);
421 ret = put_user(fd, p); 421 ret = put_user(fd, p);
422@@ -852,6 +973,24 @@ cryptodev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg_) 422@@ -857,6 +978,24 @@ cryptodev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg_)
423 if (unlikely(ret)) 423 if (unlikely(ret))
424 return ret; 424 return ret;
425 return copy_to_user(arg, &siop, sizeof(siop)); 425 return copy_to_user(arg, &siop, sizeof(siop));
@@ -444,7 +444,7 @@ index 63467e0..44070e1 100644
444 case CIOCCRYPT: 444 case CIOCCRYPT:
445 if (unlikely(ret = kcop_from_user(&kcop, fcr, arg))) { 445 if (unlikely(ret = kcop_from_user(&kcop, fcr, arg))) {
446 dwarning(1, "Error copying from user"); 446 dwarning(1, "Error copying from user");
447@@ -890,6 +1029,45 @@ cryptodev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg_) 447@@ -895,6 +1034,45 @@ cryptodev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg_)
448 448
449 return kcop_to_user(&kcop, fcr, arg); 449 return kcop_to_user(&kcop, fcr, arg);
450 #endif 450 #endif
@@ -490,7 +490,7 @@ index 63467e0..44070e1 100644
490 default: 490 default:
491 return -EINVAL; 491 return -EINVAL;
492 } 492 }
493@@ -1078,9 +1256,11 @@ static unsigned int cryptodev_poll(struct file *file, poll_table *wait) 493@@ -1083,9 +1261,11 @@ static unsigned int cryptodev_poll(struct file *file, poll_table *wait)
494 494
495 poll_wait(file, &pcr->user_waiter, wait); 495 poll_wait(file, &pcr->user_waiter, wait);
496 496
@@ -894,5 +894,5 @@ index 57e5c38..0b7951e 100644
894 { 894 {
895 struct csession *ses_ptr; 895 struct csession *ses_ptr;
896-- 896--
8971.7.9.7 8971.8.3.1
898 898
diff --git a/recipes-kernel/cryptodev/cryptodev-fsl/0010-Compat-versions-of-PKC-IOCTLs.patch b/recipes-kernel/cryptodev/cryptodev-fsl/0004-Compat-versions-of-PKC-IOCTLs.patch
index 0320462..2eedcc7 100644
--- a/recipes-kernel/cryptodev/cryptodev-fsl/0010-Compat-versions-of-PKC-IOCTLs.patch
+++ b/recipes-kernel/cryptodev/cryptodev-fsl/0004-Compat-versions-of-PKC-IOCTLs.patch
@@ -1,18 +1,18 @@
1From f6550035fe2c0e66798ace17d31d1d880beacc14 Mon Sep 17 00:00:00 2001 1From 5435dfd329cd90837ce36c6dadc26166c7906cab Mon Sep 17 00:00:00 2001
2From: Yashpal Dutta <yashpal.dutta@freescale.com> 2From: Yashpal Dutta <yashpal.dutta@freescale.com>
3Date: Fri, 7 Mar 2014 06:52:13 +0545 3Date: Fri, 7 Mar 2014 06:52:13 +0545
4Subject: [[Patch][fsl 10/16] Compat versions of PKC IOCTLs 4Subject: [PATCH 4/9] Compat versions of PKC IOCTLs
5 5
6Upstream-status: Pending 6Upstream-status: Pending
7 7
8Signed-off-by: Yashpal Dutta <yashpal.dutta@freescale.com> 8Signed-off-by: Yashpal Dutta <yashpal.dutta@freescale.com>
9--- 9---
10 cryptodev_int.h | 20 ++++++++++ 10 cryptodev_int.h | 20 ++++++++++
11 ioctl.c | 120 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 11 ioctl.c | 120 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
12 2 files changed, 140 insertions(+) 12 2 files changed, 140 insertions(+)
13 13
14diff --git a/cryptodev_int.h b/cryptodev_int.h 14diff --git a/cryptodev_int.h b/cryptodev_int.h
15index b08c253..229fcd0 100644 15index fdbcc61..cf54dac 100644
16--- a/cryptodev_int.h 16--- a/cryptodev_int.h
17+++ b/cryptodev_int.h 17+++ b/cryptodev_int.h
18@@ -75,6 +75,24 @@ struct compat_crypt_op { 18@@ -75,6 +75,24 @@ struct compat_crypt_op {
@@ -40,7 +40,7 @@ index b08c253..229fcd0 100644
40 /* input of CIOCAUTHCRYPT */ 40 /* input of CIOCAUTHCRYPT */
41 struct compat_crypt_auth_op { 41 struct compat_crypt_auth_op {
42 uint32_t ses; /* session identifier */ 42 uint32_t ses; /* session identifier */
43@@ -112,6 +130,8 @@ struct compat_crypt_auth_op { 43@@ -111,6 +129,8 @@ struct compat_crypt_auth_op {
44 #define COMPAT_CIOCASYNCCRYPT _IOW('c', 107, struct compat_crypt_op) 44 #define COMPAT_CIOCASYNCCRYPT _IOW('c', 107, struct compat_crypt_op)
45 #define COMPAT_CIOCASYNCFETCH _IOR('c', 108, struct compat_crypt_op) 45 #define COMPAT_CIOCASYNCFETCH _IOR('c', 108, struct compat_crypt_op)
46 #define COMPAT_CIOCAUTHCRYPT _IOWR('c', 109, struct compat_crypt_auth_op) 46 #define COMPAT_CIOCAUTHCRYPT _IOWR('c', 109, struct compat_crypt_auth_op)
@@ -50,10 +50,10 @@ index b08c253..229fcd0 100644
50 #endif /* CONFIG_COMPAT */ 50 #endif /* CONFIG_COMPAT */
51 51
52diff --git a/ioctl.c b/ioctl.c 52diff --git a/ioctl.c b/ioctl.c
53index 44070e1..ec82c69 100644 53index 782d7fe..3baf3e6 100644
54--- a/ioctl.c 54--- a/ioctl.c
55+++ b/ioctl.c 55+++ b/ioctl.c
56@@ -1076,6 +1076,68 @@ cryptodev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg_) 56@@ -1081,6 +1081,68 @@ cryptodev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg_)
57 /* compatibility code for 32bit userlands */ 57 /* compatibility code for 32bit userlands */
58 #ifdef CONFIG_COMPAT 58 #ifdef CONFIG_COMPAT
59 59
@@ -122,7 +122,7 @@ index 44070e1..ec82c69 100644
122 static inline void 122 static inline void
123 compat_to_session_op(struct compat_session_op *compat, struct session_op *sop) 123 compat_to_session_op(struct compat_session_op *compat, struct session_op *sop)
124 { 124 {
125@@ -1203,7 +1265,26 @@ cryptodev_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg_) 125@@ -1208,7 +1270,26 @@ cryptodev_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg_)
126 return -EFAULT; 126 return -EFAULT;
127 } 127 }
128 return ret; 128 return ret;
@@ -149,7 +149,7 @@ index 44070e1..ec82c69 100644
149 case COMPAT_CIOCCRYPT: 149 case COMPAT_CIOCCRYPT:
150 ret = compat_kcop_from_user(&kcop, fcr, arg); 150 ret = compat_kcop_from_user(&kcop, fcr, arg);
151 if (unlikely(ret)) 151 if (unlikely(ret))
152@@ -1242,6 +1323,45 @@ cryptodev_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg_) 152@@ -1247,6 +1328,45 @@ cryptodev_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg_)
153 153
154 return compat_kcop_to_user(&kcop, fcr, arg); 154 return compat_kcop_to_user(&kcop, fcr, arg);
155 #endif 155 #endif
@@ -196,5 +196,5 @@ index 44070e1..ec82c69 100644
196 return -EINVAL; 196 return -EINVAL;
197 } 197 }
198-- 198--
1991.7.9.7 1991.8.3.1
200 200
diff --git a/recipes-kernel/cryptodev/cryptodev-fsl/0004-fix-scatterlist-size-for-in-place-operations.patch b/recipes-kernel/cryptodev/cryptodev-fsl/0004-fix-scatterlist-size-for-in-place-operations.patch
deleted file mode 100644
index c808606..0000000
--- a/recipes-kernel/cryptodev/cryptodev-fsl/0004-fix-scatterlist-size-for-in-place-operations.patch
+++ /dev/null
@@ -1,39 +0,0 @@
1From 5a6cd042d3cee9e3bbf3b0125a89e64d75dffdc7 Mon Sep 17 00:00:00 2001
2From: Cristian Stoica <cristian.stoica@freescale.com>
3Date: Thu, 31 Oct 2013 13:13:51 +0200
4Subject: [[Patch][fsl 04/16] fix scatterlist size for in-place operations
5
6Upstream-status: Pending
7
8For in-place operations, the scatterlist must be big enough to allow for
9either the source or destination data:
10 - for block ciphers, the destination will be bigger than the source if
11 the source is not multiple of blocksize
12 - for aead ciphers, the additional data and padding guarantees the
13 destination to be bigger than the source.
14
15Signed-off-by: Cristian Stoica <cristian.stoica@freescale.com>
16Tested-by: Horia Ioan Geanta Neag <horia.geanta@freescale.com>
17---
18 zc.c | 5 +++--
19 1 file changed, 3 insertions(+), 2 deletions(-)
20
21diff --git a/zc.c b/zc.c
22index 809a36d..8855083 100644
23--- a/zc.c
24+++ b/zc.c
25@@ -162,8 +162,9 @@ int get_userbuf(struct csession *ses,
26 }
27
28 if (src == dst) { /* inplace operation */
29- rc = __get_userbuf(src, src_len, 1, ses->used_pages,
30- ses->pages, ses->sg, task, mm);
31+ rc = __get_userbuf(src, max(src_len, dst_len), 1, ses->used_pages,
32+ ses->pages, ses->sg, task, mm);
33+
34 if (unlikely(rc)) {
35 derr(1, "failed to get user pages for data IO");
36 return rc;
37--
381.7.9.7
39
diff --git a/recipes-kernel/cryptodev/cryptodev-fsl/0011-Asynchronous-interface-changes-in-cryptodev.patch b/recipes-kernel/cryptodev/cryptodev-fsl/0005-Asynchronous-interface-changes-in-cryptodev.patch
index 5331abc..2f88eda 100644
--- a/recipes-kernel/cryptodev/cryptodev-fsl/0011-Asynchronous-interface-changes-in-cryptodev.patch
+++ b/recipes-kernel/cryptodev/cryptodev-fsl/0005-Asynchronous-interface-changes-in-cryptodev.patch
@@ -1,20 +1,20 @@
1From ffa8fd090afaf3631e6abd0ab8daa6780be7c31c Mon Sep 17 00:00:00 2001 1From ddc4179a454cea79c8385fd6756d20cbf3c6dcb5 Mon Sep 17 00:00:00 2001
2From: Yashpal Dutta <yashpal.dutta@freescale.com> 2From: Yashpal Dutta <yashpal.dutta@freescale.com>
3Date: Fri, 7 Mar 2014 07:24:00 +0545 3Date: Fri, 7 Mar 2014 07:24:00 +0545
4Subject: [[Patch][fsl 11/16] Asynchronous interface changes in cryptodev 4Subject: [PATCH 5/9] Asynchronous interface changes in cryptodev
5 5
6Upstream-status: Pending 6Upstream-status: Pending
7 7
8Signed-off-by: Yashpal Dutta <yashpal.dutta@freescale.com> 8Signed-off-by: Yashpal Dutta <yashpal.dutta@freescale.com>
9--- 9---
10 cryptlib.h | 7 ++++- 10 cryptlib.h | 7 ++++-
11 crypto/cryptodev.h | 10 ++++++- 11 crypto/cryptodev.h | 10 ++++++-
12 cryptodev_int.h | 10 ++++++- 12 cryptodev_int.h | 10 ++++++-
13 ioctl.c | 76 +++++++++++++++++++++++++++++++++++----------------- 13 ioctl.c | 76 +++++++++++++++++++++++++++++++++++++-----------------
14 4 files changed, 76 insertions(+), 27 deletions(-) 14 4 files changed, 76 insertions(+), 27 deletions(-)
15 15
16diff --git a/cryptlib.h b/cryptlib.h 16diff --git a/cryptlib.h b/cryptlib.h
17index e77edc5..947d845 100644 17index 56d325a..7ffa54c 100644
18--- a/cryptlib.h 18--- a/cryptlib.h
19+++ b/cryptlib.h 19+++ b/cryptlib.h
20@@ -113,7 +113,12 @@ struct cryptodev_pkc { 20@@ -113,7 +113,12 @@ struct cryptodev_pkc {
@@ -32,10 +32,10 @@ index e77edc5..947d845 100644
32 }; 32 };
33 33
34diff --git a/crypto/cryptodev.h b/crypto/cryptodev.h 34diff --git a/crypto/cryptodev.h b/crypto/cryptodev.h
35index 575ce63..0d65899 100644 35index 96675fe..4436fbf 100644
36--- a/crypto/cryptodev.h 36--- a/crypto/cryptodev.h
37+++ b/crypto/cryptodev.h 37+++ b/crypto/cryptodev.h
38@@ -255,6 +255,14 @@ struct crypt_kop { 38@@ -254,6 +254,14 @@ struct crypt_kop {
39 void *cookie; 39 void *cookie;
40 }; 40 };
41 41
@@ -50,7 +50,7 @@ index 575ce63..0d65899 100644
50 enum cryptodev_crk_op_t { 50 enum cryptodev_crk_op_t {
51 CRK_MOD_EXP = 0, 51 CRK_MOD_EXP = 0,
52 CRK_MOD_EXP_CRT = 1, 52 CRK_MOD_EXP_CRT = 1,
53@@ -299,5 +307,5 @@ enum cryptodev_crk_op_t { 53@@ -298,5 +306,5 @@ enum cryptodev_crk_op_t {
54 #define CIOCASYNCFETCH _IOR('c', 111, struct crypt_op) 54 #define CIOCASYNCFETCH _IOR('c', 111, struct crypt_op)
55 /* additional ioctls for asynchronous operation for asymmetric ciphers*/ 55 /* additional ioctls for asynchronous operation for asymmetric ciphers*/
56 #define CIOCASYMASYNCRYPT _IOW('c', 112, struct crypt_kop) 56 #define CIOCASYMASYNCRYPT _IOW('c', 112, struct crypt_kop)
@@ -58,7 +58,7 @@ index 575ce63..0d65899 100644
58+#define CIOCASYMFETCHCOOKIE _IOR('c', 113, struct pkc_cookie_list_s) 58+#define CIOCASYMFETCHCOOKIE _IOR('c', 113, struct pkc_cookie_list_s)
59 #endif /* L_CRYPTODEV_H */ 59 #endif /* L_CRYPTODEV_H */
60diff --git a/cryptodev_int.h b/cryptodev_int.h 60diff --git a/cryptodev_int.h b/cryptodev_int.h
61index 229fcd0..8beeef0 100644 61index cf54dac..5347cae 100644
62--- a/cryptodev_int.h 62--- a/cryptodev_int.h
63+++ b/cryptodev_int.h 63+++ b/cryptodev_int.h
64@@ -93,6 +93,12 @@ struct compat_crypt_kop { 64@@ -93,6 +93,12 @@ struct compat_crypt_kop {
@@ -74,7 +74,7 @@ index 229fcd0..8beeef0 100644
74 /* input of CIOCAUTHCRYPT */ 74 /* input of CIOCAUTHCRYPT */
75 struct compat_crypt_auth_op { 75 struct compat_crypt_auth_op {
76 uint32_t ses; /* session identifier */ 76 uint32_t ses; /* session identifier */
77@@ -127,11 +133,13 @@ struct compat_crypt_auth_op { 77@@ -126,11 +132,13 @@ struct compat_crypt_auth_op {
78 /* compat ioctls, defined for the above structs */ 78 /* compat ioctls, defined for the above structs */
79 #define COMPAT_CIOCGSESSION _IOWR('c', 102, struct compat_session_op) 79 #define COMPAT_CIOCGSESSION _IOWR('c', 102, struct compat_session_op)
80 #define COMPAT_CIOCCRYPT _IOWR('c', 104, struct compat_crypt_op) 80 #define COMPAT_CIOCCRYPT _IOWR('c', 104, struct compat_crypt_op)
@@ -90,10 +90,10 @@ index 229fcd0..8beeef0 100644
90 #endif /* CONFIG_COMPAT */ 90 #endif /* CONFIG_COMPAT */
91 91
92diff --git a/ioctl.c b/ioctl.c 92diff --git a/ioctl.c b/ioctl.c
93index ec82c69..9f57d46 100644 93index 3baf3e6..2eb7f03 100644
94--- a/ioctl.c 94--- a/ioctl.c
95+++ b/ioctl.c 95+++ b/ioctl.c
96@@ -103,8 +103,6 @@ void cryptodev_complete_asym(struct crypto_async_request *req, int err) 96@@ -105,8 +105,6 @@ void cryptodev_complete_asym(struct crypto_async_request *req, int err)
97 crypto_free_pkc(pkc->s); 97 crypto_free_pkc(pkc->s);
98 res->err = err; 98 res->err = err;
99 if (pkc->type == SYNCHRONOUS) { 99 if (pkc->type == SYNCHRONOUS) {
@@ -102,7 +102,7 @@ index ec82c69..9f57d46 100644
102 complete(&res->completion); 102 complete(&res->completion);
103 } else { 103 } else {
104 struct crypt_priv *pcr = pkc->priv; 104 struct crypt_priv *pcr = pkc->priv;
105@@ -1046,26 +1044,41 @@ cryptodev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg_) 105@@ -1051,26 +1049,41 @@ cryptodev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg_)
106 ret = 0; 106 ret = 0;
107 } 107 }
108 return ret; 108 return ret;
@@ -155,7 +155,7 @@ index ec82c69..9f57d46 100644
155 } 155 }
156 return ret; 156 return ret;
157 default: 157 default:
158@@ -1340,26 +1353,41 @@ cryptodev_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg_) 158@@ -1345,26 +1358,41 @@ cryptodev_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg_)
159 ret = 0; 159 ret = 0;
160 } 160 }
161 return ret; 161 return ret;
@@ -209,5 +209,5 @@ index ec82c69..9f57d46 100644
209 return ret; 209 return ret;
210 default: 210 default:
211-- 211--
2121.7.9.7 2121.8.3.1
213 213
diff --git a/recipes-kernel/cryptodev/cryptodev-fsl/0005-add-dst_len-parameter-to-be-provided-by-the-user.patch b/recipes-kernel/cryptodev/cryptodev-fsl/0005-add-dst_len-parameter-to-be-provided-by-the-user.patch
deleted file mode 100644
index 480d2a9..0000000
--- a/recipes-kernel/cryptodev/cryptodev-fsl/0005-add-dst_len-parameter-to-be-provided-by-the-user.patch
+++ /dev/null
@@ -1,70 +0,0 @@
1From e673e6ec09770b624d524bcd82f911e4fe2e2075 Mon Sep 17 00:00:00 2001
2From: Cristian Stoica <cristian.stoica@freescale.com>
3Date: Thu, 31 Oct 2013 13:27:28 +0200
4Subject: [[Patch][fsl 05/16] add dst_len parameter to be provided by the user
5
6Upstream-status: Pending
7
8This allows the user to set the result length and relieves cryptodev
9from making assumptions about it.
10
11Signed-off-by: Cristian Stoica <cristian.stoica@freescale.com>
12Tested-by: Horia Ioan Geanta Neag <horia.geanta@freescale.com>
13---
14 authenc.c | 13 +++----------
15 crypto/cryptodev.h | 1 +
16 2 files changed, 4 insertions(+), 10 deletions(-)
17
18diff --git a/authenc.c b/authenc.c
19index a183820..5235973 100644
20--- a/authenc.c
21+++ b/authenc.c
22@@ -199,7 +199,7 @@ static int fill_kcaop_from_caop(struct kernel_crypt_auth_op *kcaop, struct fcryp
23 kcaop->ivlen = caop->iv ? ses_ptr->cdata.ivsize : 0;
24
25 if (caop->flags & COP_FLAG_AEAD_TLS_TYPE)
26- kcaop->dst_len = caop->len + ses_ptr->cdata.blocksize /* pad */ + caop->tag_len;
27+ kcaop->dst_len = caop->dst_len;
28 else
29 kcaop->dst_len = caop->len;
30
31@@ -645,8 +645,6 @@ __crypto_auth_run_zc(struct csession *ses_ptr, struct kernel_crypt_auth_op *kcao
32 ret = tls_auth_n_crypt(ses_ptr, kcaop, auth_sg, caop->auth_len,
33 dst_sg, caop->len);
34 } else {
35- int dst_len;
36-
37 if (unlikely(ses_ptr->cdata.init == 0 ||
38 (ses_ptr->cdata.stream == 0 &&
39 ses_ptr->cdata.aead == 0))) {
40@@ -655,13 +653,8 @@ __crypto_auth_run_zc(struct csession *ses_ptr, struct kernel_crypt_auth_op *kcao
41 goto free_auth_buf;
42 }
43
44- if (caop->op == COP_ENCRYPT)
45- dst_len = caop->len + cryptodev_cipher_get_tag_size(&ses_ptr->cdata);
46- else
47- dst_len = caop->len;
48-
49- ret = get_userbuf(ses_ptr, caop->src, caop->len, caop->dst, dst_len,
50- kcaop->task, kcaop->mm, &src_sg, &dst_sg);
51+ ret = get_userbuf(ses_ptr, caop->src, caop->len, caop->dst,
52+ caop->dst_len, kcaop->task, kcaop->mm, &src_sg, &dst_sg);
53 if (unlikely(ret)) {
54 derr(1, "get_userbuf(): Error getting user pages.");
55 goto free_auth_buf;
56diff --git a/crypto/cryptodev.h b/crypto/cryptodev.h
57index c0e8cd4..3ea3d35 100644
58--- a/crypto/cryptodev.h
59+++ b/crypto/cryptodev.h
60@@ -137,6 +137,7 @@ struct crypt_auth_op {
61 __u16 op; /* COP_ENCRYPT or COP_DECRYPT */
62 __u16 flags; /* see COP_FLAG_AEAD_* */
63 __u32 len; /* length of source data */
64+ __u32 dst_len; /* length of result data */
65 __u32 auth_len; /* length of auth data */
66 __u8 __user *auth_src; /* authenticated-only data */
67
68--
691.7.9.7
70
diff --git a/recipes-kernel/cryptodev/cryptodev-fsl/0012-ECC_KEYGEN-and-DLC_KEYGEN-supported-in-cryptodev-mod.patch b/recipes-kernel/cryptodev/cryptodev-fsl/0006-ECC_KEYGEN-and-DLC_KEYGEN-supported-in-cryptodev-mod.patch
index acb5bea..e70a057 100644
--- a/recipes-kernel/cryptodev/cryptodev-fsl/0012-ECC_KEYGEN-and-DLC_KEYGEN-supported-in-cryptodev-mod.patch
+++ b/recipes-kernel/cryptodev/cryptodev-fsl/0006-ECC_KEYGEN-and-DLC_KEYGEN-supported-in-cryptodev-mod.patch
@@ -1,24 +1,23 @@
1From bda8dd5839da7a8e731b60b64b9fcb531c334b99 Mon Sep 17 00:00:00 2001 1From 30fc86a09109f169815befc2cd8bbfcae79fe7e0 Mon Sep 17 00:00:00 2001
2From: Yashpal Dutta <yashpal.dutta@freescale.com> 2From: Yashpal Dutta <yashpal.dutta@freescale.com>
3Date: Fri, 7 Mar 2014 07:53:53 +0545 3Date: Fri, 7 Mar 2014 07:53:53 +0545
4Subject: [[Patch][fsl 12/16] ECC_KEYGEN and DLC_KEYGEN supported in cryptodev 4Subject: [PATCH 6/9] ECC_KEYGEN and DLC_KEYGEN supported in cryptodev module
5 module
6 5
7Upstream-status: Pending 6Upstream-status: Pending
8 7
9Signed-off-by: Yashpal Dutta <yashpal.dutta@freescale.com> 8Signed-off-by: Yashpal Dutta <yashpal.dutta@freescale.com>
10--- 9---
11 cryptlib.c | 2 ++ 10 cryptlib.c | 2 ++
12 crypto/cryptodev.h | 5 +++- 11 crypto/cryptodev.h | 5 +++-
13 ioctl.c | 29 ++++++++++++++++-- 12 ioctl.c | 29 +++++++++++++++++--
14 main.c | 85 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 13 main.c | 85 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
15 4 files changed, 118 insertions(+), 3 deletions(-) 14 4 files changed, 118 insertions(+), 3 deletions(-)
16 15
17diff --git a/cryptlib.c b/cryptlib.c 16diff --git a/cryptlib.c b/cryptlib.c
18index fa0b63f..41acb2c 100644 17index 6900028..47cd568 100644
19--- a/cryptlib.c 18--- a/cryptlib.c
20+++ b/cryptlib.c 19+++ b/cryptlib.c
21@@ -437,6 +437,8 @@ int cryptodev_pkc_offload(struct cryptodev_pkc *pkc) 20@@ -452,6 +452,8 @@ int cryptodev_pkc_offload(struct cryptodev_pkc *pkc)
22 case DSA_VERIFY: 21 case DSA_VERIFY:
23 case ECDSA_SIGN: 22 case ECDSA_SIGN:
24 case ECDSA_VERIFY: 23 case ECDSA_VERIFY:
@@ -28,10 +27,10 @@ index fa0b63f..41acb2c 100644
28 CRYPTO_ALG_TYPE_PKC_DSA, 0); 27 CRYPTO_ALG_TYPE_PKC_DSA, 0);
29 break; 28 break;
30diff --git a/crypto/cryptodev.h b/crypto/cryptodev.h 29diff --git a/crypto/cryptodev.h b/crypto/cryptodev.h
31index 0d65899..33cca2e 100644 30index 4436fbf..275a55c 100644
32--- a/crypto/cryptodev.h 31--- a/crypto/cryptodev.h
33+++ b/crypto/cryptodev.h 32+++ b/crypto/cryptodev.h
34@@ -269,6 +269,8 @@ enum cryptodev_crk_op_t { 33@@ -268,6 +268,8 @@ enum cryptodev_crk_op_t {
35 CRK_DSA_SIGN = 2, 34 CRK_DSA_SIGN = 2,
36 CRK_DSA_VERIFY = 3, 35 CRK_DSA_VERIFY = 3,
37 CRK_DH_COMPUTE_KEY = 4, 36 CRK_DH_COMPUTE_KEY = 4,
@@ -40,7 +39,7 @@ index 0d65899..33cca2e 100644
40 CRK_ALGORITHM_ALL 39 CRK_ALGORITHM_ALL
41 }; 40 };
42 41
43@@ -281,7 +283,8 @@ enum cryptodev_crk_op_t { 42@@ -280,7 +282,8 @@ enum cryptodev_crk_op_t {
44 #define CRF_DSA_SIGN (1 << CRK_DSA_SIGN) 43 #define CRF_DSA_SIGN (1 << CRK_DSA_SIGN)
45 #define CRF_DSA_VERIFY (1 << CRK_DSA_VERIFY) 44 #define CRF_DSA_VERIFY (1 << CRK_DSA_VERIFY)
46 #define CRF_DH_COMPUTE_KEY (1 << CRK_DH_COMPUTE_KEY) 45 #define CRF_DH_COMPUTE_KEY (1 << CRK_DH_COMPUTE_KEY)
@@ -51,10 +50,10 @@ index 0d65899..33cca2e 100644
51 /* ioctl's. Compatible with old linux cryptodev.h 50 /* ioctl's. Compatible with old linux cryptodev.h
52 */ 51 */
53diff --git a/ioctl.c b/ioctl.c 52diff --git a/ioctl.c b/ioctl.c
54index 9f57d46..cc1a2a9 100644 53index 2eb7f03..c813c8c 100644
55--- a/ioctl.c 54--- a/ioctl.c
56+++ b/ioctl.c 55+++ b/ioctl.c
57@@ -721,6 +721,23 @@ static int crypto_async_fetch_asym(struct cryptodev_pkc *pkc) 56@@ -726,6 +726,23 @@ static int crypto_async_fetch_asym(struct cryptodev_pkc *pkc)
58 dh_req->z, dh_req->z_len); 57 dh_req->z, dh_req->z_len);
59 } 58 }
60 break; 59 break;
@@ -78,7 +77,7 @@ index 9f57d46..cc1a2a9 100644
78 default: 77 default:
79 ret = -EINVAL; 78 ret = -EINVAL;
80 } 79 }
81@@ -934,8 +951,9 @@ cryptodev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg_) 80@@ -939,8 +956,9 @@ cryptodev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg_)
82 81
83 switch (cmd) { 82 switch (cmd) {
84 case CIOCASYMFEAT: 83 case CIOCASYMFEAT:
@@ -90,7 +89,7 @@ index 9f57d46..cc1a2a9 100644
90 case CRIOGET: 89 case CRIOGET:
91 fd = clonefd(filp); 90 fd = clonefd(filp);
92 ret = put_user(fd, p); 91 ret = put_user(fd, p);
93@@ -1079,7 +1097,14 @@ cryptodev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg_) 92@@ -1084,7 +1102,14 @@ cryptodev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg_)
94 if (cookie_list.cookie_available) 93 if (cookie_list.cookie_available)
95 copy_to_user(arg, &cookie_list, 94 copy_to_user(arg, &cookie_list,
96 sizeof(struct pkc_cookie_list_s)); 95 sizeof(struct pkc_cookie_list_s));
@@ -209,5 +208,5 @@ index 0b7951e..c901bc7 100644
209 err: 208 err:
210 return ret; 209 return ret;
211-- 210--
2121.7.9.7 2111.8.3.1
213 212
diff --git a/recipes-kernel/cryptodev/cryptodev-fsl/0006-fix-build-error-on-some-targets.patch b/recipes-kernel/cryptodev/cryptodev-fsl/0006-fix-build-error-on-some-targets.patch
deleted file mode 100644
index 510dee0..0000000
--- a/recipes-kernel/cryptodev/cryptodev-fsl/0006-fix-build-error-on-some-targets.patch
+++ /dev/null
@@ -1,64 +0,0 @@
1From 69e00f8c1633dfe6da20ccd0cf363a481c99fc97 Mon Sep 17 00:00:00 2001
2From: Cristian Stoica <cristian.stoica@freescale.com>
3Date: Wed, 20 Nov 2013 11:29:50 +0200
4Subject: [[Patch][fsl 06/16] fix build error on some targets
5
6Upstream-status: Pending
7
8This updates incomplete patch f681e2e5fd1088bfe0aafd1ae2560c1dc9d04778
9and allows building main.o
10
11Signed-off-by: Cristian Stoica <cristian.stoica@freescale.com>
12Tested-by: Horia Ioan Geanta Neag <horia.geanta@freescale.com>
13---
14 cryptlib.c | 4 ++--
15 cryptlib.h | 4 ++--
16 2 files changed, 4 insertions(+), 4 deletions(-)
17
18diff --git a/cryptlib.c b/cryptlib.c
19index 2986d09..3576f39 100644
20--- a/cryptlib.c
21+++ b/cryptlib.c
22@@ -113,7 +113,7 @@ error:
23
24
25 int cryptodev_cipher_init(struct cipher_data *out, const char *alg_name,
26- uint8_t *keyp, size_t keylen, int stream, int aead)
27+ uint8_t *keyp, unsigned int keylen, int stream, int aead)
28 {
29 int ret;
30
31@@ -313,7 +313,7 @@ ssize_t cryptodev_cipher_decrypt(struct cipher_data *cdata,
32 /* Hash functions */
33
34 int cryptodev_hash_init(struct hash_data *hdata, const char *alg_name,
35- int hmac_mode, void *mackey, size_t mackeylen)
36+ int hmac_mode, void *mackey, unsigned int mackeylen)
37 {
38 int ret;
39
40diff --git a/cryptlib.h b/cryptlib.h
41index a0a8a63..4cb66ad 100644
42--- a/cryptlib.h
43+++ b/cryptlib.h
44@@ -23,7 +23,7 @@ struct cipher_data {
45 };
46
47 int cryptodev_cipher_init(struct cipher_data *out, const char *alg_name,
48- uint8_t *key, size_t keylen, int stream, int aead);
49+ uint8_t *key, unsigned int keylen, int stream, int aead);
50 void cryptodev_cipher_deinit(struct cipher_data *cdata);
51 int cryptodev_get_cipher_key(uint8_t *key, struct session_op *sop, int aead);
52 int cryptodev_get_cipher_keylen(unsigned int *keylen, struct session_op *sop,
53@@ -87,7 +87,7 @@ ssize_t cryptodev_hash_update(struct hash_data *hdata,
54 int cryptodev_hash_reset(struct hash_data *hdata);
55 void cryptodev_hash_deinit(struct hash_data *hdata);
56 int cryptodev_hash_init(struct hash_data *hdata, const char *alg_name,
57- int hmac_mode, void *mackey, size_t mackeylen);
58+ int hmac_mode, void *mackey, unsigned int mackeylen);
59
60
61 #endif
62--
631.7.9.7
64
diff --git a/recipes-kernel/cryptodev/cryptodev-fsl/0013-RCU-stall-fixed-in-PKC-asynchronous-interface.patch b/recipes-kernel/cryptodev/cryptodev-fsl/0007-RCU-stall-fixed-in-PKC-asynchronous-interface.patch
index 26c0168..93a2248 100644
--- a/recipes-kernel/cryptodev/cryptodev-fsl/0013-RCU-stall-fixed-in-PKC-asynchronous-interface.patch
+++ b/recipes-kernel/cryptodev/cryptodev-fsl/0007-RCU-stall-fixed-in-PKC-asynchronous-interface.patch
@@ -1,21 +1,21 @@
1From 211a494a4f8ee6d5d31a1db938b771958ea32c6b Mon Sep 17 00:00:00 2001 1From d60b9dbf53d63092fd292c00bb03c250c26703cf Mon Sep 17 00:00:00 2001
2From: Yashpal Dutta <yashpal.dutta@freescale.com> 2From: Yashpal Dutta <yashpal.dutta@freescale.com>
3Date: Fri, 7 Mar 2014 08:49:15 +0545 3Date: Fri, 7 Mar 2014 08:49:15 +0545
4Subject: [[Patch][fsl 13/16] RCU stall fixed in PKC asynchronous interface 4Subject: [PATCH 7/9] RCU stall fixed in PKC asynchronous interface
5 5
6Upstream-status: Pending 6Upstream-status: Pending
7 7
8Signed-off-by: Yashpal Dutta <yashpal.dutta@freescale.com> 8Signed-off-by: Yashpal Dutta <yashpal.dutta@freescale.com>
9--- 9---
10 ioctl.c | 23 +++++++++++------------ 10 ioctl.c | 23 +++++++++++------------
11 main.c | 43 +++++++++++++++++++++++++++---------------- 11 main.c | 43 +++++++++++++++++++++++++++----------------
12 2 files changed, 38 insertions(+), 28 deletions(-) 12 2 files changed, 38 insertions(+), 28 deletions(-)
13 13
14diff --git a/ioctl.c b/ioctl.c 14diff --git a/ioctl.c b/ioctl.c
15index cc1a2a9..1752880 100644 15index c813c8c..7e4c671 100644
16--- a/ioctl.c 16--- a/ioctl.c
17+++ b/ioctl.c 17+++ b/ioctl.c
18@@ -106,10 +106,9 @@ void cryptodev_complete_asym(struct crypto_async_request *req, int err) 18@@ -108,10 +108,9 @@ void cryptodev_complete_asym(struct crypto_async_request *req, int err)
19 complete(&res->completion); 19 complete(&res->completion);
20 } else { 20 } else {
21 struct crypt_priv *pcr = pkc->priv; 21 struct crypt_priv *pcr = pkc->priv;
@@ -28,7 +28,7 @@ index cc1a2a9..1752880 100644
28 /* wake for POLLIN */ 28 /* wake for POLLIN */
29 wake_up_interruptible(&pcr->user_waiter); 29 wake_up_interruptible(&pcr->user_waiter);
30 } 30 }
31@@ -953,7 +952,7 @@ cryptodev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg_) 31@@ -958,7 +957,7 @@ cryptodev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg_)
32 case CIOCASYMFEAT: 32 case CIOCASYMFEAT:
33 return put_user(CRF_MOD_EXP_CRT | CRF_MOD_EXP | CRF_DSA_SIGN | 33 return put_user(CRF_MOD_EXP_CRT | CRF_MOD_EXP | CRF_DSA_SIGN |
34 CRF_DSA_VERIFY | CRF_DH_COMPUTE_KEY | 34 CRF_DSA_VERIFY | CRF_DH_COMPUTE_KEY |
@@ -37,7 +37,7 @@ index cc1a2a9..1752880 100644
37 case CRIOGET: 37 case CRIOGET:
38 fd = clonefd(filp); 38 fd = clonefd(filp);
39 ret = put_user(fd, p); 39 ret = put_user(fd, p);
40@@ -992,7 +991,7 @@ cryptodev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg_) 40@@ -997,7 +996,7 @@ cryptodev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg_)
41 case CIOCKEY: 41 case CIOCKEY:
42 { 42 {
43 struct cryptodev_pkc *pkc = 43 struct cryptodev_pkc *pkc =
@@ -46,7 +46,7 @@ index cc1a2a9..1752880 100644
46 46
47 if (!pkc) 47 if (!pkc)
48 return -ENOMEM; 48 return -ENOMEM;
49@@ -1048,7 +1047,7 @@ cryptodev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg_) 49@@ -1053,7 +1052,7 @@ cryptodev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg_)
50 case CIOCASYMASYNCRYPT: 50 case CIOCASYMASYNCRYPT:
51 { 51 {
52 struct cryptodev_pkc *pkc = 52 struct cryptodev_pkc *pkc =
@@ -55,7 +55,7 @@ index cc1a2a9..1752880 100644
55 ret = kop_from_user(&pkc->kop, arg); 55 ret = kop_from_user(&pkc->kop, arg);
56 56
57 if (unlikely(ret)) 57 if (unlikely(ret))
58@@ -1065,13 +1064,12 @@ cryptodev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg_) 58@@ -1070,13 +1069,12 @@ cryptodev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg_)
59 case CIOCASYMFETCHCOOKIE: 59 case CIOCASYMFETCHCOOKIE:
60 { 60 {
61 struct cryptodev_pkc *pkc; 61 struct cryptodev_pkc *pkc;
@@ -70,7 +70,7 @@ index cc1a2a9..1752880 100644
70 if (!list_empty(&pcr->asym_completed_list)) { 70 if (!list_empty(&pcr->asym_completed_list)) {
71 /* Run a loop in the list for upto elements 71 /* Run a loop in the list for upto elements
72 and copy their response back */ 72 and copy their response back */
73@@ -1079,6 +1077,7 @@ cryptodev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg_) 73@@ -1084,6 +1082,7 @@ cryptodev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg_)
74 list_first_entry(&pcr->asym_completed_list, 74 list_first_entry(&pcr->asym_completed_list,
75 struct cryptodev_pkc, list); 75 struct cryptodev_pkc, list);
76 list_del(&pkc->list); 76 list_del(&pkc->list);
@@ -78,7 +78,7 @@ index cc1a2a9..1752880 100644
78 ret = crypto_async_fetch_asym(pkc); 78 ret = crypto_async_fetch_asym(pkc);
79 if (!ret) { 79 if (!ret) {
80 cookie_list.cookie_available++; 80 cookie_list.cookie_available++;
81@@ -1088,10 +1087,10 @@ cryptodev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg_) 81@@ -1093,10 +1092,10 @@ cryptodev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg_)
82 } 82 }
83 kfree(pkc); 83 kfree(pkc);
84 } else { 84 } else {
@@ -90,7 +90,7 @@ index cc1a2a9..1752880 100644
90 90
91 /* Reflect the updated request to user-space */ 91 /* Reflect the updated request to user-space */
92 if (cookie_list.cookie_available) 92 if (cookie_list.cookie_available)
93@@ -1381,14 +1380,13 @@ cryptodev_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg_) 93@@ -1386,14 +1385,13 @@ cryptodev_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg_)
94 case COMPAT_CIOCASYMFETCHCOOKIE: 94 case COMPAT_CIOCASYMFETCHCOOKIE:
95 { 95 {
96 struct cryptodev_pkc *pkc; 96 struct cryptodev_pkc *pkc;
@@ -106,7 +106,7 @@ index cc1a2a9..1752880 100644
106 if (!list_empty(&pcr->asym_completed_list)) { 106 if (!list_empty(&pcr->asym_completed_list)) {
107 /* Run a loop in the list for upto elements 107 /* Run a loop in the list for upto elements
108 and copy their response back */ 108 and copy their response back */
109@@ -1396,6 +1394,7 @@ cryptodev_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg_) 109@@ -1401,6 +1399,7 @@ cryptodev_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg_)
110 list_first_entry(&pcr->asym_completed_list, 110 list_first_entry(&pcr->asym_completed_list,
111 struct cryptodev_pkc, list); 111 struct cryptodev_pkc, list);
112 list_del(&pkc->list); 112 list_del(&pkc->list);
@@ -114,7 +114,7 @@ index cc1a2a9..1752880 100644
114 ret = crypto_async_fetch_asym(pkc); 114 ret = crypto_async_fetch_asym(pkc);
115 if (!ret) { 115 if (!ret) {
116 cookie_list.cookie_available++; 116 cookie_list.cookie_available++;
117@@ -1404,10 +1403,10 @@ cryptodev_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg_) 117@@ -1409,10 +1408,10 @@ cryptodev_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg_)
118 } 118 }
119 kfree(pkc); 119 kfree(pkc);
120 } else { 120 } else {
@@ -234,5 +234,5 @@ index c901bc7..2747706 100644
234 if (!buf) 234 if (!buf)
235 return -ENOMEM; 235 return -ENOMEM;
236-- 236--
2371.7.9.7 2371.8.3.1
238 238
diff --git a/recipes-kernel/cryptodev/cryptodev-fsl/0015-Add-RSA-Key-generation-offloading.patch b/recipes-kernel/cryptodev/cryptodev-fsl/0008-Add-RSA-Key-generation-offloading.patch
index a419b58..affb2e7 100644
--- a/recipes-kernel/cryptodev/cryptodev-fsl/0015-Add-RSA-Key-generation-offloading.patch
+++ b/recipes-kernel/cryptodev/cryptodev-fsl/0008-Add-RSA-Key-generation-offloading.patch
@@ -1,24 +1,24 @@
1From 1d9c8084a9addaa071ca3e6c14167ebdb2673725 Mon Sep 17 00:00:00 2001 1From af5e4289f60c38ab17adab14c82d6204d155f25f Mon Sep 17 00:00:00 2001
2From: Hou Zhiqiang <B48286@freescale.com> 2From: Hou Zhiqiang <B48286@freescale.com>
3Date: Wed, 19 Mar 2014 14:02:46 +0800 3Date: Wed, 19 Mar 2014 14:02:46 +0800
4Subject: [[Patch][fsl 15/16] Add RSA Key generation offloading 4Subject: [PATCH 8/9] Add RSA Key generation offloading
5 5
6Upstream-status: Pending 6Upstream-status: Pending
7 7
8Signed-off-by: Hou Zhiqiang <B48286@freescale.com> 8Signed-off-by: Hou Zhiqiang <B48286@freescale.com>
9Tested-by: Cristian Stoica <cristian.stoica@freescale.com> 9Tested-by: Cristian Stoica <cristian.stoica@freescale.com>
10--- 10---
11 cryptlib.c | 1 + 11 cryptlib.c | 1 +
12 crypto/cryptodev.h | 2 ++ 12 crypto/cryptodev.h | 2 ++
13 ioctl.c | 3 +- 13 ioctl.c | 3 +-
14 main.c | 80 +++++++++++++++++++++++++++++++++++++++++++++++++++- 14 main.c | 80 +++++++++++++++++++++++++++++++++++++++++++++++++++++-
15 4 files changed, 84 insertions(+), 2 deletions(-) 15 4 files changed, 84 insertions(+), 2 deletions(-)
16 16
17diff --git a/cryptlib.c b/cryptlib.c 17diff --git a/cryptlib.c b/cryptlib.c
18index 41acb2c..89af77a 100644 18index 47cd568..4dd1847 100644
19--- a/cryptlib.c 19--- a/cryptlib.c
20+++ b/cryptlib.c 20+++ b/cryptlib.c
21@@ -426,6 +426,7 @@ int cryptodev_pkc_offload(struct cryptodev_pkc *pkc) 21@@ -441,6 +441,7 @@ int cryptodev_pkc_offload(struct cryptodev_pkc *pkc)
22 struct pkc_request *pkc_req = &pkc->req, *pkc_requested; 22 struct pkc_request *pkc_req = &pkc->req, *pkc_requested;
23 23
24 switch (pkc_req->type) { 24 switch (pkc_req->type) {
@@ -27,10 +27,10 @@ index 41acb2c..89af77a 100644
27 case RSA_PRIV_FORM1: 27 case RSA_PRIV_FORM1:
28 case RSA_PRIV_FORM2: 28 case RSA_PRIV_FORM2:
29diff --git a/crypto/cryptodev.h b/crypto/cryptodev.h 29diff --git a/crypto/cryptodev.h b/crypto/cryptodev.h
30index 33cca2e..7990f27 100644 30index 275a55c..d0cc542 100644
31--- a/crypto/cryptodev.h 31--- a/crypto/cryptodev.h
32+++ b/crypto/cryptodev.h 32+++ b/crypto/cryptodev.h
33@@ -271,6 +271,7 @@ enum cryptodev_crk_op_t { 33@@ -270,6 +270,7 @@ enum cryptodev_crk_op_t {
34 CRK_DH_COMPUTE_KEY = 4, 34 CRK_DH_COMPUTE_KEY = 4,
35 CRK_DSA_GENERATE_KEY = 5, 35 CRK_DSA_GENERATE_KEY = 5,
36 CRK_DH_GENERATE_KEY = 6, 36 CRK_DH_GENERATE_KEY = 6,
@@ -38,7 +38,7 @@ index 33cca2e..7990f27 100644
38 CRK_ALGORITHM_ALL 38 CRK_ALGORITHM_ALL
39 }; 39 };
40 40
41@@ -280,6 +281,7 @@ enum cryptodev_crk_op_t { 41@@ -279,6 +280,7 @@ enum cryptodev_crk_op_t {
42 */ 42 */
43 #define CRF_MOD_EXP (1 << CRK_MOD_EXP) 43 #define CRF_MOD_EXP (1 << CRK_MOD_EXP)
44 #define CRF_MOD_EXP_CRT (1 << CRK_MOD_EXP_CRT) 44 #define CRF_MOD_EXP_CRT (1 << CRK_MOD_EXP_CRT)
@@ -47,10 +47,10 @@ index 33cca2e..7990f27 100644
47 #define CRF_DSA_VERIFY (1 << CRK_DSA_VERIFY) 47 #define CRF_DSA_VERIFY (1 << CRK_DSA_VERIFY)
48 #define CRF_DH_COMPUTE_KEY (1 << CRK_DH_COMPUTE_KEY) 48 #define CRF_DH_COMPUTE_KEY (1 << CRK_DH_COMPUTE_KEY)
49diff --git a/ioctl.c b/ioctl.c 49diff --git a/ioctl.c b/ioctl.c
50index 16ce72c..0344c0c 100644 50index 7e4c671..14888d6 100644
51--- a/ioctl.c 51--- a/ioctl.c
52+++ b/ioctl.c 52+++ b/ioctl.c
53@@ -954,7 +954,8 @@ cryptodev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg_) 53@@ -957,7 +957,8 @@ cryptodev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg_)
54 case CIOCASYMFEAT: 54 case CIOCASYMFEAT:
55 return put_user(CRF_MOD_EXP_CRT | CRF_MOD_EXP | CRF_DSA_SIGN | 55 return put_user(CRF_MOD_EXP_CRT | CRF_MOD_EXP | CRF_DSA_SIGN |
56 CRF_DSA_VERIFY | CRF_DH_COMPUTE_KEY | 56 CRF_DSA_VERIFY | CRF_DH_COMPUTE_KEY |
@@ -166,5 +166,5 @@ index 2747706..14dcf40 100644
166 err: 166 err:
167 return ret; 167 return ret;
168-- 168--
1691.7.9.7 1691.8.3.1
170 170
diff --git a/recipes-kernel/cryptodev/cryptodev-fsl/0008-fix-cipher-algorithm-memleaks.patch b/recipes-kernel/cryptodev/cryptodev-fsl/0008-fix-cipher-algorithm-memleaks.patch
deleted file mode 100644
index 995fbed..0000000
--- a/recipes-kernel/cryptodev/cryptodev-fsl/0008-fix-cipher-algorithm-memleaks.patch
+++ /dev/null
@@ -1,53 +0,0 @@
1From 9675e358fe73b33029a470aa5cf47527848f4054 Mon Sep 17 00:00:00 2001
2From: Cristian Stoica <cristian.stoica@freescale.com>
3Date: Tue, 26 Nov 2013 16:36:37 +0200
4Subject: [[Patch][fsl 08/16] fix cipher algorithm memleaks
5
6Upstream-status: Pending
7
8Patch 67e743aef130d107c1b41e0aace7677f9ff53bd1 allocates memory for
9cipher algorithm key without freeing it when session terminates. This
10patch addresses the deallocation issue.
11
12Signed-off-by: Cristian Stoica <cristian.stoica@freescale.com>
13Tested-by: Horia Ioan Geanta Neag <horia.geanta@freescale.com>
14---
15 cryptodev_int.h | 1 +
16 ioctl.c | 2 ++
17 2 files changed, 3 insertions(+)
18
19diff --git a/cryptodev_int.h b/cryptodev_int.h
20index 8d206c9..8891837 100644
21--- a/cryptodev_int.h
22+++ b/cryptodev_int.h
23@@ -166,6 +166,7 @@ struct csession {
24 struct hash_data hdata;
25 uint32_t sid;
26 uint32_t alignmask;
27+ uint8_t *key;
28
29 unsigned int array_size;
30 unsigned int used_pages; /* the number of pages that are used */
31diff --git a/ioctl.c b/ioctl.c
32index 18874d3..63467e0 100644
33--- a/ioctl.c
34+++ b/ioctl.c
35@@ -235,6 +235,7 @@ crypto_create_session(struct fcrypt *fcr, struct session_op *sop)
36 goto error_cipher;
37
38 key = kmalloc(keylen, GFP_KERNEL);
39+ ses_new->key = key;
40 if (unlikely(!key)) {
41 ret = -ENOMEM;
42 goto error_cipher;
43@@ -342,6 +343,7 @@ crypto_destroy_session(struct csession *ses_ptr)
44 ddebug(2, "freeing space for %d user pages", ses_ptr->array_size);
45 kfree(ses_ptr->pages);
46 kfree(ses_ptr->sg);
47+ kfree(ses_ptr->key);
48 mutex_unlock(&ses_ptr->sem);
49 mutex_destroy(&ses_ptr->sem);
50 kfree(ses_ptr);
51--
521.7.9.7
53
diff --git a/recipes-kernel/cryptodev/cryptodev-fsl/0016-Fixed-compilation-error-of-openssl-with-fsl-cryptode.patch b/recipes-kernel/cryptodev/cryptodev-fsl/0009-Fixed-compilation-error-of-openssl-with-fsl-cryptode.patch
index d5cc7f0..32757ca 100644
--- a/recipes-kernel/cryptodev/cryptodev-fsl/0016-Fixed-compilation-error-of-openssl-with-fsl-cryptode.patch
+++ b/recipes-kernel/cryptodev/cryptodev-fsl/0009-Fixed-compilation-error-of-openssl-with-fsl-cryptode.patch
@@ -1,25 +1,48 @@
1From 2215332bff6034d0e22e92e8fda0993f2579a740 Mon Sep 17 00:00:00 2001 1From e791b55b03d295ee11476382a7bd93ab131e2e52 Mon Sep 17 00:00:00 2001
2From: Yashpal Dutta <yashpal.dutta@freescale.com> 2From: Yashpal Dutta <yashpal.dutta@freescale.com>
3Date: Thu, 17 Apr 2014 07:08:47 +0545 3Date: Thu, 17 Apr 2014 07:08:47 +0545
4Subject: [[Patch][fsl 16/16] Fixed compilation error of openssl with fsl 4Subject: [PATCH 9/9] Fixed compilation error of openssl with fsl cryptodev
5 cryptodev
6 5
7Upstream-status: Pending 6Upstream-status: Pending
8 7
9Signed-off-by: Yashpal Dutta <yashpal.dutta@freescale.com> 8Signed-off-by: Yashpal Dutta <yashpal.dutta@freescale.com>
10Tested-by: Cristian Stoica <cristian.stoica@freescale.com> 9Tested-by: Cristian Stoica <cristian.stoica@freescale.com>
11--- 10---
12 cryptlib.c | 6 +++--- 11 authenc.c | 1 +
13 crypto/cryptodev.h | 9 ++++++++- 12 cryptlib.c | 9 ++++-----
14 cryptodev_int.h | 2 +- 13 crypto/cryptodev.h | 9 ++++++++-
15 ioctl.c | 6 +++++- 14 cryptodev_int.h | 2 +-
16 4 files changed, 17 insertions(+), 6 deletions(-) 15 ioctl.c | 8 ++++++--
16 main.c | 1 +
17 6 files changed, 21 insertions(+), 9 deletions(-)
17 18
19diff --git a/authenc.c b/authenc.c
20index ef0d3db..2aa4d38 100644
21--- a/authenc.c
22+++ b/authenc.c
23@@ -2,6 +2,7 @@
24 * Driver for /dev/crypto device (aka CryptoDev)
25 *
26 * Copyright (c) 2011, 2012 OpenSSL Software Foundation, Inc.
27+ * Copyright (c) 2014 Freescale Semiconductor, Inc.
28 *
29 * Author: Nikos Mavrogiannopoulos
30 *
18diff --git a/cryptlib.c b/cryptlib.c 31diff --git a/cryptlib.c b/cryptlib.c
19index 89af77a..1fc03e5 100644 32index 4dd1847..ec6693e 100644
20--- a/cryptlib.c 33--- a/cryptlib.c
21+++ b/cryptlib.c 34+++ b/cryptlib.c
22@@ -129,7 +129,7 @@ int cryptodev_cipher_init(struct cipher_data *out, const char *alg_name, 35@@ -4,8 +4,7 @@
36 * Copyright (c) 2010,2011 Nikos Mavrogiannopoulos <nmav@gnutls.org>
37 * Portions Copyright (c) 2010 Michael Weiser
38 * Portions Copyright (c) 2010 Phil Sutter
39- *
40- * Copyright 2012 Freescale Semiconductor, Inc.
41+ * Copyright 2012-2014 Freescale Semiconductor, Inc.
42 *
43 * This file is part of linux cryptodev.
44 *
45@@ -144,7 +143,7 @@ int cryptodev_cipher_init(struct cipher_data *out, const char *alg_name,
23 if (alg->max_keysize > 0 && 46 if (alg->max_keysize > 0 &&
24 unlikely((keylen < alg->min_keysize) || 47 unlikely((keylen < alg->min_keysize) ||
25 (keylen > alg->max_keysize))) { 48 (keylen > alg->max_keysize))) {
@@ -28,7 +51,7 @@ index 89af77a..1fc03e5 100644
28 keylen, alg_name, alg->min_keysize, alg->max_keysize); 51 keylen, alg_name, alg->min_keysize, alg->max_keysize);
29 ret = -EINVAL; 52 ret = -EINVAL;
30 goto error; 53 goto error;
31@@ -156,7 +156,7 @@ int cryptodev_cipher_init(struct cipher_data *out, const char *alg_name, 54@@ -171,7 +170,7 @@ int cryptodev_cipher_init(struct cipher_data *out, const char *alg_name,
32 } 55 }
33 56
34 if (unlikely(ret)) { 57 if (unlikely(ret)) {
@@ -37,7 +60,7 @@ index 89af77a..1fc03e5 100644
37 ret = -EINVAL; 60 ret = -EINVAL;
38 goto error; 61 goto error;
39 } 62 }
40@@ -323,7 +323,7 @@ int cryptodev_hash_init(struct hash_data *hdata, const char *alg_name, 63@@ -338,7 +337,7 @@ int cryptodev_hash_init(struct hash_data *hdata, const char *alg_name,
41 if (hmac_mode != 0) { 64 if (hmac_mode != 0) {
42 ret = crypto_ahash_setkey(hdata->async.s, mackey, mackeylen); 65 ret = crypto_ahash_setkey(hdata->async.s, mackey, mackeylen);
43 if (unlikely(ret)) { 66 if (unlikely(ret)) {
@@ -47,10 +70,10 @@ index 89af77a..1fc03e5 100644
47 ret = -EINVAL; 70 ret = -EINVAL;
48 goto error; 71 goto error;
49diff --git a/crypto/cryptodev.h b/crypto/cryptodev.h 72diff --git a/crypto/cryptodev.h b/crypto/cryptodev.h
50index 7990f27..77bffc9 100644 73index d0cc542..e7edd97 100644
51--- a/crypto/cryptodev.h 74--- a/crypto/cryptodev.h
52+++ b/crypto/cryptodev.h 75+++ b/crypto/cryptodev.h
53@@ -235,6 +235,13 @@ struct crypt_auth_op { 76@@ -234,6 +234,13 @@ struct crypt_auth_op {
54 #define CRYPTO_ALG_FLAG_RNG_ENABLE 2 77 #define CRYPTO_ALG_FLAG_RNG_ENABLE 2
55 #define CRYPTO_ALG_FLAG_DSA_SHA 4 78 #define CRYPTO_ALG_FLAG_DSA_SHA 4
56 79
@@ -64,7 +87,7 @@ index 7990f27..77bffc9 100644
64 struct crparam { 87 struct crparam {
65 __u8 *crp_p; 88 __u8 *crp_p;
66 __u32 crp_nbits; 89 __u32 crp_nbits;
67@@ -250,7 +257,7 @@ struct crypt_kop { 90@@ -249,7 +256,7 @@ struct crypt_kop {
68 __u16 crk_oparams; 91 __u16 crk_oparams;
69 __u32 crk_pad1; 92 __u32 crk_pad1;
70 struct crparam crk_param[CRK_MAXPARAM]; 93 struct crparam crk_param[CRK_MAXPARAM];
@@ -74,7 +97,7 @@ index 7990f27..77bffc9 100644
74 void *cookie; 97 void *cookie;
75 }; 98 };
76diff --git a/cryptodev_int.h b/cryptodev_int.h 99diff --git a/cryptodev_int.h b/cryptodev_int.h
77index 7ea6976..e379eaf 100644 100index 5347cae..c83c885 100644
78--- a/cryptodev_int.h 101--- a/cryptodev_int.h
79+++ b/cryptodev_int.h 102+++ b/cryptodev_int.h
80@@ -88,7 +88,7 @@ struct compat_crypt_kop { 103@@ -88,7 +88,7 @@ struct compat_crypt_kop {
@@ -87,10 +110,19 @@ index 7ea6976..e379eaf 100644
87 compat_uptr_t cookie; 110 compat_uptr_t cookie;
88 }; 111 };
89diff --git a/ioctl.c b/ioctl.c 112diff --git a/ioctl.c b/ioctl.c
90index 0344c0c..66cb05a 100644 113index 14888d6..20ab4ca 100644
91--- a/ioctl.c 114--- a/ioctl.c
92+++ b/ioctl.c 115+++ b/ioctl.c
93@@ -498,6 +498,7 @@ cryptodev_open(struct inode *inode, struct file *filp) 116@@ -4,7 +4,7 @@
117 * Copyright (c) 2004 Michal Ludvig <mludvig@logix.net.nz>, SuSE Labs
118 * Copyright (c) 2009,2010,2011 Nikos Mavrogiannopoulos <nmav@gnutls.org>
119 * Copyright (c) 2010 Phil Sutter
120- * Copyright 2012 Freescale Semiconductor, Inc.
121+ * Copyright 2012-2014 Freescale Semiconductor, Inc.
122 *
123 * This file is part of linux cryptodev.
124 *
125@@ -501,6 +501,7 @@ cryptodev_open(struct inode *inode, struct file *filp)
94 INIT_LIST_HEAD(&pcr->done.list); 126 INIT_LIST_HEAD(&pcr->done.list);
95 INIT_LIST_HEAD(&pcr->asym_completed_list); 127 INIT_LIST_HEAD(&pcr->asym_completed_list);
96 spin_lock_init(&pcr->completion_lock); 128 spin_lock_init(&pcr->completion_lock);
@@ -98,7 +130,7 @@ index 0344c0c..66cb05a 100644
98 INIT_WORK(&pcr->cryptask, cryptask_routine); 130 INIT_WORK(&pcr->cryptask, cryptask_routine);
99 131
100 init_waitqueue_head(&pcr->user_waiter); 132 init_waitqueue_head(&pcr->user_waiter);
101@@ -777,8 +778,11 @@ static int fill_kcop_from_cop(struct kernel_crypt_op *kcop, struct fcrypt *fcr) 133@@ -780,8 +781,11 @@ static int fill_kcop_from_cop(struct kernel_crypt_op *kcop, struct fcrypt *fcr)
102 134
103 if (cop->iv) { 135 if (cop->iv) {
104 rc = copy_from_user(kcop->iv, cop->iv, kcop->ivlen); 136 rc = copy_from_user(kcop->iv, cop->iv, kcop->ivlen);
@@ -111,6 +143,18 @@ index 0344c0c..66cb05a 100644
111 } 143 }
112 144
113 return 0; 145 return 0;
146diff --git a/main.c b/main.c
147index 14dcf40..6365911 100644
148--- a/main.c
149+++ b/main.c
150@@ -3,6 +3,7 @@
151 *
152 * Copyright (c) 2004 Michal Ludvig <mludvig@logix.net.nz>, SuSE Labs
153 * Copyright (c) 2009-2013 Nikos Mavrogiannopoulos <nmav@gnutls.org>
154+ * Copyright (c) 2014 Freescale Semiconductor, Inc.
155 *
156 * This file is part of linux cryptodev.
157 *
114-- 158--
1151.7.9.7 1592.2.0
116 160
diff --git a/recipes-kernel/cryptodev/cryptodev-fsl/0014-use-static-allocation-for-keys-copied-from-userspace.patch b/recipes-kernel/cryptodev/cryptodev-fsl/0014-use-static-allocation-for-keys-copied-from-userspace.patch
deleted file mode 100644
index c68f3d7..0000000
--- a/recipes-kernel/cryptodev/cryptodev-fsl/0014-use-static-allocation-for-keys-copied-from-userspace.patch
+++ /dev/null
@@ -1,131 +0,0 @@
1From 50c116780f736b3e6a11389c9d9b3f4a1d5cab90 Mon Sep 17 00:00:00 2001
2From: Cristian Stoica <cristian.stoica@freescale.com>
3Date: Wed, 19 Mar 2014 17:59:17 +0200
4Subject: [[Patch][fsl 14/16] use static allocation for keys copied from
5 userspace
6
7Upstream-status: Pending
8
9There is no need to keep keys around for the entire duration of the
10session. The keys are copied from user-space and then used to initialize
11the ciphers. After this, the original keys can be discarded.
12The total required space for keys is small and known in advance. This
13patch uses this information to allocate required space on stack.
14
15Signed-off-by: Cristian Stoica <cristian.stoica@freescale.com>
16---
17 cryptodev_int.h | 1 -
18 ioctl.c | 38 ++++++++++++++++++++------------------
19 2 files changed, 20 insertions(+), 19 deletions(-)
20
21diff --git a/cryptodev_int.h b/cryptodev_int.h
22index 8beeef0..7ea6976 100644
23--- a/cryptodev_int.h
24+++ b/cryptodev_int.h
25@@ -212,7 +212,6 @@ struct csession {
26 struct hash_data hdata;
27 uint32_t sid;
28 uint32_t alignmask;
29- uint8_t *key;
30
31 unsigned int array_size;
32 unsigned int used_pages; /* the number of pages that are used */
33diff --git a/ioctl.c b/ioctl.c
34index 1752880..16ce72c 100644
35--- a/ioctl.c
36+++ b/ioctl.c
37@@ -46,6 +46,8 @@
38 #include <linux/uaccess.h>
39 #include <crypto/cryptodev.h>
40 #include <linux/scatterlist.h>
41+#include <linux/rtnetlink.h>
42+#include <crypto/authenc.h>
43
44 #include <linux/sysctl.h>
45
46@@ -136,9 +138,17 @@ crypto_create_session(struct fcrypt *fcr, struct session_op *sop)
47 const char *alg_name = NULL;
48 const char *hash_name = NULL;
49 int hmac_mode = 1, stream = 0, aead = 0;
50- uint8_t *key = NULL;
51- unsigned int keylen;
52- uint8_t mackey[CRYPTO_HMAC_MAX_KEY_LEN];
53+ /*
54+ * With aead, only ckey is used and it can cover all the struct space;
55+ * otherwise both keys may be used simultaneously but they are confined
56+ * to their spaces
57+ */
58+ struct {
59+ uint8_t ckey[CRYPTO_CIPHER_MAX_KEY_LEN];
60+ uint8_t mkey[CRYPTO_HMAC_MAX_KEY_LEN];
61+ /* padding space for aead keys */
62+ uint8_t pad[RTA_SPACE(sizeof(struct crypto_authenc_key_param))];
63+ } keys;
64
65 /* Does the request make sense? */
66 if (unlikely(!sop->cipher && !sop->mac)) {
67@@ -257,23 +267,17 @@ crypto_create_session(struct fcrypt *fcr, struct session_op *sop)
68
69 /* Set-up crypto transform. */
70 if (alg_name) {
71+ unsigned int keylen;
72 ret = cryptodev_get_cipher_keylen(&keylen, sop, aead);
73 if (unlikely(ret < 0))
74 goto error_cipher;
75
76- key = kmalloc(keylen, GFP_KERNEL);
77- ses_new->key = key;
78- if (unlikely(!key)) {
79- ret = -ENOMEM;
80- goto error_cipher;
81- }
82-
83- ret = cryptodev_get_cipher_key(key, sop, aead);
84+ ret = cryptodev_get_cipher_key(keys.ckey, sop, aead);
85 if (unlikely(ret < 0))
86 goto error_cipher;
87
88- ret = cryptodev_cipher_init(&ses_new->cdata, alg_name, key, keylen,
89- stream, aead);
90+ ret = cryptodev_cipher_init(&ses_new->cdata, alg_name,
91+ keys.ckey, keylen, stream, aead);
92 if (ret < 0) {
93 ddebug(1, "Failed to load cipher for %s", alg_name);
94 ret = -EINVAL;
95@@ -289,14 +293,14 @@ crypto_create_session(struct fcrypt *fcr, struct session_op *sop)
96 goto error_hash;
97 }
98
99- if (sop->mackey && unlikely(copy_from_user(mackey, sop->mackey,
100- sop->mackeylen))) {
101+ if (sop->mackey && unlikely(copy_from_user(keys.mkey,
102+ sop->mackey, sop->mackeylen))) {
103 ret = -EFAULT;
104 goto error_hash;
105 }
106
107 ret = cryptodev_hash_init(&ses_new->hdata, hash_name, hmac_mode,
108- mackey, sop->mackeylen);
109+ keys.mkey, sop->mackeylen);
110 if (ret != 0) {
111 ddebug(1, "Failed to load hash for %s", hash_name);
112 ret = -EINVAL;
113@@ -349,7 +353,6 @@ error_hash:
114 kfree(ses_new->sg);
115 kfree(ses_new->pages);
116 error_cipher:
117- kfree(key);
118 kfree(ses_new);
119
120 return ret;
121@@ -370,7 +373,6 @@ crypto_destroy_session(struct csession *ses_ptr)
122 ddebug(2, "freeing space for %d user pages", ses_ptr->array_size);
123 kfree(ses_ptr->pages);
124 kfree(ses_ptr->sg);
125- kfree(ses_ptr->key);
126 mutex_unlock(&ses_ptr->sem);
127 mutex_destroy(&ses_ptr->sem);
128 kfree(ses_ptr);
129--
1301.7.9.7
131