summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteve Wise <swise@opengridcomputing.com>2009-10-07 15:51:07 -0700
committerRoland Dreier <rolandd@cisco.com>2009-10-07 15:51:07 -0700
commite5da4ed8a486113a4b0e587a0c7843e4a9c08aac (patch)
tree04114a95a06a75bc34274ffeeb0007be487e8027
parent0eca52a92735f43462165efe00a7e394345fb38e (diff)
downloadlinux-e5da4ed8a486113a4b0e587a0c7843e4a9c08aac.tar.gz
linux-e5da4ed8a486113a4b0e587a0c7843e4a9c08aac.tar.bz2
linux-e5da4ed8a486113a4b0e587a0c7843e4a9c08aac.zip
RDMA/cxgb3: Handle NULL inetdev pointer in iwch_query_port()
in_dev_get() can return NULL. If it does, iwch_query_port() will crash. Handle the NULL case by mapping it to port state INIT. Signed-off-by: Steve Wise <swise@opengridcomputing.com> Signed-off-by: Roland Dreier <rolandd@cisco.com>
-rw-r--r--drivers/infiniband/hw/cxgb3/iwch_provider.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/drivers/infiniband/hw/cxgb3/iwch_provider.c b/drivers/infiniband/hw/cxgb3/iwch_provider.c
index 6895523779d0..03cfaecc3bb7 100644
--- a/drivers/infiniband/hw/cxgb3/iwch_provider.c
+++ b/drivers/infiniband/hw/cxgb3/iwch_provider.c
@@ -1199,11 +1199,14 @@ static int iwch_query_port(struct ib_device *ibdev,
props->state = IB_PORT_DOWN;
else {
inetdev = in_dev_get(netdev);
- if (inetdev->ifa_list)
- props->state = IB_PORT_ACTIVE;
- else
+ if (inetdev) {
+ if (inetdev->ifa_list)
+ props->state = IB_PORT_ACTIVE;
+ else
+ props->state = IB_PORT_INIT;
+ in_dev_put(inetdev);
+ } else
props->state = IB_PORT_INIT;
- in_dev_put(inetdev);
}
props->port_cap_flags =