> 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

Reply via email to