diff options
| -rw-r--r-- | drivers/net/wireless/rtl8187_dev.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/drivers/net/wireless/rtl8187_dev.c b/drivers/net/wireless/rtl8187_dev.c index d5787b37e1fb..9223ada5f00e 100644 --- a/drivers/net/wireless/rtl8187_dev.c +++ b/drivers/net/wireless/rtl8187_dev.c | |||
| @@ -92,6 +92,7 @@ static void rtl8187_iowrite_async(struct rtl8187_priv *priv, __le16 addr, | |||
| 92 | u8 data[4]; | 92 | u8 data[4]; |
| 93 | struct usb_ctrlrequest dr; | 93 | struct usb_ctrlrequest dr; |
| 94 | } *buf; | 94 | } *buf; |
| 95 | int rc; | ||
| 95 | 96 | ||
| 96 | buf = kmalloc(sizeof(*buf), GFP_ATOMIC); | 97 | buf = kmalloc(sizeof(*buf), GFP_ATOMIC); |
| 97 | if (!buf) | 98 | if (!buf) |
| @@ -116,7 +117,11 @@ static void rtl8187_iowrite_async(struct rtl8187_priv *priv, __le16 addr, | |||
| 116 | usb_fill_control_urb(urb, priv->udev, usb_sndctrlpipe(priv->udev, 0), | 117 | usb_fill_control_urb(urb, priv->udev, usb_sndctrlpipe(priv->udev, 0), |
| 117 | (unsigned char *)dr, buf, len, | 118 | (unsigned char *)dr, buf, len, |
| 118 | rtl8187_iowrite_async_cb, buf); | 119 | rtl8187_iowrite_async_cb, buf); |
| 119 | usb_submit_urb(urb, GFP_ATOMIC); | 120 | rc = usb_submit_urb(urb, GFP_ATOMIC); |
| 121 | if (rc < 0) { | ||
| 122 | kfree(buf); | ||
| 123 | usb_free_urb(urb); | ||
| 124 | } | ||
| 120 | } | 125 | } |
| 121 | 126 | ||
| 122 | static inline void rtl818x_iowrite32_async(struct rtl8187_priv *priv, | 127 | static inline void rtl818x_iowrite32_async(struct rtl8187_priv *priv, |
| @@ -169,6 +174,7 @@ static int rtl8187_tx(struct ieee80211_hw *dev, struct sk_buff *skb, | |||
| 169 | struct urb *urb; | 174 | struct urb *urb; |
| 170 | __le16 rts_dur = 0; | 175 | __le16 rts_dur = 0; |
| 171 | u32 flags; | 176 | u32 flags; |
| 177 | int rc; | ||
| 172 | 178 | ||
| 173 | urb = usb_alloc_urb(0, GFP_ATOMIC); | 179 | urb = usb_alloc_urb(0, GFP_ATOMIC); |
| 174 | if (!urb) { | 180 | if (!urb) { |
| @@ -208,7 +214,11 @@ static int rtl8187_tx(struct ieee80211_hw *dev, struct sk_buff *skb, | |||
| 208 | info->dev = dev; | 214 | info->dev = dev; |
| 209 | usb_fill_bulk_urb(urb, priv->udev, usb_sndbulkpipe(priv->udev, 2), | 215 | usb_fill_bulk_urb(urb, priv->udev, usb_sndbulkpipe(priv->udev, 2), |
| 210 | hdr, skb->len, rtl8187_tx_cb, skb); | 216 | hdr, skb->len, rtl8187_tx_cb, skb); |
| 211 | usb_submit_urb(urb, GFP_ATOMIC); | 217 | rc = usb_submit_urb(urb, GFP_ATOMIC); |
| 218 | if (rc < 0) { | ||
| 219 | usb_free_urb(urb); | ||
| 220 | kfree_skb(skb); | ||
| 221 | } | ||
| 212 | 222 | ||
| 213 | return 0; | 223 | return 0; |
| 214 | } | 224 | } |
