IB/ipoib: Fix ndo_get_iflink
authorErez Shitrit <erezsh@mellanox.com>
Thu, 16 Apr 2015 13:34:34 +0000 (16:34 +0300)
committerDavid S. Miller <davem@davemloft.net>
Fri, 17 Apr 2015 19:21:04 +0000 (15:21 -0400)
commit2c1539597419df6dfeb8ed774d60198b5830b8f7
treeb1fbfaae7d2c5d16a30f1aad582618efa7492218
parent1d20a16062e771b6e26b843c0cde3b17c1146e00
IB/ipoib: Fix ndo_get_iflink

Currently, iflink of the parent interface was always accessed, even
when interface didn't have a parent and hence we crashed there.

Handle the interface types properly: for a child interface, return
the ifindex of the parent, for parent interface, return its ifindex.

For child devices, make sure to set the parent pointer prior to
invoking register_netdevice(), this allows the new ndo to be called
by the stack immediately after the child device is registered.

Fixes: 5aa7add8f14b ('infiniband/ipoib: implement ndo_get_iflink')
Reported-by: Honggang Li <honli@redhat.com>
Signed-off-by: Erez Shitrit <erezsh@mellanox.com>
Signed-off-by: Honggang Li <honli@redhat.com>
Reviewed-By: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>+
Acked-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/infiniband/ulp/ipoib/ipoib_main.c
drivers/infiniband/ulp/ipoib/ipoib_vlan.c