diff options
author | Steve Wise <swise@opengridcomputing.com> | 2009-10-07 15:51:07 -0700 |
---|---|---|
committer | Roland Dreier <rolandd@cisco.com> | 2009-10-07 15:51:07 -0700 |
commit | e5da4ed8a486113a4b0e587a0c7843e4a9c08aac (patch) | |
tree | 04114a95a06a75bc34274ffeeb0007be487e8027 /drivers/infiniband | |
parent | 0eca52a92735f43462165efe00a7e394345fb38e (diff) | |
download | op-kernel-dev-e5da4ed8a486113a4b0e587a0c7843e4a9c08aac.zip op-kernel-dev-e5da4ed8a486113a4b0e587a0c7843e4a9c08aac.tar.gz |
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>
Diffstat (limited to 'drivers/infiniband')
-rw-r--r-- | drivers/infiniband/hw/cxgb3/iwch_provider.c | 11 |
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 6895523..03cfaec 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 = |