hwrng: omap3-rom - Handle return value of clk_prepare_enable
authorArvind Yadav <arvind.yadav.cs@gmail.com>
Mon, 15 May 2017 08:22:03 +0000 (13:52 +0530)
committerHerbert Xu <herbert@gondor.apana.org.au>
Tue, 23 May 2017 04:52:03 +0000 (12:52 +0800)
Here, Clock enable can failed. So adding an error check for
clk_prepare_enable.

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/char/hw_random/omap3-rom-rng.c

index 37a58d78aab317a8a97b39ebec02df1fb58fcaae..38b719017186ef4f27e3b93a013165f5d9bd8d5d 100644 (file)
@@ -53,7 +53,10 @@ static int omap3_rom_rng_get_random(void *buf, unsigned int count)
 
        cancel_delayed_work_sync(&idle_work);
        if (rng_idle) {
-               clk_prepare_enable(rng_clk);
+               r = clk_prepare_enable(rng_clk);
+               if (r)
+                       return r;
+
                r = omap3_rom_rng_call(0, 0, RNG_GEN_PRNG_HW_INIT);
                if (r != 0) {
                        clk_disable_unprepare(rng_clk);
@@ -88,6 +91,8 @@ static struct hwrng omap3_rom_rng_ops = {
 
 static int omap3_rom_rng_probe(struct platform_device *pdev)
 {
+       int ret = 0;
+
        pr_info("initializing\n");
 
        omap3_rom_rng_call = pdev->dev.platform_data;
@@ -104,7 +109,9 @@ static int omap3_rom_rng_probe(struct platform_device *pdev)
        }
 
        /* Leave the RNG in reset state. */
-       clk_prepare_enable(rng_clk);
+       ret = clk_prepare_enable(rng_clk);
+       if (ret)
+               return ret;
        omap3_rom_rng_idle(0);
 
        return hwrng_register(&omap3_rom_rng_ops);