Project

General

Profile

Bug #139

Updated by Sven Eckelmann about 7 years ago

batman-adv rv1815 

 By running the trunk rv1815, I found that there skb_over_panic issue happens. It looks that when the aggregate packet length reach "537", skb_put will be failed with skb_over_panic.  

 Is anyone have any idea about this? How can I prevent this error happens? 

 Please let me know if any further information is needed. Thanks in advance.  

 System: mips 
 OS: Linux 

 Log with Debug level 3 "batctl ll 3" 
 <pre> 
 
 [         901] Forwarding packet (originator 873e1856, seqno 6760, TQ 7, TTL 48, IDF on) on interface ad120 [00:1a:dd:b1:6c:32] 
 [         901] Received BATMAN packet via NB: 87311058, IF: ad120 [00:1a:dd:b1:6c:32] (from OG: 87311068, via prev OG: 8731106e, seqno 6760, tq 235, TTL 48, V 12, IDF 1) 
 [         901] bidirectional: orig = 871c1300          neigh = 871c1380          => own_bcast =    0, real recv = 64, local tq:     0, asym_penalty: 255, total tq:     0 
 [         901] Drop packet: not received via bidirectional link 
 [         901] Received BATMAN packet via NB: 87337058, IF: ad120 [00:1a:dd:b1:6c:32] (from OG: 87337068, via prev OG: 8733706e, seqno 6760, tq 235, TTL 48, V 12, IDF 1) 
 [         901] bidirectional: orig = 871c1300          neigh = 871c1d80          => own_bcast =    0, real recv = 64, local tq:     0, asym_penalty: 255, total tq:     0 
 [         901] Drop packet: not received via bidirectional link 
 [         901] Received BATMAN packet via NB: 8731f058, IF: ad120 [00:1a:dd:b1:6c:32] (from OG: 8731f068, via prev OG: 8731f06e, seqno 4574, tq 255, TTL 50, V 12, IDF 0) 
 [         901] updating last_seqno: old 4573, new 4574 
 [         901] bidirectional: orig = 871c1380          neigh = 871c1380          => own_bcast =    0, real recv = 64, local tq:     0, asym_penalty: 255, total tq:     0 
 [         901] Forwarding packet: tq_orig: 0, tq_avg: 12, tq_forw: 0, ttl_orig: 49, ttl_forw: 49 
 [         901] new_aggregated_packet:140 -- b4 skb_put, len=42 
 [         901] Forwarding packet: rebroadcast neighbor packet with direct link flag 
 [         901] Received BATMAN packet via NB: 87323058, IF: ad120 [00:1a:dd:b1:6c:32] (from OG: 87323068, via prev OG: 8732306e, seqno 4574, tq 227, TTL 48, V 12, IDF 1) 
 [         901] bidirectional: orig = 871c1380          neigh = 871c1300          => own_bcast =    0, real recv = 13, local tq:     0, asym_penalty: 126, total tq:     0 
 [         901] Drop packet: not received via bidirectional link 
 [         901] Received BATMAN packet via NB: 87322058, IF: ad120 [00:1a:dd:b1:6c:32] (from OG: 87322068, via prev OG: 8732206e, seqno 4574, tq 245, TTL 49, V 12, IDF 1) 
 [         901] bidirectional: orig = 871c1380          neigh = 871c1400          => own_bcast =    0, real recv = 64, local tq:     0, asym_penalty: 255, total tq:     0 
 [         901] Drop packet: not received via bidirectional link 
 [         901] Forwarding packet (originator 8729b056, seqno 4574, TQ 0, TTL 49, IDF on) on interface ad120 [00:1a:dd:b1:6c:32] 
 [         901] Received BATMAN packet via NB: 87339058, IF: ad120 [00:1a:dd:b1:6c:32] (from OG: 87339068, via prev OG: 8733906e, seqno 4574, tq 245, TTL 49, V 12, IDF 1) 
 [         901] bidirectional: orig = 871c1380          neigh = 871c1d80          => own_bcast =    0, real recv = 64, local tq:     0, asym_penalty: 255, total tq:     0 
 [         901] Drop packet: not received via bidirectional link 
 skb_over_panic: text:87389b44 len:534 put:534 head:873e1c00 data:873e1c4e tail:0x873e1e64 end:0x873e1e60 dev:<NULL> 
 Kernel bug detected[#1]: 
 Cpu 0 
 $ 0     : 00000000 80330000 00000077 00000001 
 $ 4     : 802f5520 80330000 00000001 803453d4 
 $ 8     : 802f0000 00003117 80330000 80330000 
 $12     : 80330000 00000000 00000000 00008000 
 $16     : 873e1c4e 87246380 00000001 000001fe 
 $20     : 00000216 87246380 00000001 00016097 
 $24     : 00000001 8700e0cc                   
 $28     : 870f8000 870f9e18 87b1d500 801f1088 
 Hi      : 000000e2 
 Lo      : 196e8000 
 epc     : 801f1088 skb_over_panic+0x54/0x60 
     Tainted: P           
 ra      : 801f1088 skb_over_panic+0x54/0x60 
 Status: 1000d403      KERNEL EXL IE  
 Cause : 10800024 
 [[PrId]]    : 00019374 (MIPS 24Kc) 
 Modules linked in: batman_adv ebt_mark_m ebt_mark ebt_vlan ebt_snat ebt_redirect ebt_log ebt_ip ebt_dnat ebt_arpreply ebt_arp ebtable_nat ebtable_filter ebtable_broute ebtables wlan_acl wlan_ccmp wlan_xauth wlan_tkip wlan_wep ath_pci ath_rate_atheros(P) ath_hal(P) wlan_scan_ap wlan_scan_sta wlan gpioctrl 
 Process bat_events (pid: 3135, threadinfo=870f8000, task=879aafa8, tls=00000000) 
 Stack : 00800400 87389b44 00000216 00000216 873e1c00 873e1c4e 873e1e64 873e1e60 
         802c42d0 87246380 801f1190 878014e0 8729b000 87246380 00000001 000001fe 
         87376400 87389b44 8732e600 8732e580 8738ddb8 0000008c 00000216 87246000 
         8729b000 00000000 8729b000 87b1d500 87246380 000001fe 00000216 00000001 
         87246380 87246000 87390000 873821bc 801f9f58 801f9ed0 87381f88 872dd3d0 
         ... 
 Call Trace: 
 [<801f1088>] skb_over_panic+0x54/0x60 
 [<801f1190>] skb_put+0x48/0x5c 
 [<87389b44>] add_bat_packet_to_list+0x338/0x4e8 [batman_adv] 
 [<873821bc>] schedule_own_packet+0x188/0x1b4 [batman_adv] 
 [<87382b50>] send_outstanding_bat_packet+0x36c/0x3c8 [batman_adv] 
 [<8009dd88>] run_workqueue+0xb4/0x14c 
 [<8009dee4>] worker_thread+0xc4/0xe4 
 [<800a17e4>] kthread+0x58/0x98 
 [<8006bf94>] kernel_thread_helper+0x10/0x18 


 Code: 24846870    0c02375b    afa90020 <0200000d> 0807c423    00000000    27bdffd0    afbf0028    8c870098  
 [         901] new_aggregated_packet:140 -- b4 skb_put, len=534 
 [         901] Received BATMAN packet via NB: 871e8058, IF: ad120 [00:1a:dd:b1:6c:3panic log area not empty, skipped writing this panic 
 2] (from OG: 871Fatal exception: panic in 5 seconds 
 e8068, via prev OG: 871e806e, seqno 5536, tq 255, TTL 50, V 12, IDF 0) 
 [         901] updating last_seqno: old 5535, new 5536 
 [         901] bidirectional: orig = 871c1400          neigh = 871c1400          => own_bcast =    0, real recv = 64, local tq:     0, asym_penalty: 255, total tq:     0 
 [         901] Forwarding packet: tq_orig: 0, tq_avg: 11, tq_forw: 0, ttl_orig: 49, ttl_forw: 49 
 [         901] new_aggregated_packet:140 -- b4 skb_put, len=36 
 [         901] Forwarding packet: rebroadcast neighbor packet with direct link flag 
 [         901] Received BATMAN packet via NB: 8733d058, IF: ad120 [00:1a:dd:b1:6c:32] (from OG: 8733d068, via prev OG: 8733d06e, seqno 5536, tq 245, TTL 49, V 12, IDF 1) 
 [         901] bidirectional: orig = 871c1400          neigh = 871c1380          => own_bcast =    0, real recv = 64, local tq:     0, asym_penalty: 255, total tq:     0 
 [         901] Drop packet: not received via bidirectional link 
 [         901] Received BATMAN packet via NB: 872e7058, IF: ad120 [00:1a:dd:b1:6c:32] (from OG: 872e7068, via prev OG: 872e706e, seqno 6971, tq 255, TTL 50, V 12, IDF 0) 
 [         901] updating last_seqno: old 6970, new 6971 
 [         901] bidirectional: orig = 871c1d80          neig 

 </pre> 



 



 Debug Message added: 
 <pre> 
 
 Index: aggregation.c 
 =================================================================== 
 --- aggregation.c 	 (revision 1815) 
 +++ aggregation.c 	 (working copy) 
 @@ -135,6 +135,9 @@ 
 
 	 INIT_HLIST_NODE(&forw_packet_aggr->list); 
 
 +      bat_dbg(DBG_ROUTES, bat_priv, 
 +              "%s:%d -- b4 skb_put, len=%d\n",  
 +              +func+, +LINE+, packet_len); 
 	 skb_buff = skb_put(forw_packet_aggr->skb, packet_len); 
 	 forw_packet_aggr->packet_len = packet_len; 
 	 memcpy(skb_buff, packet_buff, packet_len); 
 @@ -169,7 +172,6 @@ 
 		       bool direct_link) 
  { 
 	 unsigned char *skb_buff; 
 - 
 	 skb_buff = skb_put(forw_packet_aggr->skb, packet_len); 
 	 memcpy(skb_buff, packet_buff, packet_len); 
 	 forw_packet_aggr->packet_len += packet_len; 
 @@ -234,6 +236,9 @@ 
 				       send_time, direct_link, 
 				       if_incoming, own_packet); 
 	 } else { 
 +          bat_dbg(DBG_ROUTES, bat_priv, 
 +                  "%s:%d -- b4 skb_put, len=%d\n",  
 +                  +func+, +LINE+, packet_len); 
 		 aggregate(forw_packet_aggr, 
 			   packet_buff, packet_len, 
 			   direct_link); 
 </pre> 


 


Back