Commit 1c64a7e1 authored by Herbert Xu's avatar Herbert Xu

crypto: cavium - Set DMA alignment explicitly

This driver has been implicitly relying on kmalloc alignment
to be sufficient for DMA.  This may no longer be the case with
upcoming arm64 changes.

This patch changes it to explicitly request DMA alignment from
the Crypto API.
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent 04ba54e5
...@@ -97,7 +97,7 @@ static inline u32 create_ctx_hdr(struct skcipher_request *req, u32 enc, ...@@ -97,7 +97,7 @@ static inline u32 create_ctx_hdr(struct skcipher_request *req, u32 enc,
{ {
struct crypto_skcipher *tfm = crypto_skcipher_reqtfm(req); struct crypto_skcipher *tfm = crypto_skcipher_reqtfm(req);
struct cvm_enc_ctx *ctx = crypto_skcipher_ctx(tfm); struct cvm_enc_ctx *ctx = crypto_skcipher_ctx(tfm);
struct cvm_req_ctx *rctx = skcipher_request_ctx(req); struct cvm_req_ctx *rctx = skcipher_request_ctx_dma(req);
struct fc_context *fctx = &rctx->fctx; struct fc_context *fctx = &rctx->fctx;
u32 enc_iv_len = crypto_skcipher_ivsize(tfm); u32 enc_iv_len = crypto_skcipher_ivsize(tfm);
struct cpt_request_info *req_info = &rctx->cpt_req; struct cpt_request_info *req_info = &rctx->cpt_req;
...@@ -151,7 +151,7 @@ static inline u32 create_ctx_hdr(struct skcipher_request *req, u32 enc, ...@@ -151,7 +151,7 @@ static inline u32 create_ctx_hdr(struct skcipher_request *req, u32 enc,
static inline u32 create_input_list(struct skcipher_request *req, u32 enc, static inline u32 create_input_list(struct skcipher_request *req, u32 enc,
u32 enc_iv_len) u32 enc_iv_len)
{ {
struct cvm_req_ctx *rctx = skcipher_request_ctx(req); struct cvm_req_ctx *rctx = skcipher_request_ctx_dma(req);
struct cpt_request_info *req_info = &rctx->cpt_req; struct cpt_request_info *req_info = &rctx->cpt_req;
u32 argcnt = 0; u32 argcnt = 0;
...@@ -173,7 +173,7 @@ static inline void store_cb_info(struct skcipher_request *req, ...@@ -173,7 +173,7 @@ static inline void store_cb_info(struct skcipher_request *req,
static inline void create_output_list(struct skcipher_request *req, static inline void create_output_list(struct skcipher_request *req,
u32 enc_iv_len) u32 enc_iv_len)
{ {
struct cvm_req_ctx *rctx = skcipher_request_ctx(req); struct cvm_req_ctx *rctx = skcipher_request_ctx_dma(req);
struct cpt_request_info *req_info = &rctx->cpt_req; struct cpt_request_info *req_info = &rctx->cpt_req;
u32 argcnt = 0; u32 argcnt = 0;
...@@ -193,7 +193,7 @@ static inline void create_output_list(struct skcipher_request *req, ...@@ -193,7 +193,7 @@ static inline void create_output_list(struct skcipher_request *req,
static inline int cvm_enc_dec(struct skcipher_request *req, u32 enc) static inline int cvm_enc_dec(struct skcipher_request *req, u32 enc)
{ {
struct crypto_skcipher *tfm = crypto_skcipher_reqtfm(req); struct crypto_skcipher *tfm = crypto_skcipher_reqtfm(req);
struct cvm_req_ctx *rctx = skcipher_request_ctx(req); struct cvm_req_ctx *rctx = skcipher_request_ctx_dma(req);
u32 enc_iv_len = crypto_skcipher_ivsize(tfm); u32 enc_iv_len = crypto_skcipher_ivsize(tfm);
struct fc_context *fctx = &rctx->fctx; struct fc_context *fctx = &rctx->fctx;
struct cpt_request_info *req_info = &rctx->cpt_req; struct cpt_request_info *req_info = &rctx->cpt_req;
...@@ -335,7 +335,7 @@ static int cvm_ecb_des3_setkey(struct crypto_skcipher *cipher, const u8 *key, ...@@ -335,7 +335,7 @@ static int cvm_ecb_des3_setkey(struct crypto_skcipher *cipher, const u8 *key,
static int cvm_enc_dec_init(struct crypto_skcipher *tfm) static int cvm_enc_dec_init(struct crypto_skcipher *tfm)
{ {
crypto_skcipher_set_reqsize(tfm, sizeof(struct cvm_req_ctx)); crypto_skcipher_set_reqsize_dma(tfm, sizeof(struct cvm_req_ctx));
return 0; return 0;
} }
......
...@@ -392,7 +392,7 @@ static int nitrox_rfc4106_setauthsize(struct crypto_aead *aead, ...@@ -392,7 +392,7 @@ static int nitrox_rfc4106_setauthsize(struct crypto_aead *aead,
static int nitrox_rfc4106_set_aead_rctx_sglist(struct aead_request *areq) static int nitrox_rfc4106_set_aead_rctx_sglist(struct aead_request *areq)
{ {
struct nitrox_rfc4106_rctx *rctx = aead_request_ctx(areq); struct nitrox_rfc4106_rctx *rctx = aead_request_ctx_dma(areq);
struct nitrox_aead_rctx *aead_rctx = &rctx->base; struct nitrox_aead_rctx *aead_rctx = &rctx->base;
unsigned int assoclen = areq->assoclen - GCM_RFC4106_IV_SIZE; unsigned int assoclen = areq->assoclen - GCM_RFC4106_IV_SIZE;
struct scatterlist *sg; struct scatterlist *sg;
...@@ -424,7 +424,7 @@ static int nitrox_rfc4106_set_aead_rctx_sglist(struct aead_request *areq) ...@@ -424,7 +424,7 @@ static int nitrox_rfc4106_set_aead_rctx_sglist(struct aead_request *areq)
static void nitrox_rfc4106_callback(void *arg, int err) static void nitrox_rfc4106_callback(void *arg, int err)
{ {
struct aead_request *areq = arg; struct aead_request *areq = arg;
struct nitrox_rfc4106_rctx *rctx = aead_request_ctx(areq); struct nitrox_rfc4106_rctx *rctx = aead_request_ctx_dma(areq);
struct nitrox_kcrypt_request *nkreq = &rctx->base.nkreq; struct nitrox_kcrypt_request *nkreq = &rctx->base.nkreq;
free_src_sglist(nkreq); free_src_sglist(nkreq);
...@@ -441,7 +441,7 @@ static int nitrox_rfc4106_enc(struct aead_request *areq) ...@@ -441,7 +441,7 @@ static int nitrox_rfc4106_enc(struct aead_request *areq)
{ {
struct crypto_aead *aead = crypto_aead_reqtfm(areq); struct crypto_aead *aead = crypto_aead_reqtfm(areq);
struct nitrox_crypto_ctx *nctx = crypto_aead_ctx(aead); struct nitrox_crypto_ctx *nctx = crypto_aead_ctx(aead);
struct nitrox_rfc4106_rctx *rctx = aead_request_ctx(areq); struct nitrox_rfc4106_rctx *rctx = aead_request_ctx_dma(areq);
struct nitrox_aead_rctx *aead_rctx = &rctx->base; struct nitrox_aead_rctx *aead_rctx = &rctx->base;
struct se_crypto_request *creq = &aead_rctx->nkreq.creq; struct se_crypto_request *creq = &aead_rctx->nkreq.creq;
int ret; int ret;
...@@ -472,7 +472,7 @@ static int nitrox_rfc4106_enc(struct aead_request *areq) ...@@ -472,7 +472,7 @@ static int nitrox_rfc4106_enc(struct aead_request *areq)
static int nitrox_rfc4106_dec(struct aead_request *areq) static int nitrox_rfc4106_dec(struct aead_request *areq)
{ {
struct crypto_aead *aead = crypto_aead_reqtfm(areq); struct crypto_aead *aead = crypto_aead_reqtfm(areq);
struct nitrox_crypto_ctx *nctx = crypto_aead_ctx(aead); struct nitrox_crypto_ctx *nctx = crypto_aead_ctx_dma(aead);
struct nitrox_rfc4106_rctx *rctx = aead_request_ctx(areq); struct nitrox_rfc4106_rctx *rctx = aead_request_ctx(areq);
struct nitrox_aead_rctx *aead_rctx = &rctx->base; struct nitrox_aead_rctx *aead_rctx = &rctx->base;
struct se_crypto_request *creq = &aead_rctx->nkreq.creq; struct se_crypto_request *creq = &aead_rctx->nkreq.creq;
...@@ -510,7 +510,7 @@ static int nitrox_rfc4106_init(struct crypto_aead *aead) ...@@ -510,7 +510,7 @@ static int nitrox_rfc4106_init(struct crypto_aead *aead)
if (ret) if (ret)
return ret; return ret;
crypto_aead_set_reqsize(aead, sizeof(struct aead_request) + crypto_aead_set_reqsize_dma(aead, sizeof(struct aead_request) +
sizeof(struct nitrox_rfc4106_rctx)); sizeof(struct nitrox_rfc4106_rctx));
return 0; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment