diff --git a/drivers/char/hw_random/Kconfig b/drivers/char/hw_random/Kconfig index da75e5d9e544..21cff44b25f0 100644 --- a/drivers/char/hw_random/Kconfig +++ b/drivers/char/hw_random/Kconfig @@ -335,7 +335,7 @@ config HW_RANDOM_TPM config HW_RANDOM_MSM_LEGACY tristate "Qualcomm MSM Random Number Generator support (LEGACY)" - depends on HW_RANDOM && ARCH_MSM + depends on HW_RANDOM && ARCH_QCOM select CRYPTO_AES select CRYPTO_ECB default n @@ -351,7 +351,7 @@ config HW_RANDOM_MSM_LEGACY config HW_RANDOM_MSM tristate "Qualcomm SoCs Random Number Generator support" depends on HW_RANDOM && ARCH_QCOM - default HW_RANDOM + default n ---help--- This driver provides kernel-side support for the Random Number Generator hardware found on Qualcomm SoCs. diff --git a/drivers/char/hw_random/msm_rng.c b/drivers/char/hw_random/msm_rng.c index e3dda3e21de4..ba82dbfd0625 100644 --- a/drivers/char/hw_random/msm_rng.c +++ b/drivers/char/hw_random/msm_rng.c @@ -375,7 +375,8 @@ static int msm_rng_remove(struct platform_device *pdev) return 0; } -static int qrng_get_random(struct crypto_rng *tfm, u8 *rdata, +static int qrng_get_random(struct crypto_rng *tfm, const u8 *src, + unsigned int slen, u8 *rdata, unsigned int dlen) { int sizeread = 0; @@ -410,27 +411,23 @@ err_exit: } -static int qrng_reset(struct crypto_rng *tfm, u8 *seed, unsigned int slen) +static int qrng_reset(struct crypto_rng *tfm, const u8 *seed, unsigned int slen) { return 0; } -static struct crypto_alg rng_alg = { +static struct rng_alg rng_algs[] = { { + .generate = qrng_get_random, + .seed = qrng_reset, + .seedsize = 0, + .base = { .cra_name = "qrng", .cra_driver_name = "fips_hw_qrng", .cra_priority = 300, - .cra_flags = CRYPTO_ALG_TYPE_RNG, .cra_ctxsize = 0, - .cra_type = &crypto_rng_type, .cra_module = THIS_MODULE, - .cra_u = { - .rng = { - .rng_make_random = qrng_get_random, - .rng_reset = qrng_reset, - .seedsize = 0, - } - } -}; + } +} }; static struct of_device_id qrng_match[] = { { .compatible = "qcom,msm-rng", @@ -459,7 +456,7 @@ static int __init msm_rng_init(void) __func__, ret); goto err_exit; } - ret = crypto_register_alg(&rng_alg); + ret = crypto_register_rngs(rng_algs, ARRAY_SIZE(rng_algs)); if (ret) { pr_err("%s: crypto_register_algs error:%d\n", __func__, ret); @@ -474,7 +471,7 @@ module_init(msm_rng_init); static void __exit msm_rng_exit(void) { - crypto_unregister_alg(&rng_alg); + crypto_unregister_rngs(rng_algs, ARRAY_SIZE(rng_algs)); platform_driver_unregister(&rng_driver); }