> This patch fixes a kernel crash in cma_set_qkey(). > When link layer is ETHERNET it is wrong to use IPoIB port space since no IPoIB > interface is available. Specifically, setting qkey when port space is > RDMA_PS_IPOIB, requires mgid calculation and SA query which is illegal over > Ethernet. > > Signed-off-by: Moni Shoua <[email protected]>
Acked-by: Sean Hefty <[email protected]> > --- > drivers/infiniband/core/cma.c | 4 ++++ > 1 files changed, 4 insertions(+), 0 deletions(-) > > diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c > index b6a33b3..4530eb8 100644 > --- a/drivers/infiniband/core/cma.c > +++ b/drivers/infiniband/core/cma.c > @@ -359,6 +359,10 @@ static int cma_acquire_dev(struct rdma_id_private > *id_priv) > enum rdma_link_layer dev_ll = dev_addr->dev_type == ARPHRD_INFINIBAND ? > IB_LINK_LAYER_INFINIBAND : IB_LINK_LAYER_ETHERNET; > > + if (dev_ll != IB_LINK_LAYER_INFINIBAND && > + id_priv->id.ps == RDMA_PS_IPOIB) > + return -EINVAL; > + > mutex_lock(&lock); > iboe_addr_get_sgid(dev_addr, &iboe_gid); > memcpy(&gid, dev_addr->src_dev_addr + > -- > 1.7.4.1 -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
