diff --git a/drivers/crypto/rockchip/rk_crypto_core.c b/drivers/crypto/rockchip/rk_crypto_core.c index 2a9cf2da6372..7b1c6ed81c45 100644 --- a/drivers/crypto/rockchip/rk_crypto_core.c +++ b/drivers/crypto/rockchip/rk_crypto_core.c @@ -515,7 +515,9 @@ static int rk_crypto_register(struct rk_crypto_dev *rk_dev) algs_name = soc_data->valid_algs_name; - rk_dev->request_crypto(rk_dev, __func__); + err = rk_dev->request_crypto(rk_dev, __func__); + if (err) + return err; for (i = 0; i < soc_data->valid_algs_num; i++, algs_name++) { tmp_algs = rk_crypto_find_algs(rk_dev, *algs_name); @@ -622,11 +624,11 @@ static void rk_crypto_unregister(struct rk_crypto_dev *rk_dev) rk_dev->release_crypto(rk_dev, __func__); } -static void rk_crypto_request(struct rk_crypto_dev *rk_dev, const char *name) +static int rk_crypto_request(struct rk_crypto_dev *rk_dev, const char *name) { CRYPTO_TRACE("Crypto is requested by %s\n", name); - rk_crypto_enable_clk(rk_dev); + return rk_crypto_enable_clk(rk_dev); } static void rk_crypto_release(struct rk_crypto_dev *rk_dev, const char *name) diff --git a/drivers/crypto/rockchip/rk_crypto_core.h b/drivers/crypto/rockchip/rk_crypto_core.h index 8421154bd123..a2d4fbd14f78 100644 --- a/drivers/crypto/rockchip/rk_crypto_core.h +++ b/drivers/crypto/rockchip/rk_crypto_core.h @@ -95,7 +95,7 @@ struct rk_crypto_dev { struct timer_list timer; bool busy; - void (*request_crypto)(struct rk_crypto_dev *rk_dev, const char *name); + int (*request_crypto)(struct rk_crypto_dev *rk_dev, const char *name); void (*release_crypto)(struct rk_crypto_dev *rk_dev, const char *name); int (*load_data)(struct rk_crypto_dev *rk_dev, struct scatterlist *sg_src,