Browse Source

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>
Steve Wise 15 years ago
parent
commit
e5da4ed8a4
1 changed files with 7 additions and 4 deletions
  1. 7 4
      drivers/infiniband/hw/cxgb3/iwch_provider.c

+ 7 - 4
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;
 		props->state = IB_PORT_DOWN;
 	else {
 	else {
 		inetdev = in_dev_get(netdev);
 		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;
 			props->state = IB_PORT_INIT;
-		in_dev_put(inetdev);
 	}
 	}
 
 
 	props->port_cap_flags =
 	props->port_cap_flags =