diff options
author | Robert Walsh <rjwalsh@pathscale.com> | 2007-04-28 00:07:23 -0400 |
---|---|---|
committer | Roland Dreier <rolandd@cisco.com> | 2007-04-30 20:30:28 -0400 |
commit | 6b66b2da1e821181a001c00b04a807724ad803cd (patch) | |
tree | 8ddbae34ef4ad3e9242f91b6d7df4abbd9f3a161 /drivers/infiniband/hw/ipath/ipath_verbs.c | |
parent | 9ba6d5529dd919b442eedf5bef1dd28aca2ee9fe (diff) |
IB/ipath: Don't corrupt pending mmap list when unmapped objects are freed
Fix the pending mmap code so it doesn't corrupt the list of pending
mmaps and crash the machine when pending mmaps are destroyed without
first being mapped. Also, remove an unused variable, and use standard
kernel lists instead of our own homebrewed linked list implementation
to keep the pending mmap list.
Signed-off-by: Robert Walsh <robert.walsh@qlogic.com>
Signed-off-by: Ralph Campbell <ralph.campbell@qlogic.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
Diffstat (limited to 'drivers/infiniband/hw/ipath/ipath_verbs.c')
-rw-r--r-- | drivers/infiniband/hw/ipath/ipath_verbs.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/infiniband/hw/ipath/ipath_verbs.c b/drivers/infiniband/hw/ipath/ipath_verbs.c index 18c6df2052c2..b676ea81fc41 100644 --- a/drivers/infiniband/hw/ipath/ipath_verbs.c +++ b/drivers/infiniband/hw/ipath/ipath_verbs.c | |||
@@ -1476,7 +1476,10 @@ int ipath_register_ib_device(struct ipath_devdata *dd) | |||
1476 | ret = -ENOMEM; | 1476 | ret = -ENOMEM; |
1477 | goto err_lk; | 1477 | goto err_lk; |
1478 | } | 1478 | } |
1479 | INIT_LIST_HEAD(&idev->pending_mmaps); | ||
1479 | spin_lock_init(&idev->pending_lock); | 1480 | spin_lock_init(&idev->pending_lock); |
1481 | idev->mmap_offset = PAGE_SIZE; | ||
1482 | spin_lock_init(&idev->mmap_offset_lock); | ||
1480 | INIT_LIST_HEAD(&idev->pending[0]); | 1483 | INIT_LIST_HEAD(&idev->pending[0]); |
1481 | INIT_LIST_HEAD(&idev->pending[1]); | 1484 | INIT_LIST_HEAD(&idev->pending[1]); |
1482 | INIT_LIST_HEAD(&idev->pending[2]); | 1485 | INIT_LIST_HEAD(&idev->pending[2]); |