|
@@ -1142,7 +1142,7 @@ static int init_act_open(struct cxgbi_sock *csk)
|
|
cxgbi_sock_set_flag(csk, CTPF_HAS_ATID);
|
|
cxgbi_sock_set_flag(csk, CTPF_HAS_ATID);
|
|
cxgbi_sock_get(csk);
|
|
cxgbi_sock_get(csk);
|
|
|
|
|
|
- n = dst_get_neighbour_noref(csk->dst);
|
|
|
|
|
|
+ n = dst_neigh_lookup(csk->dst, &csk->daddr.sin_addr.s_addr);
|
|
if (!n) {
|
|
if (!n) {
|
|
pr_err("%s, can't get neighbour of csk->dst.\n", ndev->name);
|
|
pr_err("%s, can't get neighbour of csk->dst.\n", ndev->name);
|
|
goto rel_resource;
|
|
goto rel_resource;
|
|
@@ -1182,9 +1182,12 @@ static int init_act_open(struct cxgbi_sock *csk)
|
|
|
|
|
|
cxgbi_sock_set_state(csk, CTP_ACTIVE_OPEN);
|
|
cxgbi_sock_set_state(csk, CTP_ACTIVE_OPEN);
|
|
send_act_open_req(csk, skb, csk->l2t);
|
|
send_act_open_req(csk, skb, csk->l2t);
|
|
|
|
+ neigh_release(n);
|
|
return 0;
|
|
return 0;
|
|
|
|
|
|
rel_resource:
|
|
rel_resource:
|
|
|
|
+ if (n)
|
|
|
|
+ neigh_release(n);
|
|
if (skb)
|
|
if (skb)
|
|
__kfree_skb(skb);
|
|
__kfree_skb(skb);
|
|
return -EINVAL;
|
|
return -EINVAL;
|