From: Hariprasad Shenai <[email protected]>
Date: Mon, 10 Mar 2014 22:38:05 +0530

> diff --git a/drivers/infiniband/hw/cxgb4/cm.c 
> b/drivers/infiniband/hw/cxgb4/cm.c
> index 360807e..74a2250 100644
> --- a/drivers/infiniband/hw/cxgb4/cm.c
> +++ b/drivers/infiniband/hw/cxgb4/cm.c
> @@ -3350,10 +3350,9 @@ static int rx_pkt(struct c4iw_dev *dev, struct sk_buff 
> *skb)
>       if (!e) {
>               pr_err("%s - failed to allocate l2t entry!\n",
>                      __func__);
> -             goto free_dst;
> +             goto free_neigh;
>       }
>  
> -     neigh_release(neigh);
>       step = dev->rdev.lldi.nrxq / dev->rdev.lldi.nchan;
>       rss_qid = dev->rdev.lldi.rxq_ids[pi->port_id * step];
>       window = (__force u16) htons((__force u16)tcph->window);
> @@ -3373,6 +3372,8 @@ static int rx_pkt(struct c4iw_dev *dev, struct sk_buff 
> *skb)
>                             tcph->source, ntohl(tcph->seq), filter, window,
>                             rss_qid, pi->port_id);
>       cxgb4_l2t_release(e);
> +free_neigh:
> +     neigh_release(neigh);
>  free_dst:

It is so much easier to just move the existing neigh_release() call right
before the if(!e) test, that way you don't need a completely new label and
code block to fix this bug.
--
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