浏览代码

[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>
Prarit Bhargava 19 年之前
父节点
当前提交
8b34ff427d
共有 2 个文件被更改,包括 5 次插入1 次删除
  1. 2 0
      arch/ia64/sn/kernel/io_init.c
  2. 3 1
      arch/ia64/sn/kernel/irq.c

+ 2 - 0
arch/ia64/sn/kernel/io_init.c

@@ -623,6 +623,8 @@ sn_sysdata_free_start:
 	list_for_each(list, &sn_sysdata_list) {
 		element = list_entry(list, struct sysdata_el, entry);
 		list_del(&element->entry);
+		list_del(&(((struct pcidev_info *)
+			     (element->sysdata))->pdi_list));
 		kfree(element->sysdata);
 		kfree(element);
 		goto sn_sysdata_free_start;

+ 3 - 1
arch/ia64/sn/kernel/irq.c

@@ -299,7 +299,9 @@ void sn_irq_unfixup(struct pci_dev *pci_dev)
 		return;
 
 	sn_irq_info = SN_PCIDEV_INFO(pci_dev)->pdi_sn_irq_info;
-	if (!sn_irq_info || !sn_irq_info->irq_irq) {
+	if (!sn_irq_info)
+		return;
+	if (!sn_irq_info->irq_irq) {
 		kfree(sn_irq_info);
 		return;
 	}