All of lore.kernel.org
 help / color / mirror / Atom feed
From: Gilad Ben-Yossef <gilad@benyossef.com>
To: Herbert Xu <herbert@gondor.apana.org.au>,
	"David S. Miller" <davem@davemloft.net>,
	Jonathan Corbet <corbet@lwn.net>,
	David Howells <dhowells@redhat.com>,
	Tom Lendacky <thomas.lendacky@amd.com>,
	Gary Hook <gary.hook@amd.com>,
	Boris Brezillon <boris.brezillon@free-electrons.com>,
	Arnaud Ebalard <arno@natisbad.org>,
	Matthias Brugger <matthias.bgg@gmail.com>,
	Alasdair Kergon <agk@redhat.com>,
	Mike Snitzer <snitzer@redhat.com>,
	dm-devel@redhat.com, Shaohua Li <shli@kernel.org>,
	Steve French <sfrench@samba.org>,
	"Theodore Y. Ts'o" <tytso@mit.edu>,
	Jaegeuk Kim <jaegeuk@kernel.org>,
	Mimi Zohar <zohar@linux.vnet.ibm.com>,
	Dmitry Kasatkin <dmitry.kasatkin@gmail.com>,
	James Morris <james.l.morris@oracle.com>,
	"Serge E. Hallyn" <serge@hallyn.com>,
	linux-crypto@v
Cc: Ofir Drang <ofir.drang@arm.com>
Subject: [PATCH v4 14/19] ima: move to generic async completion
Date: Tue,  8 Aug 2017 15:03:45 +0300	[thread overview]
Message-ID: <1502193834-11289-15-git-send-email-gilad@benyossef.com> (raw)
In-Reply-To: <1502193834-11289-1-git-send-email-gilad@benyossef.com>

ima starts several async crypto ops and  waits for their completions.
Move it over to generic code doing the same.

Signed-off-by: Gilad Ben-Yossef <gilad@benyossef.com>
Acked-by: Mimi Zohar <zohar@linux.vnet.ibm.com>
---
 security/integrity/ima/ima_crypto.c | 56 +++++++++++--------------------------
 1 file changed, 17 insertions(+), 39 deletions(-)

diff --git a/security/integrity/ima/ima_crypto.c b/security/integrity/ima/ima_crypto.c
index 802d5d2..0e4db1fe 100644
--- a/security/integrity/ima/ima_crypto.c
+++ b/security/integrity/ima/ima_crypto.c
@@ -27,11 +27,6 @@
 
 #include "ima.h"
 
-struct ahash_completion {
-	struct completion completion;
-	int err;
-};
-
 /* minimum file size for ahash use */
 static unsigned long ima_ahash_minsize;
 module_param_named(ahash_minsize, ima_ahash_minsize, ulong, 0644);
@@ -196,30 +191,13 @@ static void ima_free_atfm(struct crypto_ahash *tfm)
 		crypto_free_ahash(tfm);
 }
 
-static void ahash_complete(struct crypto_async_request *req, int err)
+static inline int ahash_wait(int err, struct crypto_wait *wait)
 {
-	struct ahash_completion *res = req->data;
 
-	if (err == -EINPROGRESS)
-		return;
-	res->err = err;
-	complete(&res->completion);
-}
+	err = crypto_wait_req(err, wait);
 
-static int ahash_wait(int err, struct ahash_completion *res)
-{
-	switch (err) {
-	case 0:
-		break;
-	case -EINPROGRESS:
-	case -EBUSY:
-		wait_for_completion(&res->completion);
-		reinit_completion(&res->completion);
-		err = res->err;
-		/* fall through */
-	default:
+	if (err)
 		pr_crit_ratelimited("ahash calculation failed: err: %d\n", err);
-	}
 
 	return err;
 }
