diff options
Diffstat (limited to 'drivers/crypto/stm32/stm32-cryp.c')
| -rw-r--r-- | drivers/crypto/stm32/stm32-cryp.c | 38 | 
1 files changed, 7 insertions, 31 deletions
diff --git a/drivers/crypto/stm32/stm32-cryp.c b/drivers/crypto/stm32/stm32-cryp.c index 98ae02826e8f..ba5ea6434f9c 100644 --- a/drivers/crypto/stm32/stm32-cryp.c +++ b/drivers/crypto/stm32/stm32-cryp.c @@ -15,7 +15,7 @@  #include <linux/reset.h>  #include <crypto/aes.h> -#include <crypto/des.h> +#include <crypto/internal/des.h>  #include <crypto/engine.h>  #include <crypto/scatterwalk.h>  #include <crypto/internal/aead.h> @@ -767,35 +767,15 @@ static int stm32_cryp_aes_setkey(struct crypto_ablkcipher *tfm, const u8 *key,  static int stm32_cryp_des_setkey(struct crypto_ablkcipher *tfm, const u8 *key,  				 unsigned int keylen)  { -	u32 tmp[DES_EXPKEY_WORDS]; - -	if (keylen != DES_KEY_SIZE) -		return -EINVAL; - -	if ((crypto_ablkcipher_get_flags(tfm) & -	     CRYPTO_TFM_REQ_FORBID_WEAK_KEYS) && -	    unlikely(!des_ekey(tmp, key))) { -		crypto_ablkcipher_set_flags(tfm, CRYPTO_TFM_RES_WEAK_KEY); -		return -EINVAL; -	} - -	return stm32_cryp_setkey(tfm, key, keylen); +	return verify_ablkcipher_des_key(tfm, key) ?: +	       stm32_cryp_setkey(tfm, key, keylen);  }  static int stm32_cryp_tdes_setkey(struct crypto_ablkcipher *tfm, const u8 *key,  				  unsigned int keylen)  { -	u32 flags; -	int err; - -	flags = crypto_ablkcipher_get_flags(tfm); -	err = __des3_verify_key(&flags, key); -	if (unlikely(err)) { -		crypto_ablkcipher_set_flags(tfm, flags); -		return err; -	} - -	return stm32_cryp_setkey(tfm, key, keylen); +	return verify_ablkcipher_des3_key(tfm, key) ?: +	       stm32_cryp_setkey(tfm, key, keylen);  }  static int stm32_cryp_aes_aead_setkey(struct crypto_aead *tfm, const u8 *key, @@ -1955,7 +1935,6 @@ static int stm32_cryp_probe(struct platform_device *pdev)  {  	struct device *dev = &pdev->dev;  	struct stm32_cryp *cryp; -	struct resource *res;  	struct reset_control *rst;  	int irq, ret; @@ -1969,16 +1948,13 @@ static int stm32_cryp_probe(struct platform_device *pdev)  	cryp->dev = dev; -	res = platform_get_resource(pdev, IORESOURCE_MEM, 0); -	cryp->regs = devm_ioremap_resource(dev, res); +	cryp->regs = devm_platform_ioremap_resource(pdev, 0);  	if (IS_ERR(cryp->regs))  		return PTR_ERR(cryp->regs);  	irq = platform_get_irq(pdev, 0); -	if (irq < 0) { -		dev_err(dev, "Cannot get IRQ resource\n"); +	if (irq < 0)  		return irq; -	}  	ret = devm_request_threaded_irq(dev, irq, stm32_cryp_irq,  					stm32_cryp_irq_thread, IRQF_ONESHOT,  |