crypto: caam - refactor RSA private key _done callbacks
Create a common rsa_priv_f_done function, which based on private key form calls the specific unmap function. Signed-off-by: Iuliana Prodan <iuliana.prodan@nxp.com> Reviewed-by: Horia Geanta <horia.geanta@nxp.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
committed by
Herbert Xu
parent
2ba1e79831
commit
d53e44fe98
@@ -132,10 +132,13 @@ static void rsa_pub_done(struct device *dev, u32 *desc, u32 err, void *context)
|
|||||||
akcipher_request_complete(req, ecode);
|
akcipher_request_complete(req, ecode);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void rsa_priv_f1_done(struct device *dev, u32 *desc, u32 err,
|
static void rsa_priv_f_done(struct device *dev, u32 *desc, u32 err,
|
||||||
void *context)
|
void *context)
|
||||||
{
|
{
|
||||||
struct akcipher_request *req = context;
|
struct akcipher_request *req = context;
|
||||||
|
struct crypto_akcipher *tfm = crypto_akcipher_reqtfm(req);
|
||||||
|
struct caam_rsa_ctx *ctx = akcipher_tfm_ctx(tfm);
|
||||||
|
struct caam_rsa_key *key = &ctx->key;
|
||||||
struct rsa_edesc *edesc;
|
struct rsa_edesc *edesc;
|
||||||
int ecode = 0;
|
int ecode = 0;
|
||||||
|
|
||||||
@@ -144,45 +147,17 @@ static void rsa_priv_f1_done(struct device *dev, u32 *desc, u32 err,
|
|||||||
|
|
||||||
edesc = container_of(desc, struct rsa_edesc, hw_desc[0]);
|
edesc = container_of(desc, struct rsa_edesc, hw_desc[0]);
|
||||||
|
|
||||||
rsa_priv_f1_unmap(dev, edesc, req);
|
switch (key->priv_form) {
|
||||||
rsa_io_unmap(dev, edesc, req);
|
case FORM1:
|
||||||
kfree(edesc);
|
rsa_priv_f1_unmap(dev, edesc, req);
|
||||||
|
break;
|
||||||
|
case FORM2:
|
||||||
|
rsa_priv_f2_unmap(dev, edesc, req);
|
||||||
|
break;
|
||||||
|
case FORM3:
|
||||||
|
rsa_priv_f3_unmap(dev, edesc, req);
|
||||||
|
}
|
||||||
|
|
||||||
akcipher_request_complete(req, ecode);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void rsa_priv_f2_done(struct device *dev, u32 *desc, u32 err,
|
|
||||||
void *context)
|
|
||||||
{
|
|
||||||
struct akcipher_request *req = context;
|
|
||||||
struct rsa_edesc *edesc;
|
|
||||||
int ecode = 0;
|
|
||||||
|
|
||||||
if (err)
|
|
||||||
ecode = caam_jr_strstatus(dev, err);
|
|
||||||
|
|
||||||
edesc = container_of(desc, struct rsa_edesc, hw_desc[0]);
|
|
||||||
|
|
||||||
rsa_priv_f2_unmap(dev, edesc, req);
|
|
||||||
rsa_io_unmap(dev, edesc, req);
|
|
||||||
kfree(edesc);
|
|
||||||
|
|
||||||
akcipher_request_complete(req, ecode);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void rsa_priv_f3_done(struct device *dev, u32 *desc, u32 err,
|
|
||||||
void *context)
|
|
||||||
{
|
|
||||||
struct akcipher_request *req = context;
|
|
||||||
struct rsa_edesc *edesc;
|
|
||||||
int ecode = 0;
|
|
||||||
|
|
||||||
if (err)
|
|
||||||
ecode = caam_jr_strstatus(dev, err);
|
|
||||||
|
|
||||||
edesc = container_of(desc, struct rsa_edesc, hw_desc[0]);
|
|
||||||
|
|
||||||
rsa_priv_f3_unmap(dev, edesc, req);
|
|
||||||
rsa_io_unmap(dev, edesc, req);
|
rsa_io_unmap(dev, edesc, req);
|
||||||
kfree(edesc);
|
kfree(edesc);
|
||||||
|
|
||||||
@@ -691,7 +666,7 @@ static int caam_rsa_dec_priv_f1(struct akcipher_request *req)
|
|||||||
/* Initialize Job Descriptor */
|
/* Initialize Job Descriptor */
|
||||||
init_rsa_priv_f1_desc(edesc->hw_desc, &edesc->pdb.priv_f1);
|
init_rsa_priv_f1_desc(edesc->hw_desc, &edesc->pdb.priv_f1);
|
||||||
|
|
||||||
ret = caam_jr_enqueue(jrdev, edesc->hw_desc, rsa_priv_f1_done, req);
|
ret = caam_jr_enqueue(jrdev, edesc->hw_desc, rsa_priv_f_done, req);
|
||||||
if (!ret)
|
if (!ret)
|
||||||
return -EINPROGRESS;
|
return -EINPROGRESS;
|
||||||
|
|
||||||
@@ -724,7 +699,7 @@ static int caam_rsa_dec_priv_f2(struct akcipher_request *req)
|
|||||||
/* Initialize Job Descriptor */
|
/* Initialize Job Descriptor */
|
||||||
init_rsa_priv_f2_desc(edesc->hw_desc, &edesc->pdb.priv_f2);
|
init_rsa_priv_f2_desc(edesc->hw_desc, &edesc->pdb.priv_f2);
|
||||||
|
|
||||||
ret = caam_jr_enqueue(jrdev, edesc->hw_desc, rsa_priv_f2_done, req);
|
ret = caam_jr_enqueue(jrdev, edesc->hw_desc, rsa_priv_f_done, req);
|
||||||
if (!ret)
|
if (!ret)
|
||||||
return -EINPROGRESS;
|
return -EINPROGRESS;
|
||||||
|
|
||||||
@@ -757,7 +732,7 @@ static int caam_rsa_dec_priv_f3(struct akcipher_request *req)
|
|||||||
/* Initialize Job Descriptor */
|
/* Initialize Job Descriptor */
|
||||||
init_rsa_priv_f3_desc(edesc->hw_desc, &edesc->pdb.priv_f3);
|
init_rsa_priv_f3_desc(edesc->hw_desc, &edesc->pdb.priv_f3);
|
||||||
|
|
||||||
ret = caam_jr_enqueue(jrdev, edesc->hw_desc, rsa_priv_f3_done, req);
|
ret = caam_jr_enqueue(jrdev, edesc->hw_desc, rsa_priv_f_done, req);
|
||||||
if (!ret)
|
if (!ret)
|
||||||
return -EINPROGRESS;
|
return -EINPROGRESS;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user