From 60ad1861dec7fc48a2bbf8b6d8c6728059bb0025 Mon Sep 17 00:00:00 2001 From: Jean Delvare Date: Sat, 21 Feb 2004 07:38:43 +0000 Subject: [PATCH] Backport oops fix from Linux 2.6 (freeing nonexistent resource on module unload if the hardware isn't present). git-svn-id: http://lm-sensors.org/svn/lm-sensors/trunk@2300 7894878c-1315-0410-8ee3-d5d059ff63e0 --- kernel/busses/i2c-ali1535.c | 2 +- kernel/busses/i2c-hydra.c | 2 +- kernel/busses/i2c-i801.c | 2 +- kernel/busses/i2c-sis5595.c | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/kernel/busses/i2c-ali1535.c b/kernel/busses/i2c-ali1535.c index 936ca7f7..c97245bc 100644 --- a/kernel/busses/i2c-ali1535.c +++ b/kernel/busses/i2c-ali1535.c @@ -560,6 +560,7 @@ static int __devinit ali1535_probe(struct pci_dev *dev, const struct pci_device_ static void __devexit ali1535_remove(struct pci_dev *dev) { i2c_del_adapter(&ali1535_adapter); + release_region(ali1535_smba, ALI1535_SMB_IOSIZE); } @@ -580,7 +581,6 @@ static int __init i2c_ali1535_init(void) static void __exit i2c_ali1535_exit(void) { pci_unregister_driver(&ali1535_driver); - release_region(ali1535_smba, ALI1535_SMB_IOSIZE); } #ifdef RLX diff --git a/kernel/busses/i2c-hydra.c b/kernel/busses/i2c-hydra.c index a674583d..922a1812 100644 --- a/kernel/busses/i2c-hydra.c +++ b/kernel/busses/i2c-hydra.c @@ -143,6 +143,7 @@ static void __devexit hydra_remove(struct pci_dev *dev) { pdregw(0); /* clear SCLK_OE and SDAT_OE */ i2c_bit_del_bus(&bit_hydra_ops); + iounmap((void *) hydra_base); } @@ -162,7 +163,6 @@ static int __init i2c_hydra_init(void) static void __exit i2c_hydra_exit(void) { pci_unregister_driver(&hydra_driver); - iounmap((void *) hydra_base); } diff --git a/kernel/busses/i2c-i801.c b/kernel/busses/i2c-i801.c index ebe0f620..ed70aeb0 100644 --- a/kernel/busses/i2c-i801.c +++ b/kernel/busses/i2c-i801.c @@ -610,6 +610,7 @@ static int __devinit i801_probe(struct pci_dev *dev, const struct pci_device_id static void __devexit i801_remove(struct pci_dev *dev) { i2c_del_adapter(&i801_adapter); + release_region(i801_smba, (isich4 ? 16 : 8)); } static struct pci_driver i801_driver = { @@ -628,7 +629,6 @@ static int __init i2c_i801_init(void) static void __exit i2c_i801_exit(void) { pci_unregister_driver(&i801_driver); - release_region(i801_smba, (isich4 ? 16 : 8)); } MODULE_AUTHOR ("Frodo Looijaard , " diff --git a/kernel/busses/i2c-sis5595.c b/kernel/busses/i2c-sis5595.c index d12b82cb..d5555c09 100644 --- a/kernel/busses/i2c-sis5595.c +++ b/kernel/busses/i2c-sis5595.c @@ -448,6 +448,7 @@ static int __devinit sis5595_probe(struct pci_dev *dev, const struct pci_device_ static void __devexit sis5595_remove(struct pci_dev *dev) { i2c_del_adapter(&sis5595_adapter); + release_region(sis5595_base + SMB_INDEX, 2); } @@ -468,7 +469,6 @@ static int __init i2c_sis5595_init(void) static void __exit i2c_sis5595_exit(void) { pci_unregister_driver(&sis5595_driver); - release_region(sis5595_base + SMB_INDEX, 2); }