aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/hw
diff options
context:
space:
mode:
authorBryan O'Sullivan <bos@pathscale.com>2006-05-23 14:32:33 -0400
committerRoland Dreier <rolandd@cisco.com>2006-05-23 16:27:06 -0400
commitb0ff7c2005f7ec8dec10fb15e62b8e1acc172bbf (patch)
treed62bf6616d98ef73a941d7bbfbe1ebd5d1621d40 /drivers/infiniband/hw
parent94b8d9f98d7f535037eb9845b81396f667b4f727 (diff)
IB/ipath: fix NULL dereference during cleanup
Fix NULL deref due to pcidev being clobbered before dd->ipath_f_cleanup() was called. Signed-off-by: Bryan O'Sullivan <bos@pathscale.com> Signed-off-by: Roland Dreier <rolandd@cisco.com>
Diffstat (limited to 'drivers/infiniband/hw')
-rw-r--r--drivers/infiniband/hw/ipath/ipath_driver.c22
1 files changed, 11 insertions, 11 deletions
diff --git a/drivers/infiniband/hw/ipath/ipath_driver.c b/drivers/infiniband/hw/ipath/ipath_driver.c
index 3697edafd6d2..dddcdae736ac 100644
--- a/drivers/infiniband/hw/ipath/ipath_driver.c
+++ b/drivers/infiniband/hw/ipath/ipath_driver.c
@@ -1905,19 +1905,19 @@ static void __exit infinipath_cleanup(void)
1905 } else 1905 } else
1906 ipath_dbg("irq is 0, not doing free_irq " 1906 ipath_dbg("irq is 0, not doing free_irq "
1907 "for unit %u\n", dd->ipath_unit); 1907 "for unit %u\n", dd->ipath_unit);
1908 dd->pcidev = NULL;
1909 }
1910 1908
1911 /* 1909 /*
1912 * we check for NULL here, because it's outside the kregbase 1910 * we check for NULL here, because it's outside
1913 * check, and we need to call it after the free_irq. Thus 1911 * the kregbase check, and we need to call it
1914 * it's possible that the function pointers were never 1912 * after the free_irq. Thus it's possible that
1915 * initialized. 1913 * the function pointers were never initialized.
1916 */ 1914 */
1917 if (dd->ipath_f_cleanup) 1915 if (dd->ipath_f_cleanup)
1918 /* clean up chip-specific stuff */ 1916 /* clean up chip-specific stuff */
1919 dd->ipath_f_cleanup(dd); 1917 dd->ipath_f_cleanup(dd);
1920 1918
1919 dd->pcidev = NULL;
1920 }
1921 spin_lock_irqsave(&ipath_devs_lock, flags); 1921 spin_lock_irqsave(&ipath_devs_lock, flags);
1922 } 1922 }
1923 1923