diff --git a/drivers/crypto/rockchip/cryptodev_linux/ioctl.c b/drivers/crypto/rockchip/cryptodev_linux/ioctl.c index 0ad4400e1974..032b016e476b 100644 --- a/drivers/crypto/rockchip/cryptodev_linux/ioctl.c +++ b/drivers/crypto/rockchip/cryptodev_linux/ioctl.c @@ -131,6 +131,8 @@ crypto_create_session(struct fcrypt *fcr, struct session_op *sop) return -EINVAL; } + memset(&keys, 0x00, sizeof(keys)); + switch (sop->cipher) { case 0: break; diff --git a/drivers/crypto/rockchip/cryptodev_linux/rk_cryptodev.c b/drivers/crypto/rockchip/cryptodev_linux/rk_cryptodev.c index 4c744f300982..bf85f657e619 100644 --- a/drivers/crypto/rockchip/cryptodev_linux/rk_cryptodev.c +++ b/drivers/crypto/rockchip/cryptodev_linux/rk_cryptodev.c @@ -636,7 +636,7 @@ static int crypto_rsa_run(struct fcrypt *fcr, struct kernel_crypt_rsa_op *krop) const char *driver = "rsa-rk"; struct crypto_akcipher *tfm = NULL; struct akcipher_request *req = NULL; - struct crypto_wait wait; + DECLARE_CRYPTO_WAIT(wait); struct scatterlist src, dst; bool is_priv_key = (rop->flags & COP_FLAG_RSA_PRIV) == COP_FLAG_RSA_PRIV; diff --git a/drivers/crypto/rockchip/cryptodev_linux/zc.c b/drivers/crypto/rockchip/cryptodev_linux/zc.c index 1fc5887d2da1..7671c3131888 100644 --- a/drivers/crypto/rockchip/cryptodev_linux/zc.c +++ b/drivers/crypto/rockchip/cryptodev_linux/zc.c @@ -90,7 +90,7 @@ int __cryptodev_get_userbuf(uint8_t __user *addr, uint32_t len, int write, #else mmap_read_unlock(mm); #endif - if (ret != pgcount) + if (ret < 0 || ret != pgcount) return -EINVAL; sg_init_table(sg, pgcount);