diff options
Diffstat (limited to 'drivers/net/wireless/rtlwifi/pci.c')
| -rw-r--r-- | drivers/net/wireless/rtlwifi/pci.c | 11 | 
1 files changed, 9 insertions, 2 deletions
| diff --git a/drivers/net/wireless/rtlwifi/pci.c b/drivers/net/wireless/rtlwifi/pci.c index 0fa36aa6701a..1758d4463247 100644 --- a/drivers/net/wireless/rtlwifi/pci.c +++ b/drivers/net/wireless/rtlwifi/pci.c @@ -619,6 +619,13 @@ static void _rtl_pci_rx_interrupt(struct ieee80211_hw *hw)  					struct sk_buff *uskb = NULL;  					u8 *pdata;  					uskb = dev_alloc_skb(skb->len + 128); +					if (!uskb) { +						RT_TRACE(rtlpriv, +							(COMP_INTR | COMP_RECV), +							DBG_EMERG, +							("can't alloc rx skb\n")); +						goto done; +					}  					memcpy(IEEE80211_SKB_RXCB(uskb),  							&rx_status,  							sizeof(rx_status)); @@ -641,7 +648,7 @@ static void _rtl_pci_rx_interrupt(struct ieee80211_hw *hw)  			new_skb = dev_alloc_skb(rtlpci->rxbuffersize);  			if (unlikely(!new_skb)) {  				RT_TRACE(rtlpriv, (COMP_INTR | COMP_RECV), -					 DBG_DMESG, +					 DBG_EMERG,  					 ("can't alloc skb for rx\n"));  				goto done;  			} @@ -1066,9 +1073,9 @@ static int _rtl_pci_init_rx_ring(struct ieee80211_hw *hw)  			struct sk_buff *skb =  			    dev_alloc_skb(rtlpci->rxbuffersize);  			u32 bufferaddress; -			entry = &rtlpci->rx_ring[rx_queue_idx].desc[i];  			if (!skb)  				return 0; +			entry = &rtlpci->rx_ring[rx_queue_idx].desc[i];  			/*skb->dev = dev; */ | 
