aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging
diff options
context:
space:
mode:
authorEric Dumazet <edumazet@google.com>2012-09-10 21:22:11 +0200
committerBen Hutchings <ben@decadent.org.uk>2012-09-19 15:05:20 +0100
commit10b4b8b20803ba45a77fec99a311bed774decc71 (patch)
tree0f2e52ac38bf191f3af3cbad9b3f39ed43b1097a /drivers/staging
parentd3759eaf54695290840a06248512366b4e87a9cc (diff)
downloadkernel_samsung_smdk4412-10b4b8b20803ba45a77fec99a311bed774decc71.zip
kernel_samsung_smdk4412-10b4b8b20803ba45a77fec99a311bed774decc71.tar.gz
kernel_samsung_smdk4412-10b4b8b20803ba45a77fec99a311bed774decc71.tar.bz2
staging: r8712u: fix bug in r8712_recv_indicatepkt()
commit abf02cfc179bb4bd30d05f582d61b3b8f429b813 upstream. 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=45071 Signed-off-by: Eric Dumazet <edumazet@google.com> Cc: Dave Jones <davej@redhat.com> Acked-by: Larry Finger <Larry.Finger@lwfinger.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Diffstat (limited to 'drivers/staging')
-rw-r--r--drivers/staging/rtl8712/recv_linux.c7
1 files changed, 1 insertions, 6 deletions
diff --git a/drivers/staging/rtl8712/recv_linux.c b/drivers/staging/rtl8712/recv_linux.c
index 0e26d5f..495ee12 100644
--- a/drivers/staging/rtl8712/recv_linux.c
+++ b/drivers/staging/rtl8712/recv_linux.c
@@ -117,13 +117,8 @@ void r8712_recv_indicatepkt(struct _adapter *padapter,
if (skb == NULL)
goto _recv_indicatepkt_drop;
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_set_tail_pointer(skb, skb->len);
if ((pattrib->tcpchk_valid == 1) && (pattrib->tcp_chkrpt == 1))
skb->ip_summed = CHECKSUM_UNNECESSARY;
else