diff options
author | Bryan O'Sullivan <bos@pathscale.com> | 2006-08-25 14:24:28 -0400 |
---|---|---|
committer | Roland Dreier <rolandd@cisco.com> | 2006-09-22 18:22:27 -0400 |
commit | 8e280d94e29af67035637fb957daba7ae0d23583 (patch) | |
tree | eb95b5a5f8eecee6b8f0b0aacb5da14a05d514fa | |
parent | c27fef26271d352b5546c33239edeb0dcb4fc0cc (diff) |
IB/ipath: fix for crash on module unload, if cfgports < portcnt
Allocate enough pointers for all possible ports, to avoid problems in
cleanup/unload.
Signed-off-by: Bryan O'Sullivan <bryan.osullivan@qlogic.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
-rw-r--r-- | drivers/infiniband/hw/ipath/ipath_init_chip.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/infiniband/hw/ipath/ipath_init_chip.c b/drivers/infiniband/hw/ipath/ipath_init_chip.c index 414cdd1d80a6..c63de8f0fa9e 100644 --- a/drivers/infiniband/hw/ipath/ipath_init_chip.c +++ b/drivers/infiniband/hw/ipath/ipath_init_chip.c | |||
@@ -240,7 +240,11 @@ static int init_chip_first(struct ipath_devdata *dd, | |||
240 | "only supports %u\n", ipath_cfgports, | 240 | "only supports %u\n", ipath_cfgports, |
241 | dd->ipath_portcnt); | 241 | dd->ipath_portcnt); |
242 | } | 242 | } |
243 | dd->ipath_pd = kzalloc(sizeof(*dd->ipath_pd) * dd->ipath_cfgports, | 243 | /* |
244 | * Allocate full portcnt array, rather than just cfgports, because | ||
245 | * cleanup iterates across all possible ports. | ||
246 | */ | ||
247 | dd->ipath_pd = kzalloc(sizeof(*dd->ipath_pd) * dd->ipath_portcnt, | ||
244 | GFP_KERNEL); | 248 | GFP_KERNEL); |
245 | 249 | ||
246 | if (!dd->ipath_pd) { | 250 | if (!dd->ipath_pd) { |