Commit 7bf02c29 authored by David Woodhouse's avatar David Woodhouse Committed by David S. Miller

libertas: fix error cases in lbs_process_rxed_802_11_packet()

Signed-off-by: default avatarDavid Woodhouse <dwmw2@infradead.org>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 180be755
...@@ -337,9 +337,10 @@ static int process_rxed_802_11_packet(struct lbs_private *priv, ...@@ -337,9 +337,10 @@ static int process_rxed_802_11_packet(struct lbs_private *priv,
// lbs_deb_hex(LBS_DEB_RX, "RX Data: Before chop rxpd", skb->data, min(skb->len, 100)); // lbs_deb_hex(LBS_DEB_RX, "RX Data: Before chop rxpd", skb->data, min(skb->len, 100));
if (skb->len < (ETH_HLEN + 8 + sizeof(struct rxpd))) { if (skb->len < (ETH_HLEN + 8 + sizeof(struct rxpd))) {
lbs_deb_rx("rx err: frame received wit bad length\n"); lbs_deb_rx("rx err: frame received with bad length\n");
priv->stats.rx_length_errors++; priv->stats.rx_length_errors++;
ret = 0; ret = -EINVAL;
kfree(skb);
goto done; goto done;
} }
...@@ -381,10 +382,11 @@ static int process_rxed_802_11_packet(struct lbs_private *priv, ...@@ -381,10 +382,11 @@ static int process_rxed_802_11_packet(struct lbs_private *priv,
/* add space for the new radio header */ /* add space for the new radio header */
if ((skb_headroom(skb) < sizeof(struct rx_radiotap_hdr)) && if ((skb_headroom(skb) < sizeof(struct rx_radiotap_hdr)) &&
pskb_expand_head(skb, sizeof(struct rx_radiotap_hdr), 0, pskb_expand_head(skb, sizeof(struct rx_radiotap_hdr), 0, GFP_ATOMIC)) {
GFP_ATOMIC)) { lbs_pr_alert("%s: couldn't pskb_expand_head\n", __func__);
lbs_pr_alert("%s: couldn't pskb_expand_head\n", ret = -ENOMEM;
__func__); kfree_skb(skb);
goto done;
} }
pradiotap_hdr = (void *)skb_push(skb, sizeof(struct rx_radiotap_hdr)); pradiotap_hdr = (void *)skb_push(skb, sizeof(struct rx_radiotap_hdr));
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment