summaryrefslogtreecommitdiffstats
path: root/drivers/staging/rtl8192u/ieee80211/ieee80211_rx.c
diff options
context:
space:
mode:
authorValdis Kletnieks2014-09-09 00:09:48 +0200
committerGreg Kroah-Hartman2014-09-09 00:22:52 +0200
commit79d99c305fd4edb9ee11ff57f43dc961ad684ab6 (patch)
treefa8b8e54de0941d6ce1ce5a9a6123fb956d75902 /drivers/staging/rtl8192u/ieee80211/ieee80211_rx.c
parentStaging: octeon-hcd: removed unwanted return from void (diff)
downloadkernel-qcow2-linux-79d99c305fd4edb9ee11ff57f43dc961ad684ab6.tar.gz
kernel-qcow2-linux-79d99c305fd4edb9ee11ff57f43dc961ad684ab6.tar.xz
kernel-qcow2-linux-79d99c305fd4edb9ee11ff57f43dc961ad684ab6.zip
staging/rtl8192u - check for skb alloc failure
It's possible for dev_alloc_skb() to fail. Propagate the error to the caller, so it can clean up and drop the packet. The sender should end up retransmitting the packet, hopefully at a time we're prepared to allocate skb's again. Reported-By: Nicholas Krause <xerofoify@gmail.com> Signed-Off-By: Valdis Kletnieks <valdis.kletnieks@vt.edu> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/rtl8192u/ieee80211/ieee80211_rx.c')
-rw-r--r--drivers/staging/rtl8192u/ieee80211/ieee80211_rx.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/staging/rtl8192u/ieee80211/ieee80211_rx.c b/drivers/staging/rtl8192u/ieee80211/ieee80211_rx.c
index 40da37fdbcdc..73de9e9669f6 100644
--- a/drivers/staging/rtl8192u/ieee80211/ieee80211_rx.c
+++ b/drivers/staging/rtl8192u/ieee80211/ieee80211_rx.c
@@ -847,6 +847,8 @@ static u8 parse_subframe(struct sk_buff *skb,
#else
/* Allocate new skb for releasing to upper layer */
sub_skb = dev_alloc_skb(nSubframe_Length + 12);
+ if (!sub_skb)
+ return 0;
skb_reserve(sub_skb, 12);
data_ptr = (u8 *)skb_put(sub_skb, nSubframe_Length);
memcpy(data_ptr, skb->data, nSubframe_Length);