diff mbox

crypto: mxs-dcp: Add empty hash export and import

Message ID 4f3389a1-d6aa-b3cc-2299-d638058ddd48@partner.samsung.com (mailing list archive)
State Superseded
Delegated to: Herbert Xu
Headers show

Commit Message

Kamil Konieczny Jan. 16, 2018, 4:16 p.m. UTC
Crypto framework will require async hash export/import, so add empty
functions to prevent OOPS.

Signed-off-by: Kamil Konieczny <k.konieczny@partner.samsung.com>
---
 drivers/crypto/mxs-dcp.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

Comments

Marek Vasut Jan. 16, 2018, 4:56 p.m. UTC | #1
On 01/16/2018 05:16 PM, Kamil Konieczny wrote:
> Crypto framework will require async hash export/import, so add empty
> functions to prevent OOPS.

Shouldn't this be handled on the subsystem level with some

if (foo->bar)
 foo->bar();

instead?

> Signed-off-by: Kamil Konieczny <k.konieczny@partner.samsung.com>
> ---
>  drivers/crypto/mxs-dcp.c | 14 ++++++++++++++
>  1 file changed, 14 insertions(+)
> 
> diff --git a/drivers/crypto/mxs-dcp.c b/drivers/crypto/mxs-dcp.c
> index 764be3e6933c..a10c418d4e5c 100644
> --- a/drivers/crypto/mxs-dcp.c
> +++ b/drivers/crypto/mxs-dcp.c
> @@ -759,6 +759,16 @@ static int dcp_sha_digest(struct ahash_request *req)
>  	return dcp_sha_finup(req);
>  }
>  
> +static int dcp_sha_noimport(struct ahash_request *req, const void *in)
> +{
> +	return -ENOSYS;
> +}
> +
> +static int dcp_sha_noexport(struct ahash_request *req, void *out)
> +{
> +	return -ENOSYS;
> +}
> +
>  static int dcp_sha_cra_init(struct crypto_tfm *tfm)
>  {
>  	crypto_ahash_set_reqsize(__crypto_ahash_cast(tfm),
> @@ -829,6 +839,8 @@ static struct ahash_alg dcp_sha1_alg = {
>  	.final	= dcp_sha_final,
>  	.finup	= dcp_sha_finup,
>  	.digest	= dcp_sha_digest,
> +	.import = dcp_sha_noimport,
> +	.export = dcp_sha_noexport,
>  	.halg	= {
>  		.digestsize	= SHA1_DIGEST_SIZE,
>  		.base		= {
> @@ -853,6 +865,8 @@ static struct ahash_alg dcp_sha256_alg = {
>  	.final	= dcp_sha_final,
>  	.finup	= dcp_sha_finup,
>  	.digest	= dcp_sha_digest,
> +	.import = dcp_sha_noimport,
> +	.export = dcp_sha_noexport,
>  	.halg	= {
>  		.digestsize	= SHA256_DIGEST_SIZE,
>  		.base		= {
>
Fabio Estevam Jan. 16, 2018, 5:28 p.m. UTC | #2
Hi Kamil,

On Tue, Jan 16, 2018 at 2:16 PM, Kamil Konieczny
<k.konieczny@partner.samsung.com> wrote:
> Crypto framework will require async hash export/import, so add empty
> functions to prevent OOPS.

Which Oops exactly are you getting?

Just booted 4.14.13 and the mxs-dcp driver does not even probe successfully:

[    2.455404] mxs-dcp 80028000.dcp: Failed to register sha1 hash!
[    2.464042] mxs-dcp: probe of 80028000.dcp failed with error -22
Kamil Konieczny Jan. 16, 2018, 5:33 p.m. UTC | #3
On 16.01.2018 17:56, Marek Vasut wrote:
> On 01/16/2018 05:16 PM, Kamil Konieczny wrote:
>> Crypto framework will require async hash export/import, so add empty
>> functions to prevent OOPS.
> 
> Shouldn't this be handled on the subsystem level with some
> 
> if (foo->bar)
>  foo->bar();
> 
> instead?

I am sorry, I should write more elaborate description for patch.

It is handled by subsystem. Most drivers have them, and testmgr is testing for 
export/import and drivers without them fail internal crypto tests,
so I prepared patch which removed these two wrappers from crypto framework.

In summary: export/import are now required, so crypto framework can work properly.
Kamil Konieczny Jan. 16, 2018, 6:28 p.m. UTC | #4
On 16.01.2018 18:28, Fabio Estevam wrote:
> Hi Kamil,
> 
> On Tue, Jan 16, 2018 at 2:16 PM, Kamil Konieczny
> <k.konieczny@partner.samsung.com> wrote:
>> Crypto framework will require async hash export/import, so add empty
>> functions to prevent OOPS.
> 
> Which Oops exactly are you getting?

None now, it is for preparation for patch removing export/import wrappers.

> 
> Just booted 4.14.13 and the mxs-dcp driver does not even probe successfully:
> 
> [    2.455404] mxs-dcp 80028000.dcp: Failed to register sha1 hash!
> [    2.464042] mxs-dcp: probe of 80028000.dcp failed with error -22
> 

With this option turned on in config:

crypto: Disable run-time self tests 

driver should load. Can you verify ?

Btw, there is no maintainer for this file.
Kamil Konieczny Jan. 18, 2018, 5:53 p.m. UTC | #5
Please drop this as I will resend it as part of patchset.

On 16.01.2018 17:16, Kamil Konieczny wrote:
> Crypto framework will require async hash export/import, so add empty
> functions to prevent OOPS.
> 
> Signed-off-by: Kamil Konieczny <k.konieczny@partner.samsung.com>
> ---
>  drivers/crypto/mxs-dcp.c | 14 ++++++++++++++
>  1 file changed, 14 insertions(+)
> 
> diff --git a/drivers/crypto/mxs-dcp.c b/drivers/crypto/mxs-dcp.c
> index 764be3e6933c..a10c418d4e5c 100644
> --- a/drivers/crypto/mxs-dcp.c
> +++ b/drivers/crypto/mxs-dcp.c
> @@ -759,6 +759,16 @@ static int dcp_sha_digest(struct ahash_request *req)
>  	return dcp_sha_finup(req);
>  }
>  
> +static int dcp_sha_noimport(struct ahash_request *req, const void *in)
> +{
> +	return -ENOSYS;
> +}
> +
> +static int dcp_sha_noexport(struct ahash_request *req, void *out)
> +{
> +	return -ENOSYS;
> +}
> +
>  static int dcp_sha_cra_init(struct crypto_tfm *tfm)
>  {
>  	crypto_ahash_set_reqsize(__crypto_ahash_cast(tfm),
> @@ -829,6 +839,8 @@ static struct ahash_alg dcp_sha1_alg = {
>  	.final	= dcp_sha_final,
>  	.finup	= dcp_sha_finup,
>  	.digest	= dcp_sha_digest,
> +	.import = dcp_sha_noimport,
> +	.export = dcp_sha_noexport,
>  	.halg	= {
>  		.digestsize	= SHA1_DIGEST_SIZE,
>  		.base		= {
> @@ -853,6 +865,8 @@ static struct ahash_alg dcp_sha256_alg = {
>  	.final	= dcp_sha_final,
>  	.finup	= dcp_sha_finup,
>  	.digest	= dcp_sha_digest,
> +	.import = dcp_sha_noimport,
> +	.export = dcp_sha_noexport,
>  	.halg	= {
>  		.digestsize	= SHA256_DIGEST_SIZE,
>  		.base		= {
>
diff mbox

Patch

diff --git a/drivers/crypto/mxs-dcp.c b/drivers/crypto/mxs-dcp.c
index 764be3e6933c..a10c418d4e5c 100644
--- a/drivers/crypto/mxs-dcp.c
+++ b/drivers/crypto/mxs-dcp.c
@@ -759,6 +759,16 @@  static int dcp_sha_digest(struct ahash_request *req)
 	return dcp_sha_finup(req);
 }
 
+static int dcp_sha_noimport(struct ahash_request *req, const void *in)
+{
+	return -ENOSYS;
+}
+
+static int dcp_sha_noexport(struct ahash_request *req, void *out)
+{
+	return -ENOSYS;
+}
+
 static int dcp_sha_cra_init(struct crypto_tfm *tfm)
 {
 	crypto_ahash_set_reqsize(__crypto_ahash_cast(tfm),
@@ -829,6 +839,8 @@  static struct ahash_alg dcp_sha1_alg = {
 	.final	= dcp_sha_final,
 	.finup	= dcp_sha_finup,
 	.digest	= dcp_sha_digest,
+	.import = dcp_sha_noimport,
+	.export = dcp_sha_noexport,
 	.halg	= {
 		.digestsize	= SHA1_DIGEST_SIZE,
 		.base		= {
@@ -853,6 +865,8 @@  static struct ahash_alg dcp_sha256_alg = {
 	.final	= dcp_sha_final,
 	.finup	= dcp_sha_finup,
 	.digest	= dcp_sha_digest,
+	.import = dcp_sha_noimport,
+	.export = dcp_sha_noexport,
 	.halg	= {
 		.digestsize	= SHA256_DIGEST_SIZE,
 		.base		= {