diff options
author | Prarit Bhargava <prarit@sgi.com> | 2006-02-09 17:12:24 -0500 |
---|---|---|
committer | Tony Luck <tony.luck@intel.com> | 2006-02-09 17:12:24 -0500 |
commit | 8b34ff427d6f3b0a1207829350b9db16376f88c5 (patch) | |
tree | a3f33ef514dc2da5aa098686acc00cfaf1eaa98b /arch/ia64/sn | |
parent | 0bdd340c092b0936f78a54bdbd3927463ed4fca3 (diff) |
[IA64-SGI] Hotplug driver related fix in the SN ia64 code.
Remove an erroneous kfree, and unlink the pcidev_info struct from the
pcidev_info list prior to free'ing the pcidev_info struct.
Signed-off-by: Prarit Bhargava <prarit@sgi.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>
Diffstat (limited to 'arch/ia64/sn')
-rw-r--r-- | arch/ia64/sn/kernel/io_init.c | 2 | ||||
-rw-r--r-- | arch/ia64/sn/kernel/irq.c | 4 |
2 files changed, 5 insertions, 1 deletions
diff --git a/arch/ia64/sn/kernel/io_init.c b/arch/ia64/sn/kernel/io_init.c index d7e4d79e16a8..2e4e56be8df5 100644 --- a/arch/ia64/sn/kernel/io_init.c +++ b/arch/ia64/sn/kernel/io_init.c | |||
@@ -623,6 +623,8 @@ sn_sysdata_free_start: | |||
623 | list_for_each(list, &sn_sysdata_list) { | 623 | list_for_each(list, &sn_sysdata_list) { |
624 | element = list_entry(list, struct sysdata_el, entry); | 624 | element = list_entry(list, struct sysdata_el, entry); |
625 | list_del(&element->entry); | 625 | list_del(&element->entry); |
626 | list_del(&(((struct pcidev_info *) | ||
627 | (element->sysdata))->pdi_list)); | ||
626 | kfree(element->sysdata); | 628 | kfree(element->sysdata); |
627 | kfree(element); | 629 | kfree(element); |
628 | goto sn_sysdata_free_start; | 630 | goto sn_sysdata_free_start; |
diff --git a/arch/ia64/sn/kernel/irq.c b/arch/ia64/sn/kernel/irq.c index 74d87d903d5d..c373113d073a 100644 --- a/arch/ia64/sn/kernel/irq.c +++ b/arch/ia64/sn/kernel/irq.c | |||
@@ -299,7 +299,9 @@ void sn_irq_unfixup(struct pci_dev *pci_dev) | |||
299 | return; | 299 | return; |
300 | 300 | ||
301 | sn_irq_info = SN_PCIDEV_INFO(pci_dev)->pdi_sn_irq_info; | 301 | sn_irq_info = SN_PCIDEV_INFO(pci_dev)->pdi_sn_irq_info; |
302 | if (!sn_irq_info || !sn_irq_info->irq_irq) { | 302 | if (!sn_irq_info) |
303 | return; | ||
304 | if (!sn_irq_info->irq_irq) { | ||
303 | kfree(sn_irq_info); | 305 | kfree(sn_irq_info); |
304 | return; | 306 | return; |
305 | } | 307 | } |