From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eric Dumazet Subject: Re: WARNING, net/core/dev.c, skb_gso_segment, 2.6.39-rc7-git11 inclusive Date: Tue, 17 May 2011 15:16:35 +0200 Message-ID: <1305638195.2850.97.camel@edumazet-laptop> References: <75df1ebd245faa29f6d9c067bad94e8e@visp.net.lb> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: QUOTED-PRINTABLE Cc: netdev@vger.kernel.org To: Denys Fedoryshchenko Return-path: Received: from mail-wy0-f174.google.com ([74.125.82.174]:55842 "EHLO mail-wy0-f174.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754640Ab1EQNQj (ORCPT ); Tue, 17 May 2011 09:16:39 -0400 Received: by wya21 with SMTP id 21so366827wya.19 for ; Tue, 17 May 2011 06:16:38 -0700 (PDT) In-Reply-To: <75df1ebd245faa29f6d9c067bad94e8e@visp.net.lb> Sender: netdev-owner@vger.kernel.org List-ID: Le mardi 17 mai 2011 =C3=A0 15:52 +0300, Denys Fedoryshchenko a =C3=A9c= rit : > Hi >=20 > Just tried some non-standard pedit rules to modify tcp data, and got= =20 > WARNING almost instantly. > Maybe it is just invalid pedit, but probably will be interesting. My= =20 > idea was to modify outgoing tcp window size, > rules was not complete by mistake, but got that warning. >=20 > Rules > tc qdisc del dev eth1 root > tc qdisc add dev eth1 root handle 1: htb default 1 > tc class add dev eth1 parent 1: classid 1:1 htb rate 900Mbit ceil=20 > 900Mbit burst 10000 cburst 10000 quantum 60000 > tc qdisc add dev eth1 parent 1:1 handle 11 pfifo limit 10000 >=20 > tc filter add dev eth1 prio 1 protocol ip parent 1: \ > u32 match ip protocol 0x06 0xff match ip dport 80 0x2000 flowid 1:= 1 \ > match u16 0x0000 0xffff at 34 action gact ok >=20 > tc filter add dev eth1 prio 1 protocol ip parent 1: \ > u32 match ip protocol 0x06 0xff match ip dport 80 0x2000 flowid 1:= 1 \ > action pedit munge offset 34 u16 set 0x2000 \ > pipe csum ip and tcp >=20 > Warning: >=20 >=20 > 2298.298075] GACT probability on > [ 2298.369166] ------------[ cut here ]------------ > [ 2298.369175] WARNING: at net/core/dev.c:1876=20 > skb_gso_segment+0x156/0x2b8() > [ 2298.369178] Hardware name: RS700-E6/ERS4 > [ 2298.369181] igb: caps=3D(0x21143b3, 0x0) len=3D11636 data_len=3D0= =20 > ip_summed=3D0 > [ 2298.369184] Modules linked in: act_gact act_csum act_pedit cls_u3= 2=20 > sch_htb ipv6 i2c_i801 i7core_edac i2c_core edac_core rtc_cmos igb e1= 000e=20 > rtc_core rtc_lib iTCO_wdt ghes hed button > [ 2298.369200] Pid: 0, comm: swapper Not tainted 2.6.39-rc7-insat #1 > [ 2298.369203] Call Trace: > [ 2298.369205] []=20 > warn_slowpath_common+0x80/0x98 > [ 2298.369218] [] warn_slowpath_fmt+0x41/0x43 > [ 2298.369222] [] skb_gso_segment+0x156/0x2b8 > [ 2298.369227] [] dev_hard_start_xmit+0x37c/0x522 > [ 2298.369233] [] sch_direct_xmit+0x67/0x18d > [ 2298.369237] [] __qdisc_run+0x10a/0x126 > [ 2298.369241] [] dev_queue_xmit+0x393/0x4c3 > [ 2298.369247] [] neigh_resolve_output+0x28f/0x2e= d > [ 2298.369250] [] ? nf_hook_slow+0x6d/0x108 > [ 2298.369253] [] ? ip_options_build+0x143/0x143 > [ 2298.369255] [] ip_finish_output+0x260/0x2a3 > [ 2298.369257] [] ip_output+0xa6/0xad > [ 2298.369258] [] ? __ip_local_out+0x9c/0x9e > [ 2298.369260] [] ip_local_out+0x24/0x28 > [ 2298.369262] [] ip_queue_xmit+0x2dd/0x328 > [ 2298.369265] [] ? __skb_clone+0x29/0xf2 > [ 2298.369268] [] tcp_transmit_skb+0x74d/0x78b > [ 2298.369270] [] tcp_write_xmit+0x806/0x8f5 > [ 2298.369272] [] ?=20 > tcp_established_options+0x2e/0xa9 > [ 2298.369274] []=20 > __tcp_push_pending_frames+0x20/0x7c > [ 2298.369276] [] tcp_rcv_established+0x104/0x60f > [ 2298.369278] [] tcp_v4_do_rcv+0x1ba/0x377 > [ 2298.369283] [] ? security_sock_rcv_skb+0x11/0x= 13 > [ 2298.369284] [] tcp_v4_rcv+0x51c/0x869 > [ 2298.369287] [] ? ip_rcv+0x28a/0x28a > [ 2298.369289] [] ? ip_rcv+0x28a/0x28a > [ 2298.369291] []=20 > ip_local_deliver_finish+0x178/0x235 > [ 2298.369293] [] ip_local_deliver+0x72/0x79 > [ 2298.369295] [] ip_rcv_finish+0x2dc/0x306 > [ 2298.369297] [] ip_rcv+0x25c/0x28a > [ 2298.369299] [] __netif_receive_skb+0x4b8/0x4ea > [ 2298.369301] [] netif_receive_skb+0x67/0x6e > [ 2298.369303] [] napi_skb_finish+0x24/0x3b > [ 2298.369305] [] napi_gro_receive+0xa8/0xad > [ 2298.369309] [] igb_poll+0x783/0xaaa [igb] > [ 2298.369314] [] ? put_device+0x12/0x14 > [ 2298.369317] [] ? scsi_next_command+0x3e/0x46 > [ 2298.369319] [] net_rx_action+0xa3/0x1bb > [ 2298.369322] [] __do_softirq+0x83/0x114 > [ 2298.369324] [] call_softirq+0x1c/0x30 > [ 2298.369328] [] do_softirq+0x33/0x68 > [ 2298.369329] [] irq_exit+0x3f/0x88 > [ 2298.369331] [] do_IRQ+0x98/0xaf > [ 2298.369334] [] common_interrupt+0x13/0x13 > [ 2298.369335] [] ?=20 > __hrtimer_start_range_ns+0x2a3/0x2b5 > [ 2298.369343] [] ? intel_idle+0xc3/0xe9 > [ 2298.369345] [] ? intel_idle+0xa6/0xe9 > [ 2298.369348] [] cpuidle_idle_call+0x94/0xcd > [ 2298.369350] [] cpu_idle+0x5a/0x91 > [ 2298.369353] [] rest_init+0x68/0x6a > [ 2298.369356] [] start_kernel+0x2f3/0x2fe > [ 2298.369358] []=20 > x86_64_start_reservations+0x82/0x86 > [ 2298.369360] [] x86_64_start_kernel+0xe9/0xf0 > [ 2298.369361] ---[ end trace 408f79c72c45f490 ]--- > [ 2298.369807] ------------[ cut here ]------------ > [ 2298.369809] WARNING: at net/core/dev.c:1876=20 > skb_gso_segment+0x156/0x2b8() > [ 2298.369810] Hardware name: RS700-E6/ERS4 > [ 2298.369811] igb: caps=3D(0x21143b3, 0x0) len=3D2948 data_len=3D0=20 > ip_summed=3D0 > [ 2298.369812] Modules linked in: act_gact act_csum act_pedit cls_u3= 2=20 > sch_htb ipv6 i2c_i801 i7core_edac i2c_core edac_core rtc_cmos igb e1= 000e=20 > rtc_core rtc_lib iTCO_wdt ghes hed button > [ 2298.369818] Pid: 5867, comm: syslog-ng Tainted: G W =20 > 2.6.39-rc7-insat #1 > [ 2298.369819] Call Trace: > [ 2298.369820] []=20 > warn_slowpath_common+0x80/0x98 > [ 2298.369824] [] warn_slowpath_fmt+0x41/0x43 > [ 2298.369826] [] skb_gso_segment+0x156/0x2b8 > [ 2298.369828] [] dev_hard_start_xmit+0x37c/0x522 > [ 2298.369830] [] sch_direct_xmit+0x67/0x18d > [ 2298.369831] [] __qdisc_run+0x10a/0x126 > [ 2298.369833] [] dev_queue_xmit+0x393/0x4c3 > [ 2298.369835] [] neigh_resolve_output+0x28f/0x2e= d > [ 2298.369837] [] ? nf_hook_slow+0x6d/0x108 > [ 2298.369838] [] ? ip_options_build+0x143/0x143 > [ 2298.369840] [] ip_finish_output+0x260/0x2a3 > [ 2298.369841] [] ip_output+0xa6/0xad > [ 2298.369843] [] ? __ip_local_out+0x9c/0x9e > [ 2298.369844] [] ip_local_out+0x24/0x28 > [ 2298.369846] [] ip_queue_xmit+0x2dd/0x328 > [ 2298.369848] [] ? __skb_clone+0x29/0xf2 > [ 2298.369850] [] tcp_transmit_skb+0x74d/0x78b > [ 2298.369852] [] tcp_write_xmit+0x806/0x8f5 > [ 2298.369854] [] ?=20 > tcp_established_options+0x2e/0xa9 > [ 2298.369856] []=20 > __tcp_push_pending_frames+0x20/0x7c > [ 2298.369857] [] tcp_rcv_established+0x104/0x60f > [ 2298.369859] [] tcp_v4_do_rcv+0x1ba/0x377 > [ 2298.369861] [] ? security_sock_rcv_skb+0x11/0x= 13 > [ 2298.369863] [] tcp_v4_rcv+0x51c/0x869 > [ 2298.369865] [] ? ip_rcv+0x28a/0x28a > [ 2298.369867] [] ? ip_rcv+0x28a/0x28a > [ 2298.369869] []=20 > ip_local_deliver_finish+0x178/0x235 > [ 2298.369870] [] ip_local_deliver+0x72/0x79 > [ 2298.369872] [] ip_rcv_finish+0x2dc/0x306 > [ 2298.369874] [] ip_rcv+0x25c/0x28a > [ 2298.369876] [] __netif_receive_skb+0x4b8/0x4ea > [ 2298.369878] [] netif_receive_skb+0x67/0x6e > [ 2298.369879] [] napi_skb_finish+0x24/0x3b > [ 2298.369881] [] napi_gro_receive+0xa8/0xad > [ 2298.369884] [] igb_poll+0x783/0xaaa [igb] > [ 2298.369886] [] ? x86_pmu_enable+0x1fc/0x263 > [ 2298.369889] [] ? perf_ctx_adjust_freq+0x29/0x1= 0a > [ 2298.369890] [] net_rx_action+0xa3/0x1bb > [ 2298.369893] [] ?=20 > __rcu_process_callbacks+0x75/0x265 > [ 2298.369895] [] __do_softirq+0x83/0x114 > [ 2298.369897] [] call_softirq+0x1c/0x30 > [ 2298.369899] [] do_softirq+0x33/0x68 > [ 2298.369900] [] irq_exit+0x3f/0x88 > [ 2298.369902] [] do_IRQ+0x98/0xaf > [ 2298.369904] [] common_interrupt+0x13/0x13 > [ 2298.369905] [] ?=20 > atomic_notifier_call_chain+0x13/0x15 > [ 2298.369910] [] ? do_con_write+0x57b/0x1db7 > [ 2298.369912] [] ? do_con_write+0x452/0x1db7 > [ 2298.369913] [] ? console_unlock+0x170/0x19a > [ 2298.369915] [] ? con_flush_chars+0x3e/0x43 > [ 2298.369917] [] ? up+0x34/0x39 > [ 2298.369918] [] con_write+0x11/0x26 > [ 2298.369920] [] ? add_wait_queue+0x3f/0x46 > [ 2298.369923] [] n_tty_write+0x239/0x35a > [ 2298.369925] [] ? try_to_wake_up+0x240/0x240 > [ 2298.369926] [] tty_write+0x19d/0x22f > [ 2298.369928] [] ? n_tty_ioctl+0xab/0xab > [ 2298.369931] [] vfs_write+0xae/0x133 > [ 2298.369933] [] sys_write+0x45/0x6c > [ 2298.369935] [] system_call_fastpath+0x16/0x1b > [ 2298.369936] ---[ end trace 408f79c72c45f491 ]--- >=20 > -- Hi Denys net/sched/act_csum.c sets skb->ip_summed =3D CHECKSUM_NONE; after csum changes. and skb_gso_segment() barfs if skb->ip_summed !=3D CHECKSUM_PARTIAL You could disable GRO for the time being.