@@ -233,7 +211,7 @@ static int ima_calc_file_hash_atfm(struct file *file,
 	int rc, read = 0, rbuf_len, active = 0, ahash_rc = 0;
 	struct ahash_request *req;
 	struct scatterlist sg[1];
-	struct ahash_completion res;
+	struct crypto_wait wait;
 	size_t rbuf_size[2];
 
 	hash->length = crypto_ahash_digestsize(tfm);
@@ -242,12 +220,12 @@ static int ima_calc_file_hash_atfm(struct file *file,
 	if (!req)
 		return -ENOMEM;
 
-	init_completion(&res.completion);
+	crypto_init_wait(&wait);
 	ahash_request_set_callback(req, CRYPTO_TFM_REQ_MAY_BACKLOG |
 				   CRYPTO_TFM_REQ_MAY_SLEEP,
-				   ahash_complete, &res);
+				   crypto_req_done, &wait);
 
-	rc = ahash_wait(crypto_ahash_init(req), &res);
+	rc = ahash_wait(crypto_ahash_init(req), &wait);
 	if (rc)
 		goto out1;
 
@@ -288,7 +266,7 @@ static int ima_calc_file_hash_atfm(struct file *file,
 			 * read/request, wait for the completion of the
 			 * previous ahash_update() request.
 			 */
-			rc = ahash_wait(ahash_rc, &res);
+			rc = ahash_wait(ahash_rc, &wait);
 			if (rc)
 				goto out3;
 		}
@@ -304,7 +282,7 @@ static int ima_calc_file_hash_atfm(struct file *file,
 			 * read/request, wait for the completion of the
 			 * previous ahash_update() request.
 			 */
-			rc = ahash_wait(ahash_rc, &res);
+			rc = ahash_wait(ahash_rc, &wait);
 			if (rc)
 				goto out3;
 		}
@@ -318,7 +296,7 @@ static int ima_calc_file_hash_atfm(struct file *file,
 			active = !active; /* swap buffers, if we use two */
 	}
 	/* wait for the last update request to complete */
-	rc = ahash_wait(ahash_rc, &res);
+	rc = ahash_wait(ahash_rc, &wait);
 out3:
 	if (read)
 		file->f_mode &= ~FMODE_READ;
@@ -327,7 +305,7 @@ static int ima_calc_file_hash_atfm(struct file *file,
 out2:
 	if (!rc) {
 		ahash_request_set_crypt(req, NULL, hash->digest, 0);
-		rc = ahash_wait(crypto_ahash_final(req), &res);
+		rc = ahash_wait(crypto_ahash_final(req), &wait);
 	}
 out1:
 	ahash_request_free(req);
@@ -527,7 +505,7 @@ static int calc_buffer_ahash_atfm(const void *buf, loff_t len,
 {
 	struct ahash_request *req;
 	struct scatterlist sg;
-	struct ahash_completion res;
+	struct crypto_wait wait;
 	int rc, ahash_rc = 0;
 
 	hash->length = crypto_ahash_digestsize(tfm);
@@ -536,12 +514,12 @@ static int calc_buffer_ahash_atfm(const void *buf, loff_t len,
 	if (!req)
 		return -ENOMEM;
 
-	init_completion(&res.completion);
+	crypto_init_wait(&wait);
 	ahash_request_set_callback(req, CRYPTO_TFM_REQ_MAY_BACKLOG |
 				   CRYPTO_TFM_REQ_MAY_SLEEP,
-				   ahash_complete, &res);
+				   crypto_req_done, &wait);
 
-	rc = ahash_wait(crypto_ahash_init(req), &res);
+	rc = ahash_wait(crypto_ahash_init(req), &wait);
 	if (rc)
 		goto out;
 
@@ -551,10 +529,10 @@ static int calc_buffer_ahash_atfm(const void *buf, loff_t len,
 	ahash_rc = crypto_ahash_update(req);
 
 	/* wait for the update request to complete */
-	rc = ahash_wait(ahash_rc, &res);
+	rc = ahash_wait(ahash_rc, &wait);
 	if (!rc) {
 		ahash_request_set_crypt(req, NULL, hash->digest, 0);
-		rc = ahash_wait(crypto_ahash_final(req), &res);
+		rc = ahash_wait(crypto_ahash_final(req), &wait);
 	}
 out:
 	ahash_request_free(req);
-- 
2.1.4

WARNING: multiple messages have this Message-ID (diff)
From: Gilad Ben-Yossef <gilad@benyossef.com>
To: Herbert Xu <herbert@gondor.apana.org.au>,
	"David S. Miller" <davem@davemloft.net>,
	Jonathan Corbet <corbet@lwn.net>,
	David Howells <dhowells@redhat.com>,
	Tom Lendacky <thomas.lendacky@amd.com>,
	Gary Hook <gary.hook@amd.com>,
	Boris Brezillon <boris.brezillon@free-electrons.com>,
	Arnaud Ebalard <arno@natisbad.org>,
	Matthias Brugger <matthias.bgg@gmail.com>,
	Alasdair Kergon <agk@redhat.com>,
	Mike Snitzer <snitzer@redhat.com>,
	dm-devel@redhat.com, Shaohua Li <shli@kernel.org>,
	Steve French <sfrench@samba.org>,
	"Theodore Y. Ts'o" <tytso@mit.edu>,
	Jaegeuk Kim <jaegeuk@kernel.org>,
	Mimi Zohar <zohar@linux.vnet.ibm.com>,
	Dmitry Kasatkin <dmitry.kasatkin@gmail.com>,
	James Morris <james.l.morris@oracle.com>,
	"Serge E. Hallyn" <serge@hallyn.com>,
	linux-crypto@vger.kernel.org, linux-doc@vger.kernel.org,
	linux-kernel@vger.kernel.org, keyrings@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	linux-mediatek@lists.infradead.org, linux-raid@vger.kernel.org,
	linux-cifs@vger.kernel.org, samba-technical@lists.samba.org,
	linux-fscrypt@vger.kernel.org,
	linux-ima-devel@lists.sourceforge.net,
	linux-ima-user@lists.sourceforge.net,
	linux-security-module@vger.kernel.org
Cc: Ofir Drang <ofir.drang@arm.com>
Subject: [PATCH v4 14/19] ima: move to generic async completion
Date: Tue,  8 Aug 2017 15:03:45 +0300	[thread overview]
Message-ID: <1502193834-11289-15-git-send-email-gilad@benyossef.com> (raw)
In-Reply-To: <1502193834-11289-1-git-send-email-gilad@benyossef.com>

ima starts several async crypto ops and  waits for their completions.
Move it over to generic code doing the same.

Signed-off-by: Gilad Ben-Yossef <gilad@benyossef.com>
Acked-by: Mimi Zohar <zohar@linux.vnet.ibm.com>
---
 security/integrity/ima/ima_crypto.c | 56 +++++++++++--------------------------
 1 file changed, 17 insertions(+), 39 deletions(-)

diff --git a/security/integrity/ima/ima_crypto.c b/security/integrity/ima/ima_crypto.c
index 802d5d2..0e4db1fe 100644
--- a/security/integrity/ima/ima_crypto.c
+++ b/security/integrity/ima/ima_crypto.c
@@ -27,11 +27,6 @@
 
 #include "ima.h"
 
-struct ahash_completion {
-	struct completion completion;
-	int err;
-};
-
 /* minimum file size for ahash use */
 static unsigned long ima_ahash_minsize;
 module_param_named(ahash_minsize, ima_ahash_minsize, ulong, 0644);
@@ -196,30 +191,13 @@ static void ima_free_atfm(struct crypto_ahash *tfm)
 		crypto_free_ahash(tfm);
 }
 
-static void ahash_complete(struct crypto_async_request *req, int err)
+static inline int ahash_wait(int err, struct crypto_wait *wait)
 {
-	struct ahash_completion *res = req->data;
 
-	if (err == -EINPROGRESS)
-		return;
-	res->err = err;
-	complete(&res->completion);
-}
+	err = crypto_wait_req(err, wait);
 
-static int ahash_wait(int err, struct ahash_completion *res)
-{
-	switch (err) {
-	case 0:
-		break;
-	case -EINPROGRESS:
-	case -EBUSY:
-		wait_for_completion(&res->completion);
-		reinit_completion(&res->completion);
-		err = res->err;
-		/* fall through */
-	default:
+	if (err)
 		pr_crit_ratelimited("ahash calculation failed: err: %d\n", err);
-	}
 
 	return err;
 }
@@ -233,7 +211,7 @@ static int ima_calc_file_hash_atfm(struct file *file,
 	int rc, read = 0, rbuf_len, active = 0, ahash_rc = 0;
 	struct ahash_request *req;
 	struct scatterlist sg[1];
-	struct ahash_completion res;
+	struct crypto_wait wait;
 	size_t rbuf_size[2];
 
 	hash->length = crypto_ahash_digestsize(tfm);
@@ -242,12 +220,12 @@ static int ima_calc_file_hash_atfm(struct file *file,
 	if (!req)
 		return -ENOMEM;
 
-	init_completion(&res.completion);
+	crypto_init_wait(&wait);
 	ahash_request_set_callback(req, CRYPTO_TFM_REQ_MAY_BACKLOG |
 				   CRYPTO_TFM_REQ_MAY_SLEEP,
-				   ahash_complete, &res);
+				   crypto_req_done, &wait);
 
-	rc = ahash_wait(crypto_ahash_init(req), &res);
+	rc = ahash_wait(crypto_ahash_init(req), &wait);
 	if (rc)
 		goto out1;
 
@@ -288,7 +266,7 @@ static int ima_calc_file_hash_atfm(struct file *file,
 			 * read/request, wait for the completion of the
 			 * previous ahash_update() request.
 			 */
-			rc = ahash_wait(ahash_rc, &res);
+			rc = ahash_wait(ahash_rc, &wait);
 			if (rc)
 				goto out3;
 		}
@@ -304,7 +282,7 @@ static int ima_calc_file_hash_atfm(struct file *file,
 			 * read/request, wait for the completion of the
 			 * previous ahash_update() request.
 			 */
-			rc = ahash_wait(ahash_rc, &res);
+			rc = ahash_wait(ahash_rc, &wait);
 			if (rc)
 				goto out3;
 		}
@@ -318,7 +296,7 @@ static int ima_calc_file_hash_atfm(struct file *file,
 			active = !active; /* swap buffers, if we use two */
 	}
 	/* wait for the last update request to complete */
-	rc = ahash_wait(ahash_rc, &res);
+	rc = ahash_wait(ahash_rc, &wait);
 out3:
 	if (read)
 		file->f_mode &= ~FMODE_READ;
@@ -327,7 +305,7 @@ static int ima_calc_file_hash_atfm(struct file *file,
 out2:
 	if (!rc) {
 		ahash_request_set_crypt(req, NULL, hash->digest, 0);
-		rc = ahash_wait(crypto_ahash_final(req), &res);
+		rc = ahash_wait(crypto_ahash_final(req), &wait);
 	}
 out1:
 	ahash_request_free(req);
@@ -527,7 +505,7 @@ static int calc_buffer_ahash_atfm(const void *buf, loff_t len,
 {
 	struct ahash_request *req;
 	struct scatterlist sg;
-	struct ahash_completion res;
+	struct crypto_wait wait;
 	int rc, ahash_rc = 0;
 
 	hash->length = crypto_ahash_digestsize(tfm);
@@ -536,12 +514,12 @@ static int calc_buffer_ahash_atfm(const void *buf, loff_t len,
 	if (!req)
 		return -ENOMEM;
 
-	init_completion(&res.completion);
+	crypto_init_wait(&wait);
 	ahash_request_set_callback(req, CRYPTO_TFM_REQ_MAY_BACKLOG |
 				   CRYPTO_TFM_REQ_MAY_SLEEP,
-				   ahash_complete, &res);
+				   crypto_req_done, &wait);
 
-	rc = ahash_wait(crypto_ahash_init(req), &res);
+	rc = ahash_wait(crypto_ahash_init(req), &wait);
 	if (rc)
 		goto out;
 
@@ -551,10 +529,10 @@ static int calc_buffer_ahash_atfm(const void *buf, loff_t len,
 	ahash_rc = crypto_ahash_update(req);
 
 	/* wait for the update request to complete */
-	rc = ahash_wait(ahash_rc, &res);
+	rc = ahash_wait(ahash_rc, &wait);
 	if (!rc) {
 		ahash_request_set_crypt(req, NULL, hash->digest, 0);
-		rc = ahash_wait(crypto_ahash_final(req), &res);
+		rc = ahash_wait(crypto_ahash_final(req), &wait);
 	}
 out:
 	ahash_request_free(req);
-- 
2.1.4

WARNING: multiple messages have this Message-ID (diff)
From: Gilad Ben-Yossef <gilad@benyossef.com>
To: Herbert Xu <herbert@gondor.apana.org.au>,
	"David S. Miller" <davem@davemloft.net>,
	Jonathan Corbet <corbet@lwn.net>,
	David Howells <dhowells@redhat.com>,
	Tom Lendacky <thomas.lendacky@amd.com>,
	Gary Hook <gary.hook@amd.com>,
	Boris Brezillon <boris.brezillon@free-electrons.com>,
	Arnaud Ebalard <arno@natisbad.org>,
	Matthias Brugger <matthias.bgg@gmail.com>,
	Alasdair Kergon <agk@redhat.com>,
	Mike Snitzer <snitzer@redhat.com>,
	dm-devel@redhat.com, Shaohua Li <shli@kernel.org>,
	Steve French <sfrench@samba.org>,
	"Theodore Y. Ts'o" <tytso@mit.edu>,
	Jaegeuk Kim <jaegeuk@kernel.org>,
	Mimi Zohar <zohar@linux.vnet.ibm.com>,
	Dmitry Kasatkin <dmitry.kasatkin@gmail.com>,
	James Morris <james.l.morris@oracle.com>,
	"Serge E. Hallyn" <serge@hallyn.com>,
	linux-crypto@v
Cc: Ofir Drang <ofir.drang@arm.com>
Subject: [PATCH v4 14/19] ima: move to generic async completion
Date: Tue, 08 Aug 2017 12:03:45 +0000	[thread overview]
Message-ID: <1502193834-11289-15-git-send-email-gilad@benyossef.com> (raw)
In-Reply-To: <1502193834-11289-1-git-send-email-gilad@benyossef.com>

ima starts several async crypto ops and  waits for their completions.
Move it over to generic code doing the same.

Signed-off-by: Gilad Ben-Yossef <gilad@benyossef.com>
Acked-by: Mimi Zohar <zohar@linux.vnet.ibm.com>
---
 security/integrity/ima/ima_crypto.c | 56 +++++++++++--------------------------
 1 file changed, 17 insertions(+), 39 deletions(-)

diff --git a/security/integrity/ima/ima_crypto.c b/security/integrity/ima/ima_crypto.c
index 802d5d2..0e4db1fe 100644
--- a/security/integrity/ima/ima_crypto.c
+++ b/security/integrity/ima/ima_crypto.c
@@ -27,11 +27,6 @@
 
 #include "ima.h"
 
-struct ahash_completion {
-	struct completion completion;
-	int err;
-};
-
 /* minimum file size for ahash use */
 static unsigned long ima_ahash_minsize;
 module_param_named(ahash_minsize, ima_ahash_minsize, ulong, 0644);
@@ -196,30 +191,13 @@ static void ima_free_atfm(struct crypto_ahash *tfm)
 		crypto_free_ahash(tfm);
 }
 
-static void ahash_complete(struct crypto_async_request *req, int err)
+static inline int ahash_wait(int err, struct crypto_wait *wait)
 {
-	struct ahash_completion *res = req->data;
 
-	if (err = -EINPROGRESS)
-		return;
-	res->err = err;
-	complete(&res->completion);
-}
+	err = crypto_wait_req(err, wait);
 
-static int ahash_wait(int err, struct ahash_completion *res)
-{
-	switch (err) {
-	case 0:
-		break;
-	case -EINPROGRESS:
-	case -EBUSY:
-		wait_for_completion(&res->completion);
-		reinit_completion(&res->completion);
-		err = res->err;
-		/* fall through */
-	default:
+	if (err)
 		pr_crit_ratelimited("ahash calculation failed: err: %d\n", err);
-	}
 
 	return err;
 }
@@ -233,7 +211,7 @@ static int ima_calc_file_hash_atfm(struct file *file,
 	int rc, read = 0, rbuf_len, active = 0, ahash_rc = 0;
 	struct ahash_request *req;
 	struct scatterlist sg[1];
-	struct ahash_completion res;
+	struct crypto_wait wait;
 	size_t rbuf_size[2];
 
 	hash->length = crypto_ahash_digestsize(tfm);
@@ -242,12 +220,12 @@ static int ima_calc_file_hash_atfm(struct file *file,
 	if (!req)
 		return -ENOMEM;
 
-	init_completion(&res.completion);
+	crypto_init_wait(&wait);
 	ahash_request_set_callback(req, CRYPTO_TFM_REQ_MAY_BACKLOG |
 				   CRYPTO_TFM_REQ_MAY_SLEEP,
-				   ahash_complete, &res);
+				   crypto_req_done, &wait);
 
-	rc = ahash_wait(crypto_ahash_init(req), &res);
+	rc = ahash_wait(crypto_ahash_init(req), &wait);
 	if (rc)
 		goto out1;
 
@@ -288,7 +266,7 @@ static int ima_calc_file_hash_atfm(struct file *file,
 			 * read/request, wait for the completion of the
 			 * previous ahash_update() request.
 			 */
-			rc = ahash_wait(ahash_rc, &res);
+			rc = ahash_wait(ahash_rc, &wait);
 			if (rc)
 				goto out3;
 		}
@@ -304,7 +282,7 @@ static int ima_calc_file_hash_atfm(struct file *file,
 			 * read/request, wait for the completion of the
 			 * previous ahash_update() request.
 			 */
-			rc = ahash_wait(ahash_rc, &res);
+			rc = ahash_wait(ahash_rc, &wait);
 			if (rc)
 				goto out3;
 		}
@@ -318,7 +296,7 @@ static int ima_calc_file_hash_atfm(struct file *file,
 			active = !active; /* swap buffers, if we use two */
 	}
 	/* wait for the last update request to complete */
-	rc = ahash_wait(ahash_rc, &res);
+	rc = ahash_wait(ahash_rc, &wait);
 out3:
 	if (read)
 		file->f_mode &= ~FMODE_READ;
@@ -327,7 +305,7 @@ static int ima_calc_file_hash_atfm(struct file *file,
 out2:
 	if (!rc) {
 		ahash_request_set_crypt(req, NULL, hash->digest, 0);
-		rc = ahash_wait(crypto_ahash_final(req), &res);
+		rc = ahash_wait(crypto_ahash_final(req), &wait);
 	}
 out1:
 	ahash_request_free(req);
@@ -527,7 +505,7 @@ static int calc_buffer_ahash_atfm(const void *buf, loff_t len,
 {
 	struct ahash_request *req;
 	struct scatterlist sg;
-	struct ahash_completion res;
+	struct crypto_wait wait;
 	int rc, ahash_rc = 0;
 
 	hash->length = crypto_ahash_digestsize(tfm);
@@ -536,12 +514,12 @@ static int calc_buffer_ahash_atfm(const void *buf, loff_t len,
 	if (!req)
 		return -ENOMEM;
 
-	init_completion(&res.completion);
+	crypto_init_wait(&wait);
 	ahash_request_set_callback(req, CRYPTO_TFM_REQ_MAY_BACKLOG |
 				   CRYPTO_TFM_REQ_MAY_SLEEP,
-				   ahash_complete, &res);
+				   crypto_req_done, &wait);
 
-	rc = ahash_wait(crypto_ahash_init(req), &res);
+	rc = ahash_wait(crypto_ahash_init(req), &wait);
 	if (rc)
 		goto out;
 
@@ -551,10 +529,10 @@ static int calc_buffer_ahash_atfm(const void *buf, loff_t len,
 	ahash_rc = crypto_ahash_update(req);
 
 	/* wait for the update request to complete */
-	rc = ahash_wait(ahash_rc, &res);
+	rc = ahash_wait(ahash_rc, &wait);
 	if (!rc) {
 		ahash_request_set_crypt(req, NULL, hash->digest, 0);
-		rc = ahash_wait(crypto_ahash_final(req), &res);
+		rc = ahash_wait(crypto_ahash_final(req), &wait);
 	}
 out:
 	ahash_request_free(req);
-- 
2.1.4


WARNING: multiple messages have this Message-ID (diff)
From: gilad@benyossef.com (Gilad Ben-Yossef)
To: linux-security-module@vger.kernel.org
Subject: [PATCH v4 14/19] ima: move to generic async completion
Date: Tue,  8 Aug 2017 15:03:45 +0300	[thread overview]
Message-ID: <1502193834-11289-15-git-send-email-gilad@benyossef.com> (raw)
In-Reply-To: <1502193834-11289-1-git-send-email-gilad@benyossef.com>

ima starts several async crypto ops and  waits for their completions.
Move it over to generic code doing the same.

Signed-off-by: Gilad Ben-Yossef <gilad@benyossef.com>
Acked-by: Mimi Zohar <zohar@linux.vnet.ibm.com>
---
 security/integrity/ima/ima_crypto.c | 56 +++++++++++--------------------------
 1 file changed, 17 insertions(+), 39 deletions(-)

diff --git a/security/integrity/ima/ima_crypto.c b/security/integrity/ima/ima_crypto.c
index 802d5d2..0e4db1fe 100644
--- a/security/integrity/ima/ima_crypto.c
+++ b/security/integrity/ima/ima_crypto.c
@@ -27,11 +27,6 @@
 
 #include "ima.h"
 
-struct ahash_completion {
-	struct completion completion;
-	int err;
-};
-
 /* minimum file size for ahash use */
 static unsigned long ima_ahash_minsize;
 module_param_named(ahash_minsize, ima_ahash_minsize, ulong, 0644);
@@ -196,30 +191,13 @@ static void ima_free_atfm(struct crypto_ahash *tfm)
 		crypto_free_ahash(tfm);
 }
 
-static void ahash_complete(struct crypto_async_request *req, int err)
+static inline int ahash_wait(int err, struct crypto_wait *wait)
 {
-	struct ahash_completion *res = req->data;
 
-	if (err == -EINPROGRESS)
-		return;
-	res->err = err;
-	complete(&res->completion);
-}
+	err = crypto_wait_req(err, wait);
 
-static int ahash_wait(int err, struct ahash_completion *res)
-{
-	switch (err) {
-	case 0:
-		break;
-	case -EINPROGRESS:
-	case -EBUSY:
-		wait_for_completion(&res->completion);
-		reinit_completion(&res->completion);
-		err = res->err;
-		/* fall through */
-	default:
+	if (err)
 		pr_crit_ratelimited("ahash calculation failed: err: %d\n", err);
-	}
 
 	return err;
 }
@@ -233,7 +211,7 @@ static int ima_calc_file_hash_atfm(struct file *file,
 	int rc, read = 0, rbuf_len, active = 0, ahash_rc = 0;
 	struct ahash_request *req;
 	struct scatterlist sg[1];
-	struct ahash_completion res;
+	struct crypto_wait wait;
 	size_t rbuf_size[2];
 
 	hash->length = crypto_ahash_digestsize(tfm);
@@ -242,12 +220,12 @@ static int ima_calc_file_hash_atfm(struct file *file,
 	if (!req)
 		return -ENOMEM;
 
-	init_completion(&res.completion);
+	crypto_init_wait(&wait);
 	ahash_request_set_callback(req, CRYPTO_TFM_REQ_MAY_BACKLOG |
 				   CRYPTO_TFM_REQ_MAY_SLEEP,
-				   ahash_complete, &res);
+				   crypto_req_done, &wait);
 
-	rc = ahash_wait(crypto_ahash_init(req), &res);
+	rc = ahash_wait(crypto_ahash_init(req), &wait);
 	if (rc)
 		goto out1;
 
@@ -288,7 +266,7 @@ static int ima_calc_file_hash_atfm(struct file *file,
 			 * read/request, wait for the completion of the
 			 * previous ahash_update() request.
 			 */
-			rc = ahash_wait(ahash_rc, &res);
+			rc = ahash_wait(ahash_rc, &wait);
 			if (rc)
 				goto out3;
 		}
@@ -304,7 +282,7 @@ static int ima_calc_file_hash_atfm(struct file *file,
 			 * read/request, wait for the completion of the
 			 * previous ahash_update() request.
 			 */
-			rc = ahash_wait(ahash_rc, &res);
+			rc = ahash_wait(ahash_rc, &wait);
 			if (rc)
 				goto out3;
 		}
@@ -318,7 +296,7 @@ static int ima_calc_file_hash_atfm(struct file *file,
 			active = !active; /* swap buffers, if we use two */
 	}
 	/* wait for the last update request to complete */
-	rc = ahash_wait(ahash_rc, &res);
+	rc = ahash_wait(ahash_rc, &wait);
 out3:
 	if (read)
 		file->f_mode &= ~FMODE_READ;
@@ -327,7 +305,7 @@ static int ima_calc_file_hash_atfm(struct file *file,
 out2:
 	if (!rc) {
 		ahash_request_set_crypt(req, NULL, hash->digest, 0);
-		rc = ahash_wait(crypto_ahash_final(req), &res);
+		rc = ahash_wait(crypto_ahash_final(req), &wait);
 	}
 out1:
 	ahash_request_free(req);
@@ -527,7 +505,7 @@ static int calc_buffer_ahash_atfm(const void *buf, loff_t len,
 {
 	struct ahash_request *req;
 	struct scatterlist sg;
-	struct ahash_completion res;
+	struct crypto_wait wait;
 	int rc, ahash_rc = 0;
 
 	hash->length = crypto_ahash_digestsize(tfm);
@@ -536,12 +514,12 @@ static int calc_buffer_ahash_atfm(const void *buf, loff_t len,
 	if (!req)
 		return -ENOMEM;
 
-	init_completion(&res.completion);
+	crypto_init_wait(&wait);
 	ahash_request_set_callback(req, CRYPTO_TFM_REQ_MAY_BACKLOG |
 				   CRYPTO_TFM_REQ_MAY_SLEEP,
-				   ahash_complete, &res);
+				   crypto_req_done, &wait);
 
-	rc = ahash_wait(crypto_ahash_init(req), &res);
+	rc = ahash_wait(crypto_ahash_init(req), &wait);
 	if (rc)
 		goto out;
 
@@ -551,10 +529,10 @@ static int calc_buffer_ahash_atfm(const void *buf, loff_t len,
 	ahash_rc = crypto_ahash_update(req);
 
 	/* wait for the update request to complete */
-	rc = ahash_wait(ahash_rc, &res);
+	rc = ahash_wait(ahash_rc, &wait);
 	if (!rc) {
 		ahash_request_set_crypt(req, NULL, hash->digest, 0);
-		rc = ahash_wait(crypto_ahash_final(req), &res);
+		rc = ahash_wait(crypto_ahash_final(req), &wait);
 	}
 out:
 	ahash_request_free(req);
-- 
2.1.4

--
To unsubscribe from this list: send the line "unsubscribe linux-security-module" in
the body of a message to majordomo at vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

WARNING: multiple messages have this Message-ID (diff)
From: gilad@benyossef.com (Gilad Ben-Yossef)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v4 14/19] ima: move to generic async completion
Date: Tue,  8 Aug 2017 15:03:45 +0300	[thread overview]
Message-ID: <1502193834-11289-15-git-send-email-gilad@benyossef.com> (raw)
In-Reply-To: <1502193834-11289-1-git-send-email-gilad@benyossef.com>

ima starts several async crypto ops and  waits for their completions.
Move it over to generic code doing the same.

Signed-off-by: Gilad Ben-Yossef <gilad@benyossef.com>
Acked-by: Mimi Zohar <zohar@linux.vnet.ibm.com>
---
 security/integrity/ima/ima_crypto.c | 56 +++++++++++--------------------------
 1 file changed, 17 insertions(+), 39 deletions(-)

diff --git a/security/integrity/ima/ima_crypto.c b/security/integrity/ima/ima_crypto.c
index 802d5d2..0e4db1fe 100644
--- a/security/integrity/ima/ima_crypto.c
+++ b/security/integrity/ima/ima_crypto.c
@@ -27,11 +27,6 @@
 
 #include "ima.h"
 
-struct ahash_completion {
-	struct completion completion;
-	int err;
-};
-
 /* minimum file size for ahash use */
 static unsigned long ima_ahash_minsize;
 module_param_named(ahash_minsize, ima_ahash_minsize, ulong, 0644);
@@ -196,30 +191,13 @@ static void ima_free_atfm(struct crypto_ahash *tfm)
 		crypto_free_ahash(tfm);
 }
 
-static void ahash_complete(struct crypto_async_request *req, int err)
+static inline int ahash_wait(int err, struct crypto_wait *wait)
 {
-	struct ahash_completion *res = req->data;
 
-	if (err == -EINPROGRESS)
-		return;
-	res->err = err;
-	complete(&res->completion);
-}
+	err = crypto_wait_req(err, wait);
 
-static int ahash_wait(int err, struct ahash_completion *res)
-{
-	switch (err) {
-	case 0:
-		break;
-	case -EINPROGRESS:
-	case -EBUSY:
-		wait_for_completion(&res->completion);
-		reinit_completion(&res->completion);
-		err = res->err;
-		/* fall through */
-	default:
+	if (err)
 		pr_crit_ratelimited("ahash calculation failed: err: %d\n", err);
-	}
 
 	return err;
 }
@@ -233,7 +211,7 @@ static int ima_calc_file_hash_atfm(struct file *file,
 	int rc, read = 0, rbuf_len, active = 0, ahash_rc = 0;
 	struct ahash_request *req;
 	struct scatterlist sg[1];
-	struct ahash_completion res;
+	struct crypto_wait wait;
 	size_t rbuf_size[2];
 
 	hash->length = crypto_ahash_digestsize(tfm);
@@ -242,12 +220,12 @@ static int ima_calc_file_hash_atfm(struct file *file,
 	if (!req)
 		return -ENOMEM;
 
-	init_completion(&res.completion);
+	crypto_init_wait(&wait);
 	ahash_request_set_callback(req, CRYPTO_TFM_REQ_MAY_BACKLOG |
 				   CRYPTO_TFM_REQ_MAY_SLEEP,
-				   ahash_complete, &res);
+				   crypto_req_done, &wait);
 
-	rc = ahash_wait(crypto_ahash_init(req), &res);
+	rc = ahash_wait(crypto_ahash_init(req), &wait);
 	if (rc)
 		goto out1;
 
@@ -288,7 +266,7 @@ static int ima_calc_file_hash_atfm(struct file *file,
 			 * read/request, wait for the completion of the
 			 * previous ahash_update() request.
 			 */
-			rc = ahash_wait(ahash_rc, &res);
+			rc = ahash_wait(ahash_rc, &wait);
 			if (rc)
 				goto out3;
 		}
@@ -304,7 +282,7 @@ static int ima_calc_file_hash_atfm(struct file *file,
 			 * read/request, wait for the completion of the
 			 * previous ahash_update() request.
 			 */
-			rc = ahash_wait(ahash_rc, &res);
+			rc = ahash_wait(ahash_rc, &wait);
 			if (rc)
 				goto out3;
 		}
@@ -318,7 +296,7 @@ static int ima_calc_file_hash_atfm(struct file *file,
 			active = !active; /* swap buffers, if we use two */
 	}
 	/* wait for the last update request to complete */
-	rc = ahash_wait(ahash_rc, &res);
+	rc = ahash_wait(ahash_rc, &wait);
 out3:
 	if (read)
 		file->f_mode &= ~FMODE_READ;
@@ -327,7 +305,7 @@ static int ima_calc_file_hash_atfm(struct file *file,
 out2:
 	if (!rc) {
 		ahash_request_set_crypt(req, NULL, hash->digest, 0);
-		rc = ahash_wait(crypto_ahash_final(req), &res);
+		rc = ahash_wait(crypto_ahash_final(req), &wait);
 	}
 out1:
 	ahash_request_free(req);
@@ -527,7 +505,7 @@ static int calc_buffer_ahash_atfm(const void *buf, loff_t len,
 {
 	struct ahash_request *req;
 	struct scatterlist sg;
-	struct ahash_completion res;
+	struct crypto_wait wait;
 	int rc, ahash_rc = 0;
 
 	hash->length = crypto_ahash_digestsize(tfm);
@@ -536,12 +514,12 @@ static int calc_buffer_ahash_atfm(const void *buf, loff_t len,
 	if (!req)
 		return -ENOMEM;
 
-	init_completion(&res.completion);
+	crypto_init_wait(&wait);
 	ahash_request_set_callback(req, CRYPTO_TFM_REQ_MAY_BACKLOG |
 				   CRYPTO_TFM_REQ_MAY_SLEEP,
-				   ahash_complete, &res);
+				   crypto_req_done, &wait);
 
-	rc = ahash_wait(crypto_ahash_init(req), &res);
+	rc = ahash_wait(crypto_ahash_init(req), &wait);
 	if (rc)
 		goto out;
 
@@ -551,10 +529,10 @@ static int calc_buffer_ahash_atfm(const void *buf, loff_t len,
 	ahash_rc = crypto_ahash_update(req);
 
 	/* wait for the update request to complete */
-	rc = ahash_wait(ahash_rc, &res);
+	rc = ahash_wait(ahash_rc, &wait);
 	if (!rc) {
 		ahash_request_set_crypt(req, NULL, hash->digest, 0);
-		rc = ahash_wait(crypto_ahash_final(req), &res);
+		rc = ahash_wait(crypto_ahash_final(req), &wait);
 	}
 out:
 	ahash_request_free(req);
-- 
2.1.4

  parent reply	other threads:[~2017-08-08 12:03 UTC|newest]

Thread overview: 198+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-08-08 12:03 [PATCH v4 00/19] simplify crypto wait for async op Gilad Ben-Yossef
2017-08-08 12:03 ` Gilad Ben-Yossef
2017-08-08 12:03 ` Gilad Ben-Yossef
2017-08-08 12:03 ` Gilad Ben-Yossef
2017-08-08 12:03 ` Gilad Ben-Yossef
2017-08-08 12:03 ` [PATCH v4 01/19] crypto: change transient busy return code to -EAGAIN Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03 ` Gilad Ben-Yossef
2017-08-08 12:03 ` Gilad Ben-Yossef
2017-08-08 12:03 ` [PATCH v4 02/19] crypto: ccm: use -EAGAIN for transient busy indication Gilad Ben-Yossef
2017-08-08 12:03 ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 15:24   ` Gary R Hook
     [not found]   ` <1502193834-11289-3-git-send-email-gilad-6S/DczAoZh3WXxRugSxzZg@public.gmane.org>
2017-08-08 15:24     ` Gary R Hook
2017-08-08 15:24       ` Gary R Hook
2017-08-08 15:24   ` Gary R Hook
2017-08-08 15:24     ` Gary R Hook
2017-08-08 15:24     ` Gary R Hook
2017-08-08 15:24     ` Gary R Hook
2017-08-08 15:24     ` Gary R Hook
2017-08-08 15:24     ` Gary R Hook
2017-08-09  5:18     ` Gilad Ben-Yossef
2017-08-09  5:18       ` Gilad Ben-Yossef
2017-08-09  5:18       ` Gilad Ben-Yossef
2017-08-09  5:18       ` Gilad Ben-Yossef
2017-08-09  5:18       ` Gilad Ben-Yossef
2017-08-09  5:18       ` Gilad Ben-Yossef
2017-08-08 15:24   ` Gary R Hook
2017-08-08 15:24   ` Gary R Hook
2017-08-08 12:03 ` Gilad Ben-Yossef
2017-08-08 12:03 ` [PATCH v4 03/19] crypto: remove redundant backlog checks on EBUSY Gilad Ben-Yossef
2017-08-08 12:03 ` Gilad Ben-Yossef
2017-08-08 12:03 ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03 ` [PATCH v4 04/19] crypto: marvell/cesa: " Gilad Ben-Yossef
2017-08-08 12:03 ` Gilad Ben-Yossef
2017-08-08 12:03 ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03 ` [PATCH v4 05/19] crypto: introduce crypto wait for async op Gilad Ben-Yossef
2017-08-08 12:03 ` Gilad Ben-Yossef
2017-08-08 12:03 ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03 ` [PATCH v4 06/19] crypto: move algif to generic async completion Gilad Ben-Yossef
2017-08-08 12:03 ` Gilad Ben-Yossef
2017-08-08 12:03 ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 13:10   ` Stephan Mueller
     [not found]     ` <8585274.Umn6qnzcUd-b2PLbiJbNv8ftSvlWXw0+g@public.gmane.org>
2017-08-08 13:45       ` Gilad Ben-Yossef
2017-08-08 13:45         ` Gilad Ben-Yossef
2017-08-08 13:45         ` Gilad Ben-Yossef
2017-08-08 13:45         ` Gilad Ben-Yossef
2017-08-08 13:45         ` Gilad Ben-Yossef
2017-08-08 12:03 ` [PATCH v4 07/19] crypto: move pub key " Gilad Ben-Yossef
2017-08-08 12:03 ` Gilad Ben-Yossef
2017-08-08 12:03 ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03 ` [PATCH v4 08/19] crypto: move drbg " Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03 ` Gilad Ben-Yossef
2017-08-08 12:03 ` Gilad Ben-Yossef
2017-08-08 12:03 ` [PATCH v4 09/19] crypto: move gcm " Gilad Ben-Yossef
2017-08-08 12:03 ` Gilad Ben-Yossef
2017-08-08 12:03 ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03 ` [PATCH v4 10/19] crypto: move testmgr " Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03 ` Gilad Ben-Yossef
2017-08-08 12:03 ` Gilad Ben-Yossef
2017-08-08 12:03 ` [PATCH v4 11/19] fscrypt: move " Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03 ` Gilad Ben-Yossef
2017-08-08 12:03 ` [PATCH v4 12/19] dm: move dm-verity " Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03 ` Gilad Ben-Yossef
2017-08-08 12:03 ` Gilad Ben-Yossef
2017-08-08 12:03 ` [PATCH v4 13/19] cifs: move " Gilad Ben-Yossef
2017-08-08 12:03 ` Gilad Ben-Yossef
2017-08-08 12:03 ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03 ` [PATCH v4 14/19] ima: " Gilad Ben-Yossef
2017-08-08 12:03 ` Gilad Ben-Yossef
2017-08-08 12:03 ` Gilad Ben-Yossef [this message]
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03 ` [PATCH v4 15/19] crypto: tcrypt: " Gilad Ben-Yossef
2017-08-08 12:03 ` Gilad Ben-Yossef
2017-08-08 12:03 ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03 ` [PATCH v4 16/19] crypto: talitos: " Gilad Ben-Yossef
2017-08-08 12:03 ` Gilad Ben-Yossef
2017-08-08 12:03 ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03 ` [PATCH v4 17/19] crypto: qce: " Gilad Ben-Yossef
     [not found] ` <1502193834-11289-1-git-send-email-gilad-6S/DczAoZh3WXxRugSxzZg@public.gmane.org>
2017-08-08 12:03   ` [PATCH v4 01/19] crypto: change transient busy return code to -EAGAIN Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` [PATCH v4 02/19] crypto: ccm: use -EAGAIN for transient busy indication Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` [PATCH v4 03/19] crypto: remove redundant backlog checks on EBUSY Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` [PATCH v4 04/19] crypto: marvell/cesa: " Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` [PATCH v4 05/19] crypto: introduce crypto wait for async op Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` [PATCH v4 06/19] crypto: move algif to generic async completion Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` [PATCH v4 07/19] crypto: move pub key " Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` [PATCH v4 08/19] crypto: move drbg " Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` [PATCH v4 09/19] crypto: move gcm " Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` [PATCH v4 10/19] crypto: move testmgr " Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` [PATCH v4 11/19] fscrypt: move " Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` [PATCH v4 12/19] dm: move dm-verity " Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` [PATCH v4 13/19] cifs: move " Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` [PATCH v4 14/19] ima: " Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` [PATCH v4 15/19] crypto: tcrypt: " Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` [PATCH v4 16/19] crypto: talitos: " Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` [PATCH v4 17/19] crypto: qce: " Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` [PATCH v4 18/19] crypto: mediatek: " Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` [PATCH v4 19/19] crypto: adapt api sample to use async. op wait Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03 ` [PATCH v4 17/19] crypto: qce: move to generic async completion Gilad Ben-Yossef
2017-08-08 12:03 ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03 ` [PATCH v4 18/19] crypto: mediatek: " Gilad Ben-Yossef
2017-08-08 12:03 ` Gilad Ben-Yossef
2017-08-08 12:03 ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03 ` [PATCH v4 19/19] crypto: adapt api sample to use async. op wait Gilad Ben-Yossef
2017-08-08 12:03 ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03   ` Gilad Ben-Yossef
2017-08-08 12:03 ` Gilad Ben-Yossef

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1502193834-11289-15-git-send-email-gilad@benyossef.com \
    --to=gilad@benyossef.com \
    --cc=agk@redhat.com \
    --cc=arno@natisbad.org \
    --cc=boris.brezillon@free-electrons.com \
    --cc=corbet@lwn.net \
    --cc=davem@davemloft.net \
    --cc=dhowells@redhat.com \
    --cc=dm-devel@redhat.com \
    --cc=dmitry.kasatkin@gmail.com \
    --cc=gary.hook@amd.com \
    --cc=herbert@gondor.apana.org.au \
    --cc=jaegeuk@kernel.org \
    --cc=james.l.morris@oracle.com \
    --cc=linux-crypto@v \
    --cc=matthias.bgg@gmail.com \
    --cc=ofir.drang@arm.com \
    --cc=serge@hallyn.com \
    --cc=sfrench@samba.org \
    --cc=shli@kernel.org \
    --cc=snitzer@redhat.com \
    --cc=thomas.lendacky@amd.com \
    --cc=tytso@mit.edu \
    --cc=zohar@linux.vnet.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.