be2net: Fix skb double free in be_xmit_wrokarounds() failure path
skb_padto(), skb_share_check() and __vlan_put_tag() routines free skb when they return an error. This patch fixes be_xmit_workarounds() to not free skb again in such cases. Signed-off-by: Vasundhara Volam <vasundhara.volam@emulex.com> Signed-off-by: Sathya Perla <sathya.perla@emulex.com> Signed-off-by: Somnath Kotur <somnath.kotur@emulex.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
7ad09458a5
commit
c912895106
|
@ -927,7 +927,7 @@ static struct sk_buff *be_xmit_workarounds(struct be_adapter *adapter,
|
||||||
*/
|
*/
|
||||||
if (unlikely(!BEx_chip(adapter) && skb->len <= 32)) {
|
if (unlikely(!BEx_chip(adapter) && skb->len <= 32)) {
|
||||||
if (skb_padto(skb, 36))
|
if (skb_padto(skb, 36))
|
||||||
goto tx_drop;
|
goto err;
|
||||||
skb->len = 36;
|
skb->len = 36;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -959,7 +959,7 @@ static struct sk_buff *be_xmit_workarounds(struct be_adapter *adapter,
|
||||||
vlan_tx_tag_present(skb)) {
|
vlan_tx_tag_present(skb)) {
|
||||||
skb = be_insert_vlan_in_pkt(adapter, skb, skip_hw_vlan);
|
skb = be_insert_vlan_in_pkt(adapter, skb, skip_hw_vlan);
|
||||||
if (unlikely(!skb))
|
if (unlikely(!skb))
|
||||||
goto tx_drop;
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* HW may lockup when VLAN HW tagging is requested on
|
/* HW may lockup when VLAN HW tagging is requested on
|
||||||
|
@ -981,12 +981,13 @@ static struct sk_buff *be_xmit_workarounds(struct be_adapter *adapter,
|
||||||
be_vlan_tag_tx_chk(adapter, skb)) {
|
be_vlan_tag_tx_chk(adapter, skb)) {
|
||||||
skb = be_insert_vlan_in_pkt(adapter, skb, skip_hw_vlan);
|
skb = be_insert_vlan_in_pkt(adapter, skb, skip_hw_vlan);
|
||||||
if (unlikely(!skb))
|
if (unlikely(!skb))
|
||||||
goto tx_drop;
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
||||||
return skb;
|
return skb;
|
||||||
tx_drop:
|
tx_drop:
|
||||||
dev_kfree_skb_any(skb);
|
dev_kfree_skb_any(skb);
|
||||||
|
err:
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue