From: Jean Delvare Date: Wed, 19 Dec 2012 21:16:59 +0000 (+0100) Subject: hwmon: Fix PCI device reference leak in quirk X-Git-Tag: upstream/snapshot3+hdmi~5992^2~15 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d6dab7dd123ba6a737e69d89c8cca9c6d9b75aa9;p=platform%2Fadaptation%2Frenesas_rcar%2Frenesas_kernel.git hwmon: Fix PCI device reference leak in quirk Thankfully this only affects systems with one specific south bridge and is most probably harmless unless the hwmon module is heavily cycled. Signed-off-by: Jean Delvare Acked-by: Guenter Roeck --- diff --git a/drivers/hwmon/hwmon.c b/drivers/hwmon/hwmon.c index c3c471c..646314f 100644 --- a/drivers/hwmon/hwmon.c +++ b/drivers/hwmon/hwmon.c @@ -84,19 +84,21 @@ static void __init hwmon_pci_quirks(void) /* Open access to 0x295-0x296 on MSI MS-7031 */ sb = pci_get_device(PCI_VENDOR_ID_ATI, 0x436c, NULL); - if (sb && - (sb->subsystem_vendor == 0x1462 && /* MSI */ - sb->subsystem_device == 0x0031)) { /* MS-7031 */ - - pci_read_config_byte(sb, 0x48, &enable); - pci_read_config_word(sb, 0x64, &base); - - if (base == 0 && !(enable & BIT(2))) { - dev_info(&sb->dev, - "Opening wide generic port at 0x295\n"); - pci_write_config_word(sb, 0x64, 0x295); - pci_write_config_byte(sb, 0x48, enable | BIT(2)); + if (sb) { + if (sb->subsystem_vendor == 0x1462 && /* MSI */ + sb->subsystem_device == 0x0031) { /* MS-7031 */ + pci_read_config_byte(sb, 0x48, &enable); + pci_read_config_word(sb, 0x64, &base); + + if (base == 0 && !(enable & BIT(2))) { + dev_info(&sb->dev, + "Opening wide generic port at 0x295\n"); + pci_write_config_word(sb, 0x64, 0x295); + pci_write_config_byte(sb, 0x48, + enable | BIT(2)); + } } + pci_dev_put(sb); } #endif }