hwrng: n2 - limit error spewage when self-test fails
authorShannon Nelson <shannon.nelson@oracle.com>
Thu, 12 Jan 2017 18:52:46 +0000 (10:52 -0800)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 13 Jan 2017 10:47:18 +0000 (18:47 +0800)
If the self-test fails, it probably won't actually suddenly
start working.  Currently, this causes an endless spew of
error messages on the console and in the logs, so this patch
adds a limiter to the test.

Reported-by: Sowmini Varadhan <sowmini.varadhan@oracle.com>
Signed-off-by: Shannon Nelson <shannon.nelson@oracle.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/char/hw_random/n2-drv.c

index 3b06c1d6cfb280a18bd13716bfdbf2c38fa085ed..102560ffed44a036225e3522b9f2e154c0d0ca56 100644 (file)
@@ -589,6 +589,7 @@ static void n2rng_work(struct work_struct *work)
 {
        struct n2rng *np = container_of(work, struct n2rng, work.work);
        int err = 0;
+       static int retries = 4;
 
        if (!(np->flags & N2RNG_FLAG_CONTROL)) {
                err = n2rng_guest_check(np);
@@ -606,7 +607,9 @@ static void n2rng_work(struct work_struct *work)
                dev_info(&np->op->dev, "RNG ready\n");
        }
 
-       if (err && !(np->flags & N2RNG_FLAG_SHUTDOWN))
+       if (--retries == 0)
+               dev_err(&np->op->dev, "Self-test retries failed, RNG not ready\n");
+       else if (err && !(np->flags & N2RNG_FLAG_SHUTDOWN))
                schedule_delayed_work(&np->work, HZ * 2);
 }