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