Hi, 

I am trying to use two e1000 drivers to simulate an incoming port and an 
outgoing port. I have the iptables setup in between to regulate traffic and let 
only some packets proceed to the outgoing port. I have modified the networking 
part of the kernel as follows: 
1. I added a virtual device driver which sits on top of eth0 and eth1. 
2. This device calls the iptable functions by using the NF_HOOK mechanism for 
all three hooks - PRE_ROUTING, FORWARD, POST_ROUTING. 
3. I have removed the NF_HOOK calls from places like ip_rcv, ip_forward and 
ip_output, the functions that were being called through NF_HOOKS are being 
called directly now. 

When I try to run packets through this setup, it works well till 1000 packets. 
In the experiment where I try to send 10,000 packets, I get a kernel panic: 
Unable to handle kernel paging request at virtual address 0000074a7b000000^M
CPU 0 ksoftirqd/0(4): Oops 0^M
pc = [<fffffc000037dde8>]  ra = [<fffffc00005c8e08>]  ps = 0000    Tainted: G   
     W^M
pc is at put_page+0x28/0x190^M
ra is at skb_release_data+0xe8/0x120^M
v0 = 0000000000000000  t0 = fffffc001da7e350  t1 = 0000000000006000^M
t2 = 0000000000000001  t3 = 0000000000000068  t4 = 0008000400000000^M
t5 = 0000000000000000  t6 = 0000000000000002  t7 = fffffc001f04c000^M
s0 = 0000074a7b000000  s1 = fffffc001e40bbc0  s2 = 0000000000000069^M
s3 = fffffc001f248000  s4 = 0000000000000068  s5 = fffffc001f37e680^M
s6 = 0000000000000001^M
a0 = 0000074a7b000000  a1 = 000000009da7e2d2  a2 = 0000000000000068^M
a3 = 0000000000000001  a4 = fffffc001f2f6800  a5 = fffffc001da897c0^M
t8 = 0000000000000000  t9 = 0000000000000000  t10= 0000000002000000^M
t11= ffffffffffffffff  pv = fffffc000037ddc0  at = 0000000000000020^M
gp = fffffc000086fc60  sp = fffffc001f04fc38^M
Trace:^M
[<fffffc00005c8e08>] skb_release_data+0xe8/0x120^M
[<fffffc00005c8b2c>] __kfree_skb+0x1c/0x120^M
[<fffffc00005d1a90>] dev_kfree_skb_any+0x40/0x70^M
[<fffffc00005470d0>] e1000_unmap_and_free_tx_resource+0x30/0x80^M
[<fffffc000054c3dc>] e1000_clean+0xec/0x720^M
[<fffffc00005d48f8>] net_rx_action+0x1d8/0x2c0^M
[<fffffc000034450c>] __do_softirq+0x13c/0x170^M
[<fffffc00003445b4>] do_softirq+0x74/0x80^M
[<fffffc0000358cc0>] kthread+0x0/0xc0^M
[<fffffc00003448f0>] ksoftirqd+0xb0/0x170^M
[<fffffc0000358d30>] kthread+0x70/0xc0^M
[<fffffc0000344840>] ksoftirqd+0x0/0x170^M
[<fffffc00003110c8>] kernel_thread+0x28/0x90^M

It is giving an error in put_page call in the skb_release_data function. Could 
someone help me in this? I am not sure how to proceed to debug this.. 

Thanks,
Pritha

_______________________________________________
gem5-users mailing list
gem5-users@gem5.org
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

Reply via email to