staging: r8712u: Fix allocations not checked for failure
authorLarry Finger <Larry.Finger@lwfinger.net>
Tue, 28 Aug 2012 16:59:04 +0000 (11:59 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 4 Sep 2012 21:14:08 +0000 (14:14 -0700)
The driver has a dev_alloc_skb() and an skb_clone() call that are not
checked for failure.

Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/rtl8712/rtl8712_recv.c

index 8e82ce2fee38dfadc288e6d9b0cad5501e2bd46c..4cd297aed78854e89af8ebeb1103da9ab7245ab2 100644 (file)
@@ -374,6 +374,8 @@ static int amsdu_to_msdu(struct _adapter *padapter, union recv_frame *prframe)
                a_len -= ETH_HLEN;
                /* Allocate new skb for releasing to upper layer */
                sub_skb = dev_alloc_skb(nSubframe_Length + 12);
+               if (!sub_skb)
+                       break;
                skb_reserve(sub_skb, 12);
                data_ptr = (u8 *)skb_put(sub_skb, nSubframe_Length);
                memcpy(data_ptr, pdata, nSubframe_Length);
@@ -1094,6 +1096,8 @@ static int recvbuf2recvframe(struct _adapter *padapter, struct sk_buff *pskb)
                        precvframe->u.hdr.rx_end = pkt_copy->data + alloc_sz;
                } else {
                        precvframe->u.hdr.pkt = skb_clone(pskb, GFP_ATOMIC);
+                       if (!precvframe->u.hdr.pkt)
+                               return _FAIL;
                        precvframe->u.hdr.rx_head = pbuf;
                        precvframe->u.hdr.rx_data = pbuf;
                        precvframe->u.hdr.rx_tail = pbuf;