Message ID | 1475178055-16924-2-git-send-email-Jes.Sorensen@redhat.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 1e54134ccad00f76ddf00f3e77db3dc8fdefbb47 |
Delegated to: | Kalle Valo |
Headers | show |
Jes.Sorensen@redhat.com writes: > From: Jes Sorensen <Jes.Sorensen@redhat.com> > > A device running without RX package aggregation could return more data > in the USB packet than the actual network packet. In this case the > could would clone the skb but then determine that that there was no > packet to handle and exit without freeing the cloned skb first. > > This has so far only been observed with 8188eu devices, but could > affect others. > > Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com> Before I commit I'll add: Cc: stable@vger.kernel.org # 4.8+
Jes.Sorensen@redhat.com writes: > From: Jes Sorensen <Jes.Sorensen@redhat.com> > > A device running without RX package aggregation could return more data > in the USB packet than the actual network packet. In this case the > could would clone the skb but then determine that that there was no > packet to handle and exit without freeing the cloned skb first. s/case the/case we/? I can edit that before applying the patch.
Kalle Valo <kvalo@codeaurora.org> writes: > Jes.Sorensen@redhat.com writes: > >> From: Jes Sorensen <Jes.Sorensen@redhat.com> >> >> A device running without RX package aggregation could return more data >> in the USB packet than the actual network packet. In this case the >> could would clone the skb but then determine that that there was no >> packet to handle and exit without freeing the cloned skb first. > > s/case the/case we/? I can edit that before applying the patch. Sounds good - thanks! Jes
Jes Sorensen <Jes.Sorensen@redhat.com> wrote: > From: Jes Sorensen <Jes.Sorensen@redhat.com> > > A device running without RX package aggregation could return more data > in the USB packet than the actual network packet. In this case we > could would clone the skb but then determine that that there was no > packet to handle and exit without freeing the cloned skb first. > > This has so far only been observed with 8188eu devices, but could > affect others. > > Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com> > Cc: stable@vger.kernel.org # 4.8+ 2 patches applied to wireless-drivers.git, thanks. 1e54134ccad0 rtl8xxxu: Fix memory leak in handling rxdesc16 packets 8a55698f2f29 rtl8xxxu: Fix big-endian problem reporting mactime
diff --git a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c index b2d7f6e..a96ff17 100644 --- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c +++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c @@ -5197,7 +5197,12 @@ int rtl8xxxu_parse_rxdesc16(struct rtl8xxxu_priv *priv, struct sk_buff *skb) pkt_offset = roundup(pkt_len + drvinfo_sz + desc_shift + sizeof(struct rtl8xxxu_rxdesc16), 128); - if (pkt_cnt > 1) + /* + * Only clone the skb if there's enough data at the end to + * at least cover the rx descriptor + */ + if (pkt_cnt > 1 && + urb_len > (pkt_offset + sizeof(struct rtl8xxxu_rxdesc16))) next_skb = skb_clone(skb, GFP_ATOMIC); rx_status = IEEE80211_SKB_RXCB(skb);