4,465
社区成员




jimtest pre destroy_conntrack,inirq:0,disable:0,flag:1,f2:1
jimtest aft destroy_conntrack,inirq:0,disable:0,flag:1,f2:1
jimtest pre destroy_conntrack,inirq:0,disable:128,flag:1,f2:1
jimtest pre destroy_conntrack,inirq:0,disable:128,flag:1,f2:1
jimtest aft destroy_conntrack,inirq:0,disable:128,flag:1,f2:1
------------[ cut here ]------------
WARNING: at kernel/softirq.c:159 local_bh_enable+0x9c/0xc4()
Modules linked in: nfs nfs_acl lockd sunrpc hi3521_adec(P) hi3521_aenc(P) hi3521_ao(P) hi3521_ai(P) hi3521_sio(P) hidmac tw2865 gpioi2c hi3521_jpegd hi3521_hdmi(P) hi3521_vfmw(P) hi3521_vdec(P) hifb(P) vcmp(P) hi3521_region(P)
hi3521_vda(P) hi3521_ive(P) hi3521_vpss(P) hi3521_vou(P) hi3521_viu(P) hi3521_jpege(P) hi3521_rc(P) hi3521_h264e(P) hi3521_chnl(P) hi3521_group(P) hi3521_venc(P) hi3521_dsu(P) hi3521_tde(P) hi3521_sys(P) hi3521_base(P) hiuser mmz
Backtrace:
[<c0036e00>] (dump_backtrace+0x0/0x110) from [<c03dea14>] (dump_stack+0x18/0x1c)
r6:0000009f r5:c004afd0 r4:00000000 r3:60000193
[<c03de9fc>] (dump_stack+0x0/0x1c) from [<c0043c9c>] (warn_slowpath_common+0x5c/0x6c)
[<c0043c40>] (warn_slowpath_common+0x0/0x6c) from [<c0043cd0>] (warn_slowpath_null+0x24/0x2c)
r8:00000000 r7:00000004 r6:c39ac0c0 r5:c2d330d8 r4:c053c420
r3:00000009
[<c0043cac>] (warn_slowpath_null+0x0/0x2c) from [<c004afd0>] (local_bh_enable+0x9c/0xc4)
[<c004af34>] (local_bh_enable+0x0/0xc4) from [<c02f8668>] (destroy_conntrack+0x114/0x168)
r4:c0561148 r3:60000193
[<c02f8554>] (destroy_conntrack+0x0/0x168) from [<c02f3124>] (nf_conntrack_destroy+0x24/0x38)
r5:ffdfe010 r4:c39ac0c0
[<c02f3100>] (nf_conntrack_destroy+0x0/0x38) from [<c02ccb2c>] (skb_release_head_state+0xc0/0xfc)
[<c02cca6c>] (skb_release_head_state+0x0/0xfc) from [<c02cc874>] (__kfree_skb+0x14/0xd0)
r4:c39ac0c0 r3:00000001
[<c02cc860>] (__kfree_skb+0x0/0xd0) from [<c02cc958>] (consume_skb+0x28/0x4c)
r4:c384eb40 r3:00000001
[<c02cc930>] (consume_skb+0x0/0x4c) from [<c022a21c>] (stmmac_poll+0x290/0xa74)
[<c0229f8c>] (stmmac_poll+0x0/0xa74) from [<c02d4d48>] (net_rx_action+0x134/0x2d4)
[<c02d4c14>] (net_rx_action+0x0/0x2d4) from [<c004aae4>] (__do_softirq+0xd0/0x1b4)
[<c004aa14>] (__do_softirq+0x0/0x1b4) from [<c004ad94>] (irq_exit+0x4c/0x50)
[<c004ad48>] (irq_exit+0x0/0x50) from [<c002c044>] (asm_do_IRQ+0x44/0x8c)
[<c002c000>] (asm_do_IRQ+0x0/0x8c) from [<c0032c58>] (__irq_svc+0x38/0x80)
Exception stack(0xc04d3f40 to 0xc04d3f88)
3f40: c04d2000 c04d2008 c04d3f88 00000000 c056114c c0561150 c04d2000 c04fb804
3f60: 00000001 413fc090 c04dc068 c04d3f94 c04d3f98 c04d3f88 c0034088 c003408c
3f80: 60000013 ffffffff
r6:00000077 r5:fe300100 r4:ffffffff r3:60000013
[<c0034060>] (default_idle+0x0/0x60) from [<c0034764>] (cpu_idle+0xbc/0x110)
[<c00346a8>] (cpu_idle+0x0/0x110) from [<c03dbea0>] (rest_init+0x74/0x78)
[<c03dbe2c>] (rest_init+0x0/0x78) from [<c0008a48>] (start_kernel+0x354/0x360)
[<c00086f4>] (start_kernel+0x0/0x360) from [<8000803c>] (0x8000803c)
---[ end trace 76bb1ab04f33e3d3 ]---
jimtest pre destroy_conntrack,inirq:0,disable:0,flag:1,f2:1
jimtest pre destroy_conntrack,inirq:0,disable:0,flag:1,f2:1
jimtest aft destroy_conntrack,inirq:0,disable:0,flag:1,f2:1
LOG对应代码
void nf_conntrack_destroy(struct nf_conntrack *nfct)
{
void (*destroy)(struct nf_conntrack *);
rcu_read_lock();
destroy = rcu_dereference(nf_ct_destroy);//这里即destroy_conntrack
BUG_ON(destroy == NULL);
destroy(nfct);
rcu_read_unlock();
}
static void
destroy_conntrack(struct nf_conntrack *nfct)
{
....
#if JIMDEBUG
char flag1,flag2;
flag1=in_irq();
flag2=irqs_disabled();
printk("jimtest pre destroy_conntrack,inirq:%d,disable:%d,flag:%d,f2:%d\r\n",flag1,flag2,g_jim_flag,g_jim_flag_save);
#endif
spin_lock_bh(&nf_conntrack_lock);
#if JIMDEBUG
flag1=in_irq();
flag2=irqs_disabled();
printk("jimtest pre destroy_conntrack,inirq:%d,disable:%d,flag:%d,f2:%d\r\n",flag1,flag2,g_jim_flag,g_jim_flag_save);
#endif
....
#if JIMDEBUG
flag1=in_irq();
flag2=irqs_disabled();
printk("jimtest aft destroy_conntrack,inirq:%d,disable:%d,flag:%d,f2:%d\r\n",flag1,flag2,g_jim_flag,g_jim_flag_save);
#endif
spin_unlock_bh(&nf_conntrack_lock);
...
}
#define local_irq_enable() \
do { trace_hardirqs_on(); raw_local_irq_enable(); g_jim_flag=1;if(g_jim_print)printk("irq en!\r\n");} while (0)
#define local_irq_disable() \
do { raw_local_irq_disable(); trace_hardirqs_off(); g_jim_flag=0;if(g_jim_print)printk("irq disable!\r\n");} while (0)
g_jim_print在进destroy_conntrack时会打开,但并没有相关打印