|
@@ -488,6 +488,7 @@ static int _put_ep_safe(struct c4iw_dev *dev, struct sk_buff *skb)
|
|
|
|
|
|
ep = *((struct c4iw_ep **)(skb->cb + 2 * sizeof(void *)));
|
|
|
release_ep_resources(ep);
|
|
|
+ kfree_skb(skb);
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
@@ -498,6 +499,7 @@ static int _put_pass_ep_safe(struct c4iw_dev *dev, struct sk_buff *skb)
|
|
|
ep = *((struct c4iw_ep **)(skb->cb + 2 * sizeof(void *)));
|
|
|
c4iw_put_ep(&ep->parent_ep->com);
|
|
|
release_ep_resources(ep);
|
|
|
+ kfree_skb(skb);
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
@@ -569,11 +571,13 @@ static void abort_arp_failure(void *handle, struct sk_buff *skb)
|
|
|
|
|
|
pr_debug("%s rdev %p\n", __func__, rdev);
|
|
|
req->cmd = CPL_ABORT_NO_RST;
|
|
|
+ skb_get(skb);
|
|
|
ret = c4iw_ofld_send(rdev, skb);
|
|
|
if (ret) {
|
|
|
__state_set(&ep->com, DEAD);
|
|
|
queue_arp_failure_cpl(ep, skb, FAKE_CPL_PUT_EP_SAFE);
|
|
|
- }
|
|
|
+ } else
|
|
|
+ kfree_skb(skb);
|
|
|
}
|
|
|
|
|
|
static int send_flowc(struct c4iw_ep *ep)
|