Bug 10768

Summary: Got oops with :ip_tables:get_counters during boot
Product: Networking Reporter: Zdenek Kabelac (zdenek.kabelac)
Component: Netfilter/IptablesAssignee: networking_netfilter-iptables (networking_netfilter-iptables)
Status: REJECTED UNREPRODUCIBLE    
Severity: normal    
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: 2.6.26-rc3 Subsystem:
Regression: --- Bisected commit-id:
Attachments: Snapshot of the ip_table ooops
Config file
oops snapshot

Description Zdenek Kabelac 2008-05-21 03:35:24 UTC
Latest working kernel version:
Earliest failing kernel version:
Distribution:
Hardware Environment: T61
Software Environment: Fedora rawhide (kernel build from Linus tree)
Problem Description:

Iptable generated an oops on the screen once during the boot - I've had digital cammera - so I've taken a snapshot  - see the attachement
(Kernel has this git commit number:  ec772ac1f415ca0d)


Steps to reproduce:
Happend only once during boot - and I have only digicatal camera snapshot
So I've no idea how to reproduce or check whether its been fixed.
Comment 1 Patrick McHardy 2008-05-21 03:37:42 UTC
The attachment appears to be missing.
Comment 2 Zdenek Kabelac 2008-05-21 03:42:10 UTC
Created attachment 16223 [details]
Snapshot of the ip_table ooops

Here is the code trace of the suspected buggy error place (0xae7)


static inline int
set_entry_to_counter(const struct ipt_entry *e,
		     struct ipt_counters total[],
		     unsigned int *i)
{
	SET_COUNTER(total[*i], e->counters.bcnt, e->counters.pcnt);
     ad9:	48 c1 e0 04          	shl    $0x4,%rax
     add:	48 8b 51 68          	mov    0x68(%rcx),%rdx
     ae1:	49 8d 04 04          	lea    (%r12,%rax,1),%rax

	(*i)++;
     ae5:	ff c7                	inc    %edi
static inline int
set_entry_to_counter(const struct ipt_entry *e,
		     struct ipt_counters total[],
		     unsigned int *i)
{
	SET_COUNTER(total[*i], e->counters.bcnt, e->counters.pcnt);
     ae7:	48 89 50 08          	mov    %rdx,0x8(%rax)
     aeb:	48 8b 51 60          	mov    0x60(%rcx),%rdx
     aef:	48 89 10             	mov    %rdx,(%rax)
	 * We dont care about preemption here.
	 */
	curcpu = raw_smp_processor_id();

	i = 0;
	IPT_ENTRY_ITERATE(t->entries[curcpu],
     af2:	0f b7 41 5a          	movzwl 0x5a(%rcx),%eax
     af6:	01 c6                	add    %eax,%esi
     af8:	39 33                	cmp    %esi,(%rbx)
     afa:	77 d4                	ja     ad0 <get_counters+0x30>
			  t->size,
			  set_entry_to_counter,
			  counters,
			  &i);
Comment 3 Zdenek Kabelac 2008-05-21 03:43:54 UTC
Ahh sorry :) you are too fast ;) - I've wanted to attach also the code, so it has taken some minute.

I hope it helps  somehow.
Comment 4 Patrick McHardy 2008-05-21 03:49:04 UTC
Thanks, I'll look into it. Could you also attach your .config please?
Comment 5 Zdenek Kabelac 2008-05-21 03:54:42 UTC
Created attachment 16224 [details]
Config file

Sure - here it is.
Comment 6 Zdenek Kabelac 2008-05-21 05:59:09 UTC
Also I've copied wrong commit number - this is the right one:
8033c6e9736c29cce5f0d0abbca9a44dffb20c39
Comment 7 Zdenek Kabelac 2008-05-25 14:50:25 UTC
Created attachment 16277 [details]
oops snapshot

Hi - this oops in :ip_tables:do_add_counters happend to me yesterday during doing shutdown  - again I've just a snapshot - the bactrace is different and this time it's probably missing some topmost lines :( -  but there is visible at least the place. Maybe it will help to find the problem ?
Comment 8 Patrick McHardy 2008-05-26 07:15:08 UTC
No luck so far. Could you please also attach the script containing the iptables commands executed on startup? Thanks.
Comment 9 Zdenek Kabelac 2008-06-05 01:51:56 UTC
Here is my /etc/sysconfig/iptables  script file
Maybe the oops is also related to my DEBUG_PAGEALLOC problem I've reported - now I'm running without this option and I do not have also problems with suspend. So something weird might hidden elsewhere...

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*nat
:PREROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
--insert POSTROUTING --source 192.168.122.0/255.255.255.0 --destination ! 192.168.122.0/255.255.255.0 --jump MAS
QUERADE
COMMIT
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -p ah -j ACCEPT
-A INPUT -p esp -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 631 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 631 -j ACCEPT
--insert FORWARD --in-interface virbr0 --jump REJECT
--insert FORWARD --out-interface virbr0 --jump REJECT
--insert FORWARD --in-interface virbr0 --out-interface virbr0 --jump ACCEPT
--insert FORWARD --source 192.168.122.0/255.255.255.0 --in-interface virbr0 --jump ACCEPT
--insert FORWARD --destination 192.168.122.0/255.255.255.0 --out-interface virbr0 --match state --state ESTABLIS
HED,RELATED --jump ACCEPT
--insert INPUT --in-interface virbr0 --protocol tcp --destination-port 67 --jump ACCEPT
--insert INPUT --in-interface virbr0 --protocol udp --destination-port 67 --jump ACCEPT
--insert INPUT --in-interface virbr0 --protocol tcp --destination-port 53 --jump ACCEPT
--insert INPUT --in-interface virbr0 --protocol udp --destination-port 53 --jump ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
Comment 10 Patrick McHardy 2008-06-18 04:28:37 UTC
I unsuccessfully tried to reproduce this using your scripts and enabling all the debugging options. I also can't figure out why this would happen, so I'm not sure how to proceed. Maybe you could add a few debugging printks to get some more information?
Comment 11 Zdenek Kabelac 2008-06-18 08:10:10 UTC
Unfortunately this problem might have been related to my usage of the DEBUG_PAGEALLOC option - which was causing me also other problems during suspend on my box - when I've removed this flag from .config I could have reliably suspend. Now I'm using this option again without any problem so far so my memory allocation race might have been fixed - http://bugzilla.kernel.org/show_bug.cgi?id=10851
Also from that time I've not noticed any ip_table oops again - so it these thing could have been related...
Comment 12 Patrick McHardy 2008-06-20 03:25:00 UTC
OK thanks. Since I haven't seen any similar reports of this, you're probably right.

Please update bugzilla status appropriately.