hc
2024-01-03 2f7c68cb55ecb7331f2381deb497c27155f32faf
kernel/drivers/char/hw_random/amd-rng.c
....@@ -143,15 +143,19 @@
143143 found:
144144 err = pci_read_config_dword(pdev, 0x58, &pmbase);
145145 if (err)
146
- return err;
146
+ goto put_dev;
147147
148148 pmbase &= 0x0000FF00;
149
- if (pmbase == 0)
150
- return -EIO;
149
+ if (pmbase == 0) {
150
+ err = -EIO;
151
+ goto put_dev;
152
+ }
151153
152154 priv = kzalloc(sizeof(*priv), GFP_KERNEL);
153
- if (!priv)
154
- return -ENOMEM;
155
+ if (!priv) {
156
+ err = -ENOMEM;
157
+ goto put_dev;
158
+ }
155159
156160 if (!request_region(pmbase + PMBASE_OFFSET, PMBASE_SIZE, DRV_NAME)) {
157161 dev_err(&pdev->dev, DRV_NAME " region 0x%x already in use!\n",
....@@ -185,6 +189,8 @@
185189 release_region(pmbase + PMBASE_OFFSET, PMBASE_SIZE);
186190 out:
187191 kfree(priv);
192
+put_dev:
193
+ pci_dev_put(pdev);
188194 return err;
189195 }
190196
....@@ -200,6 +206,8 @@
200206
201207 release_region(priv->pmbase + PMBASE_OFFSET, PMBASE_SIZE);
202208
209
+ pci_dev_put(priv->pcidev);
210
+
203211 kfree(priv);
204212 }
205213