From 4802c6533af3223f43b9e4a1bb8a2a1c51f398b1 Mon Sep 17 00:00:00 2001 From: Wim Van Sebroeck Date: Wed, 19 Jul 2006 22:39:13 +0200 Subject: [PATCH] [WATCHDOG] iTCO_wdt.c - pci_dev_put fix for_each_pci_dev calls pci_get_device (and thus it calls pci_dev_get). So we need to do a pci_dev_put to keep the refcounting correct. (Thanks to Jiri Slaby ) Signed-off-by: Wim Van Sebroeck --- drivers/char/watchdog/iTCO_wdt.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/char/watchdog/iTCO_wdt.c b/drivers/char/watchdog/iTCO_wdt.c index cbdfbf00cfb7..852ad8389bc7 100644 --- a/drivers/char/watchdog/iTCO_wdt.c +++ b/drivers/char/watchdog/iTCO_wdt.c @@ -45,7 +45,7 @@ /* Module and version information */ #define DRV_NAME "iTCO_wdt" #define DRV_VERSION "1.00" -#define DRV_RELDATE "18-Jun-2006" +#define DRV_RELDATE "19-Jul-2006" #define PFX DRV_NAME ": " /* Includes */ @@ -558,6 +558,7 @@ static int iTCO_wdt_init(struct pci_dev *pdev, const struct pci_device_id *ent, if (base_address == 0x00000000) { /* Something's wrong here, ACPIBASE has to be set */ printk(KERN_ERR PFX "failed to get TCOBASE address\n"); + pci_dev_put(pdev); return -ENODEV; } iTCO_wdt_private.iTCO_version = iTCO_chipset_info[ent->driver_data].iTCO_version; @@ -649,6 +650,7 @@ out: if (iTCO_wdt_private.iTCO_version == 2) iounmap(iTCO_wdt_private.gcs); iTCO_wdt_private.ACPIBASE = 0; + pci_dev_put(iTCO_wdt_private.pdev); return ret; } @@ -664,6 +666,7 @@ static void iTCO_wdt_cleanup(void) release_region(TCOBASE, 0x20); if (iTCO_wdt_private.iTCO_version == 2) iounmap(iTCO_wdt_private.gcs); + pci_dev_put(iTCO_wdt_private.pdev); } static int iTCO_wdt_probe(struct platform_device *dev) -- 2.20.1