* [PATCH] staging: r8712u: fix bug in r8712_recv_indicatepkt() @ 2012-09-10 19:22 Eric Dumazet 2012-09-10 19:40 ` Larry Finger 0 siblings, 1 reply; 6+ messages in thread From: Eric Dumazet @ 2012-09-10 19:22 UTC (permalink / raw) To: Greg Kroah-Hartman; +Cc: Larry Finger, netdev, Dave Jones From: Eric Dumazet <edumazet@google.com> 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: Larry Finger <Larry.Finger@lwfinger.net> Cc: Dave Jones <davej@redhat.com> Cc: stable@vger.kernel.org [2.6.37+] --- drivers/staging/rtl8712/recv_linux.c | 7 +------ 1 file changed, 1 insertion(+), 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 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH] staging: r8712u: fix bug in r8712_recv_indicatepkt() 2012-09-10 19:22 [PATCH] staging: r8712u: fix bug in r8712_recv_indicatepkt() Eric Dumazet @ 2012-09-10 19:40 ` Larry Finger 0 siblings, 0 replies; 6+ messages in thread From: Larry Finger @ 2012-09-10 19:40 UTC (permalink / raw) To: Eric Dumazet; +Cc: Greg Kroah-Hartman, netdev, Dave Jones On 09/10/2012 02:22 PM, Eric Dumazet wrote: > From: Eric Dumazet <edumazet@google.com> > > 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: Larry Finger <Larry.Finger@lwfinger.net> > Cc: Dave Jones <davej@redhat.com> > Cc: stable@vger.kernel.org [2.6.37+] Acked-by: Larry Finger <Larry.Finger@lwfinger.net> Larry > --- > drivers/staging/rtl8712/recv_linux.c | 7 +------ > 1 file changed, 1 insertion(+), 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 > > > ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] staging: r8712u: fix bug in r8712_recv_indicatepkt() @ 2012-09-12 17:52 Aki Parviainen 2012-09-12 18:25 ` Eric Dumazet 0 siblings, 1 reply; 6+ messages in thread From: Aki Parviainen @ 2012-09-12 17:52 UTC (permalink / raw) To: edumazet; +Cc: netdev >From: Eric Dumazet <edumazet@google.com> > >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: Larry Finger <Larry.Finger@lwfinger.net> >Cc: Dave Jones <davej@redhat.com> >Cc: stable@vger.kernel.org [2.6.37+] Tested this patch on 64bit linux-3.6-rc5 & fixes problem for me. Thank you very much for fixing this very annoying & long time open bug! Tested-by: Aki Parviainen <aki.parviainen@iki.fi> Aki >--- > drivers/staging/rtl8712/recv_linux.c | 7 +------ > 1 file changed, 1 insertion(+), 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 ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] staging: r8712u: fix bug in r8712_recv_indicatepkt() 2012-09-12 17:52 Aki Parviainen @ 2012-09-12 18:25 ` Eric Dumazet 0 siblings, 0 replies; 6+ messages in thread From: Eric Dumazet @ 2012-09-12 18:25 UTC (permalink / raw) To: Aki Parviainen; +Cc: edumazet, netdev On Wed, 2012-09-12 at 20:52 +0300, Aki Parviainen wrote: > Tested this patch on 64bit linux-3.6-rc5 & fixes problem for me. Thank > you very much for fixing this very annoying & long time open bug! > > Tested-by: Aki Parviainen <aki.parviainen@iki.fi> Thanks for testing ! ^ permalink raw reply [flat|nested] 6+ messages in thread
[parent not found: <50369925.3050705@lwfinger.net>]
[parent not found: <1345757200.5904.1890.camel@edumazet-glaptop>]
[parent not found: <50378B35.80307@lwfinger.net>]
[parent not found: <20120824.111948.680531915905273128.davem@davemloft.net>]
[parent not found: <5037A4B0.3080208@lwfinger.net>]
[parent not found: <1345825095.19483.19.camel@edumazet-glaptop>]
[parent not found: <1345825432.19483.20.camel@edumazet-glaptop>]
[parent not found: <5037B2AC.50704@lwfinger.net>]
[parent not found: <1345830424.19483.69.camel@edumazet-glaptop>]
[parent not found: <503BB49C.5010402@lwfinger.net>]
* Re: Regression associated with commit c8628155ece3 - "tcp: reduce out_of_order memory use" @ 2012-09-10 8:39 ` Eric Dumazet 2012-09-10 14:53 ` Larry Finger 0 siblings, 1 reply; 6+ messages in thread From: Eric Dumazet @ 2012-09-10 8:39 UTC (permalink / raw) To: Larry Finger Cc: linville-2XuSBdqkA4R54TAoqtyWWQ, linux-wireless-u79uwXL29TY76Z2rM5mHXA, netdev On Mon, 2012-08-27 at 12:55 -0500, Larry Finger wrote: > I have prepared a patch to fix all the unchecked allocations. > > Over the weekend I made some progress. To test the latest vendor driver, I > installed a 32-bit system. Their driver is not compatible with a 64-bit system. > I found that not only did the vendor driver work with secure sites, but so did > the in-kernel version. I now have tcpdump output for the 32-bit case that works, > and the 64-bit case that fails. It seems likely that I missed some 32/64 bit > incompatibility when I did the conversion. > > Thanks for all your help in trying to resolve this issue. > > Larry > > Hi Larry It appears I have a D-Link N300 (DWA-131) nano USB adapter, using staging/rtl8712 driver. I tried many kernel versions (including 3.3) and none seems to work reliably. Sometime, I have some traffic but only for about 50 frames... It might be because my access point is a netgear wndr3800, because I have following warning a bit before the freezes : r8712u: [r8712_got_addbareq_event_callback] mac = 20:4e:7f:5a:cd:30, sea = 80, tid = 0 Thanks -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Regression associated with commit c8628155ece3 - "tcp: reduce out_of_order memory use" 2012-09-10 8:39 ` Regression associated with commit c8628155ece3 - "tcp: reduce out_of_order memory use" Eric Dumazet @ 2012-09-10 14:53 ` Larry Finger 2012-09-10 15:04 ` Eric Dumazet 0 siblings, 1 reply; 6+ messages in thread From: Larry Finger @ 2012-09-10 14:53 UTC (permalink / raw) To: Eric Dumazet; +Cc: linville, linux-wireless, netdev On 09/10/2012 03:39 AM, Eric Dumazet wrote: > On Mon, 2012-08-27 at 12:55 -0500, Larry Finger wrote: > >> I have prepared a patch to fix all the unchecked allocations. >> >> Over the weekend I made some progress. To test the latest vendor driver, I >> installed a 32-bit system. Their driver is not compatible with a 64-bit system. >> I found that not only did the vendor driver work with secure sites, but so did >> the in-kernel version. I now have tcpdump output for the 32-bit case that works, >> and the 64-bit case that fails. It seems likely that I missed some 32/64 bit >> incompatibility when I did the conversion. >> >> Thanks for all your help in trying to resolve this issue. >> >> Larry >> >> > > Hi Larry > > It appears I have a D-Link N300 (DWA-131) nano USB adapter, using > staging/rtl8712 driver. > > I tried many kernel versions (including 3.3) and none seems to work > reliably. > > Sometime, I have some traffic but only for about 50 frames... > It might be because my access point is a netgear wndr3800, because I > have following warning a bit before the freezes : > > r8712u: [r8712_got_addbareq_event_callback] mac = 20:4e:7f:5a:cd:30, sea = 80, tid = 0 Eric, What is the md5sum for the firmware file /lib/firmware/rtlwifi/rtl8712u.bin? Over the weekend, there was a report of another device that had problems with firmware that was added to the linux-firmware repo in July with md5sum of c6f3b7b880aefb7b3f249428d659bdbb. An older version with md5sum of 200fd952db3cc9259b1fd05e3e51966f works in that case. I'll send you this one privately. I have a Netgear WNDR3300 and also get the addbareq events, but I do not get freezes. I'm not sure the message is correlated. Larry ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Regression associated with commit c8628155ece3 - "tcp: reduce out_of_order memory use" @ 2012-09-10 15:04 ` Eric Dumazet 2012-09-10 17:55 ` [PATCH] staging: r8712u: fix bug in r8712_recv_indicatepkt() Eric Dumazet 0 siblings, 1 reply; 6+ messages in thread From: Eric Dumazet @ 2012-09-10 15:04 UTC (permalink / raw) To: Larry Finger Cc: linville-2XuSBdqkA4R54TAoqtyWWQ, linux-wireless-u79uwXL29TY76Z2rM5mHXA, netdev On Mon, 2012-09-10 at 09:53 -0500, Larry Finger wrote: > Eric, > > What is the md5sum for the firmware file /lib/firmware/rtlwifi/rtl8712u.bin? > Over the weekend, there was a report of another device that had problems with > firmware that was added to the linux-firmware repo in July with md5sum of > c6f3b7b880aefb7b3f249428d659bdbb. An older version with md5sum of > 200fd952db3cc9259b1fd05e3e51966f works in that case. I'll send you this one > privately. > > I have a Netgear WNDR3300 and also get the addbareq events, but I do not get > freezes. I'm not sure the message is correlated. > It seems I have the c6f3b7b880aefb7b3f249428d659bdbb one # md5sum /data/src/linux-firmware/rtlwifi/rtl8712u.bin /lib/firmware/rtlwifi/rtl8712u.bin c6f3b7b880aefb7b3f249428d659bdbb /data/src/linux-firmware/rtlwifi/rtl8712u.bin c6f3b7b880aefb7b3f249428d659bdbb /lib/firmware/rtlwifi/rtl8712u.bin Since I have linux-firmware tree, should I go back to initial commit commit 8f919160792e4702c6b7a67a243cea4f757407e4 Author: Larry Finger <Larry.Finger-tQ5ms3gMjBLk1uMJSBkQmQ@public.gmane.org> Date: Mon Nov 1 23:56:52 2010 -0500 linux-firmware: Add firmware files for Realtek RTL8712U and RTL8192CE Thanks ! -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH] staging: r8712u: fix bug in r8712_recv_indicatepkt() 2012-09-10 15:04 ` Eric Dumazet @ 2012-09-10 17:55 ` Eric Dumazet 2012-09-10 18:34 ` Larry Finger 0 siblings, 1 reply; 6+ messages in thread From: Eric Dumazet @ 2012-09-10 17:55 UTC (permalink / raw) To: Larry Finger; +Cc: linville, linux-wireless, netdev From: Eric Dumazet <edumazet@google.com> 64bit arches have a buggy r8712u driver, let's fix it. Signed-off-by: Eric Dumazet <edumazet@google.com> --- drivers/staging/rtl8712/recv_linux.c | 7 +------ 1 file changed, 1 insertion(+), 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 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH] staging: r8712u: fix bug in r8712_recv_indicatepkt() 2012-09-10 17:55 ` [PATCH] staging: r8712u: fix bug in r8712_recv_indicatepkt() Eric Dumazet @ 2012-09-10 18:34 ` Larry Finger 0 siblings, 0 replies; 6+ messages in thread From: Larry Finger @ 2012-09-10 18:34 UTC (permalink / raw) To: Eric Dumazet Cc: linville-2XuSBdqkA4R54TAoqtyWWQ, linux-wireless-u79uwXL29TY76Z2rM5mHXA, netdev, Greg Kroah-Hartman On 09/10/2012 12:55 PM, Eric Dumazet wrote: > From: Eric Dumazet <edumazet-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org> > > 64bit arches have a buggy r8712u driver, let's fix it. > > Signed-off-by: Eric Dumazet <edumazet-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org> > --- > drivers/staging/rtl8712/recv_linux.c | 7 +------ > 1 file changed, 1 insertion(+), 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 Eric, Thanks for this. It works for me. I had looked at this code a number of times, but for some reason, I thought that the u.hdr.rx_yyyy parameters were like 32-bit systems and that all 4 values were pointers, and not like 64-bit systems, thus the funny conversion. Strange that the bug was never triggered until commit c8628155ece3 - this code has not changed since the driver was accepted into 2.6.37. A few points on the patch. As the driver is in staging, the patch needs to go to Greg Kroah-Hartman. In addition, please add the "Cc: Stable <stable-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>" line. You may also give an a s-o-b for me. Finally, this patch should fix https://bugzilla.redhat.com/show_bug.cgi?id=847525, and https://bugzilla.kernel.org/show_bug.cgi?id=45071. Larry -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2012-09-12 18:25 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-09-10 19:22 [PATCH] staging: r8712u: fix bug in r8712_recv_indicatepkt() Eric Dumazet
2012-09-10 19:40 ` Larry Finger
-- strict thread matches above, loose matches on Subject: below --
2012-09-12 17:52 Aki Parviainen
2012-09-12 18:25 ` Eric Dumazet
[not found] <50369925.3050705@lwfinger.net>
[not found] ` <1345757200.5904.1890.camel@edumazet-glaptop>
[not found] ` <50378B35.80307@lwfinger.net>
[not found] ` <20120824.111948.680531915905273128.davem@davemloft.net>
[not found] ` <5037A4B0.3080208@lwfinger.net>
[not found] ` <1345825095.19483.19.camel@edumazet-glaptop>
[not found] ` <1345825432.19483.20.camel@edumazet-glaptop>
[not found] ` <5037B2AC.50704@lwfinger.net>
[not found] ` <1345830424.19483.69.camel@edumazet-glaptop>
[not found] ` <503BB49C.5010402@lwfinger.net>
2012-09-10 8:39 ` Regression associated with commit c8628155ece3 - "tcp: reduce out_of_order memory use" Eric Dumazet
2012-09-10 14:53 ` Larry Finger
2012-09-10 15:04 ` Eric Dumazet
2012-09-10 17:55 ` [PATCH] staging: r8712u: fix bug in r8712_recv_indicatepkt() Eric Dumazet
2012-09-10 18:34 ` Larry Finger
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).