Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

hwrng: amd - manage resource allocation

As amd driver doesn't bind to PCI device, we'd better manage reource
allocation on our own to disallow (possible) conflicts.

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
Acked-by: Matt Mackall <mpm@selenic.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>

authored by

Dmitry Eremin-Solenikov and committed by
Herbert Xu
bd68ccb3 0200f3ec

+9
+9
drivers/char/hw_random/amd-rng.c
··· 133 133 pmbase &= 0x0000FF00; 134 134 if (pmbase == 0) 135 135 goto out; 136 + if (!request_region(pmbase + 0xF0, 8, "AMD HWRNG")) { 137 + dev_err(&pdev->dev, "AMD HWRNG region 0x%x already in use!\n", 138 + pmbase + 0xF0); 139 + err = -EBUSY; 140 + goto out; 141 + } 136 142 amd_rng.priv = (unsigned long)pmbase; 137 143 amd_pdev = pdev; 138 144 ··· 147 141 if (err) { 148 142 printk(KERN_ERR PFX "RNG registering failed (%d)\n", 149 143 err); 144 + release_region(pmbase + 0xF0, 8); 150 145 goto out; 151 146 } 152 147 out: ··· 156 149 157 150 static void __exit mod_exit(void) 158 151 { 152 + u32 pmbase = (unsigned long)amd_rng.priv; 153 + release_region(pmbase + 0xF0, 8); 159 154 hwrng_unregister(&amd_rng); 160 155 } 161 156