| .. | .. |
|---|
| 331 | 331 | struct crypto_skcipher *tfm = crypto_skcipher_reqtfm(req); |
|---|
| 332 | 332 | struct rk_crypto_algt *algt = rk_cipher_get_algt(tfm); |
|---|
| 333 | 333 | struct rk_alg_ctx *alg_ctx = rk_cipher_alg_ctx(rk_dev); |
|---|
| 334 | | - unsigned long flags; |
|---|
| 335 | 334 | int err = 0; |
|---|
| 336 | 335 | |
|---|
| 337 | 336 | alg_ctx->left_bytes = req->cryptlen; |
|---|
| .. | .. |
|---|
| 345 | 344 | |
|---|
| 346 | 345 | CRYPTO_TRACE("total = %u", alg_ctx->total); |
|---|
| 347 | 346 | |
|---|
| 348 | | - spin_lock_irqsave(&rk_dev->lock, flags); |
|---|
| 349 | 347 | alg_ctx->ops.hw_init(rk_dev, algt->algo, algt->mode); |
|---|
| 350 | 348 | err = rk_set_data_start(rk_dev); |
|---|
| 351 | | - spin_unlock_irqrestore(&rk_dev->lock, flags); |
|---|
| 349 | + |
|---|
| 352 | 350 | return err; |
|---|
| 353 | 351 | } |
|---|
| 354 | 352 | |
|---|
| .. | .. |
|---|
| 443 | 441 | struct rk_crypto_algt *algt = rk_aead_get_algt(tfm); |
|---|
| 444 | 442 | struct rk_alg_ctx *alg_ctx = rk_cipher_alg_ctx(rk_dev); |
|---|
| 445 | 443 | unsigned int total = 0, authsize; |
|---|
| 446 | | - unsigned long flags; |
|---|
| 447 | 444 | int err = 0; |
|---|
| 448 | 445 | |
|---|
| 449 | 446 | total = req->cryptlen + req->assoclen; |
|---|
| .. | .. |
|---|
| 464 | 461 | CRYPTO_TRACE("is_enc = %d, authsize = %u, cryptlen = %u, total = %u, assoclen = %u", |
|---|
| 465 | 462 | ctx->is_enc, authsize, req->cryptlen, alg_ctx->total, alg_ctx->assoclen); |
|---|
| 466 | 463 | |
|---|
| 467 | | - spin_lock_irqsave(&rk_dev->lock, flags); |
|---|
| 468 | 464 | alg_ctx->ops.hw_init(rk_dev, algt->algo, algt->mode); |
|---|
| 469 | 465 | err = rk_set_data_start(rk_dev); |
|---|
| 470 | | - spin_unlock_irqrestore(&rk_dev->lock, flags); |
|---|
| 466 | + |
|---|
| 471 | 467 | return err; |
|---|
| 472 | 468 | } |
|---|
| 473 | 469 | |
|---|
| 474 | 470 | int rk_aead_gcm_setauthsize(struct crypto_aead *tfm, unsigned int authsize) |
|---|
| 475 | 471 | { |
|---|
| 476 | | - /* Same as crypto_gcm_authsize() from crypto/gcm.c */ |
|---|
| 477 | | - switch (authsize) { |
|---|
| 478 | | - case 4: |
|---|
| 479 | | - case 8: |
|---|
| 480 | | - case 12: |
|---|
| 481 | | - case 13: |
|---|
| 482 | | - case 14: |
|---|
| 483 | | - case 15: |
|---|
| 484 | | - case 16: |
|---|
| 485 | | - break; |
|---|
| 486 | | - default: |
|---|
| 487 | | - return -EINVAL; |
|---|
| 488 | | - } |
|---|
| 489 | | - |
|---|
| 490 | | - return 0; |
|---|
| 472 | + return crypto_gcm_check_authsize(authsize); |
|---|
| 491 | 473 | } |
|---|
| 492 | 474 | |
|---|
| 493 | 475 | int rk_aead_handle_req(struct rk_crypto_dev *rk_dev, struct aead_request *req) |
|---|