diff options
Diffstat (limited to 'drivers/char/hw_random/amd-rng.c')
| -rw-r--r-- | drivers/char/hw_random/amd-rng.c | 9 | 
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/char/hw_random/amd-rng.c b/drivers/char/hw_random/amd-rng.c index 0d8c5788b8e..c6af038682f 100644 --- a/drivers/char/hw_random/amd-rng.c +++ b/drivers/char/hw_random/amd-rng.c @@ -133,6 +133,12 @@ found:  	pmbase &= 0x0000FF00;  	if (pmbase == 0)  		goto out; +	if (!request_region(pmbase + 0xF0, 8, "AMD HWRNG")) { +		dev_err(&pdev->dev, "AMD HWRNG region 0x%x already in use!\n", +			pmbase + 0xF0); +		err = -EBUSY; +		goto out; +	}  	amd_rng.priv = (unsigned long)pmbase;  	amd_pdev = pdev; @@ -141,6 +147,7 @@ found:  	if (err) {  		printk(KERN_ERR PFX "RNG registering failed (%d)\n",  		       err); +		release_region(pmbase + 0xF0, 8);  		goto out;  	}  out: @@ -149,6 +156,8 @@ out:  static void __exit mod_exit(void)  { +	u32 pmbase = (unsigned long)amd_rng.priv; +	release_region(pmbase + 0xF0, 8);  	hwrng_unregister(&amd_rng);  }  |