Commit abf02cfc authored by Eric Dumazet's avatar Eric Dumazet Committed by Greg Kroah-Hartman

staging: r8712u: fix bug in r8712_recv_indicatepkt()

64bit arches have a buggy r8712u driver, let's fix it.

skb->tail must be set properly or network stack behavior is undefined.

Addresses https://bugzilla.redhat.com/show_bug.cgi?id=847525
Addresses https://bugzilla.kernel.org/show_bug.cgi?id=45071Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
Cc: Dave Jones <davej@redhat.com>
Cc: stable <stable@vger.kernel.org> [2.6.37+]
Acked-by: default avatarLarry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 6d7d9798
...@@ -117,13 +117,8 @@ void r8712_recv_indicatepkt(struct _adapter *padapter, ...@@ -117,13 +117,8 @@ void r8712_recv_indicatepkt(struct _adapter *padapter,
if (skb == NULL) if (skb == NULL)
goto _recv_indicatepkt_drop; goto _recv_indicatepkt_drop;
skb->data = precv_frame->u.hdr.rx_data; skb->data = precv_frame->u.hdr.rx_data;
#ifdef NET_SKBUFF_DATA_USES_OFFSET
skb->tail = (sk_buff_data_t)(precv_frame->u.hdr.rx_tail -
precv_frame->u.hdr.rx_head);
#else
skb->tail = (sk_buff_data_t)precv_frame->u.hdr.rx_tail;
#endif
skb->len = precv_frame->u.hdr.len; skb->len = precv_frame->u.hdr.len;
skb_set_tail_pointer(skb, skb->len);
if ((pattrib->tcpchk_valid == 1) && (pattrib->tcp_chkrpt == 1)) if ((pattrib->tcpchk_valid == 1) && (pattrib->tcp_chkrpt == 1))
skb->ip_summed = CHECKSUM_UNNECESSARY; skb->ip_summed = CHECKSUM_UNNECESSARY;
else else
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment