* iptables throws unknown error - suspecting 32/64 compat issue
@ 2007-05-10 6:27 ` Jan Engelhardt
0 siblings, 0 replies; 48+ messages in thread
From: Jan Engelhardt @ 2007-05-10 6:27 UTC (permalink / raw)
To: Netfilter Developer Mailing List; +Cc: sparclinux
Hi,
the following command gives an error:
iptables -t mangle -I FORWARD -m conntrack --ctstate NEW
output is:
iptables: Unknown error 4294967295
As mentioned in the topic, I suspect it is due to 32-bit iptables not
coping correctly with the 64-bit kernel (sometimes, patches to fix these
are posted, so I thought it could be related). OS is Aurora Linux 2.98,
with their latest(?) kernel 2.6.20-1.2986.al3.3smp.
Jan
--
^ permalink raw reply [flat|nested] 48+ messages in thread
* iptables throws unknown error - suspecting 32/64 compat issue
@ 2007-05-10 6:27 ` Jan Engelhardt
0 siblings, 0 replies; 48+ messages in thread
From: Jan Engelhardt @ 2007-05-10 6:27 UTC (permalink / raw)
To: Netfilter Developer Mailing List; +Cc: sparclinux
Hi,
the following command gives an error:
iptables -t mangle -I FORWARD -m conntrack --ctstate NEW
output is:
iptables: Unknown error 4294967295
As mentioned in the topic, I suspect it is due to 32-bit iptables not
coping correctly with the 64-bit kernel (sometimes, patches to fix these
are posted, so I thought it could be related). OS is Aurora Linux 2.98,
with their latest(?) kernel 2.6.20-1.2986.al3.3smp.
Jan
--
^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: iptables throws unknown error - suspecting 32/64 compat issue
2007-05-10 6:27 ` Jan Engelhardt
@ 2007-05-10 6:34 ` Jan Engelhardt
-1 siblings, 0 replies; 48+ messages in thread
From: Jan Engelhardt @ 2007-05-10 6:34 UTC (permalink / raw)
To: Netfilter Developer Mailing List; +Cc: sparclinux
On May 10 2007 08:27, Jan Engelhardt wrote:
>Hi,
>
>
>the following command gives an error:
>
> iptables -t mangle -I FORWARD -m conntrack --ctstate NEW
>
>output is:
>
> iptables: Unknown error 4294967295
>
>As mentioned in the topic, I suspect it is due to 32-bit iptables not
>coping correctly with the 64-bit kernel (sometimes, patches to fix these
>are posted, so I thought it could be related). OS is Aurora Linux 2.98,
>with their latest(?) kernel 2.6.20-1.2986.al3.3smp.
And the following cmd oopsed it:
# iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW
-j sshcheck;
Output:
Unable to handle kernel NULL pointer dereference
tsk->{mm,active_mm}->context = 000000000000078d
tsk->{mm,active_mm}->pgd = fffff80055a48000
\|/ ____ \|/
"@'/ .. \`@"
/_| \__/ |_\
\__U_/
iptables(9865): Oops [#1]
TSTATE: 0000009911009606 TPC: 000000000052853c TNPC: 0000000000528540 Y:
00000000 Not tainted
TPC: <atomic_sub_ret+0xc/0x30>
g0: fffff8001fdf4000 g1: 000000001029a340
g2: 00000000000000c8 g3: 0000000000000000
g4: fffff8007fbe6f00 g5: fffff80000e80000
g6: fffff8001fdf4000 g7: 0000000000000005
o0: 0000000000000001 o1: 0000000000000010
o2: 0000000010284810 o3: 0000000000000050
o4: 0000000000000048 o5: 0000000000000640
sp: fffff8001fdf70a1 ret_pc: 000000001029a350
RPC: <hashlimit_destroy+0x18/0xc0 [xt_hashlimit]>
l0: 000000001028f000 l1: 0000000000000000
l2: 0000000000000040 l3: 0000000000000000
l4: 0000000000030bbc l5: 000000000002f690
l6: 0000000000031600 l7: 000000000002ca50
i0: 0000000000000000 i1: 000000001029d400
i2: 0000000010284800 i3: fffff8001a0fb4a0
i4: 0000000000000002 i5: 0000000000000006
i6: fffff8001fdf7161 i7: 000000001022a2a8
I7: <compat_do_ipt_set_ctl+0x7d4/0xa04 [ip_tables]>
Caller[000000001022a2a8]: compat_do_ipt_set_ctl+0x7d4/0xa04 [ip_tables]
Caller[00000000006155b4]: compat_nf_sockopt+0x130/0x16c
Caller[0000000000615628]: compat_nf_setsockopt+0x24/0x30
Caller[0000000000623e74]: compat_ip_setsockopt+0xac/0xc0
Caller[00000000005f10e4]: compat_sock_common_setsockopt+0x48/0x54
Caller[0000000000609ba0]: compat_sys_setsockopt+0x4b4/0x4ec
Caller[0000000000406c14]: linux_sparc_syscall32+0x3c/0x40
Caller[0000000000019340]: 0x19348
Instruction DUMP: 81c3e008 01000000 8143e003 <c2024000> 8e204008 cfe25001
80a04007 1247fffc 8e21c008
Jan
--
^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: iptables throws unknown error - suspecting 32/64 compat issue
@ 2007-05-10 6:34 ` Jan Engelhardt
0 siblings, 0 replies; 48+ messages in thread
From: Jan Engelhardt @ 2007-05-10 6:34 UTC (permalink / raw)
To: Netfilter Developer Mailing List; +Cc: sparclinux
On May 10 2007 08:27, Jan Engelhardt wrote:
>Hi,
>
>
>the following command gives an error:
>
> iptables -t mangle -I FORWARD -m conntrack --ctstate NEW
>
>output is:
>
> iptables: Unknown error 4294967295
>
>As mentioned in the topic, I suspect it is due to 32-bit iptables not
>coping correctly with the 64-bit kernel (sometimes, patches to fix these
>are posted, so I thought it could be related). OS is Aurora Linux 2.98,
>with their latest(?) kernel 2.6.20-1.2986.al3.3smp.
And the following cmd oopsed it:
# iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW
-j sshcheck;
Output:
Unable to handle kernel NULL pointer dereference
tsk->{mm,active_mm}->context = 000000000000078d
tsk->{mm,active_mm}->pgd = fffff80055a48000
\|/ ____ \|/
"@'/ .. \`@"
/_| \__/ |_\
\__U_/
iptables(9865): Oops [#1]
TSTATE: 0000009911009606 TPC: 000000000052853c TNPC: 0000000000528540 Y:
00000000 Not tainted
TPC: <atomic_sub_ret+0xc/0x30>
g0: fffff8001fdf4000 g1: 000000001029a340
g2: 00000000000000c8 g3: 0000000000000000
g4: fffff8007fbe6f00 g5: fffff80000e80000
g6: fffff8001fdf4000 g7: 0000000000000005
o0: 0000000000000001 o1: 0000000000000010
o2: 0000000010284810 o3: 0000000000000050
o4: 0000000000000048 o5: 0000000000000640
sp: fffff8001fdf70a1 ret_pc: 000000001029a350
RPC: <hashlimit_destroy+0x18/0xc0 [xt_hashlimit]>
l0: 000000001028f000 l1: 0000000000000000
l2: 0000000000000040 l3: 0000000000000000
l4: 0000000000030bbc l5: 000000000002f690
l6: 0000000000031600 l7: 000000000002ca50
i0: 0000000000000000 i1: 000000001029d400
i2: 0000000010284800 i3: fffff8001a0fb4a0
i4: 0000000000000002 i5: 0000000000000006
i6: fffff8001fdf7161 i7: 000000001022a2a8
I7: <compat_do_ipt_set_ctl+0x7d4/0xa04 [ip_tables]>
Caller[000000001022a2a8]: compat_do_ipt_set_ctl+0x7d4/0xa04 [ip_tables]
Caller[00000000006155b4]: compat_nf_sockopt+0x130/0x16c
Caller[0000000000615628]: compat_nf_setsockopt+0x24/0x30
Caller[0000000000623e74]: compat_ip_setsockopt+0xac/0xc0
Caller[00000000005f10e4]: compat_sock_common_setsockopt+0x48/0x54
Caller[0000000000609ba0]: compat_sys_setsockopt+0x4b4/0x4ec
Caller[0000000000406c14]: linux_sparc_syscall32+0x3c/0x40
Caller[0000000000019340]: 0x19348
Instruction DUMP: 81c3e008 01000000 8143e003 <c2024000> 8e204008 cfe25001
80a04007 1247fffc 8e21c008
Jan
--
^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: iptables throws unknown error - suspecting 32/64 compat issue
2007-05-10 6:34 ` Jan Engelhardt
@ 2007-05-10 7:16 ` David Miller
-1 siblings, 0 replies; 48+ messages in thread
From: David Miller @ 2007-05-10 7:16 UTC (permalink / raw)
To: jengelh; +Cc: netfilter-devel, sparclinux
From: Jan Engelhardt <jengelh@linux01.gwdg.de>
Date: Thu, 10 May 2007 08:34:07 +0200 (MEST)
> Unable to handle kernel NULL pointer dereference
> tsk->{mm,active_mm}->context = 000000000000078d
> tsk->{mm,active_mm}->pgd = fffff80055a48000
> \|/ ____ \|/
> "@'/ .. \`@"
> /_| \__/ |_\
> \__U_/
> iptables(9865): Oops [#1]
> TSTATE: 0000009911009606 TPC: 000000000052853c TNPC: 0000000000528540 Y:
> 00000000 Not tainted
> TPC: <atomic_sub_ret+0xc/0x30>
> g0: fffff8001fdf4000 g1: 000000001029a340
> g2: 00000000000000c8 g3: 0000000000000000
> g4: fffff8007fbe6f00 g5: fffff80000e80000
> g6: fffff8001fdf4000 g7: 0000000000000005
> o0: 0000000000000001 o1: 0000000000000010
> o2: 0000000010284810 o3: 0000000000000050
> o4: 0000000000000048 o5: 0000000000000640
> sp: fffff8001fdf70a1 ret_pc: 000000001029a350
> RPC: <hashlimit_destroy+0x18/0xc0 [xt_hashlimit]>
in hashlimit_destroy(), r->hinfo is NULL, and this NULL pointer
is being passed to atomic_sub_ret() via htable_put()'s
if (atomic_dec_and_test(&hinfo->use))
call.
It would be interesting if the current 2.6.21 vanilla kernel
gives you the same problem, please built that and retest because
I believe some compat issues were fixed between 2.6.20 and
2.6.21
Thanks.
^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: iptables throws unknown error - suspecting 32/64 compat issue
@ 2007-05-10 7:16 ` David Miller
0 siblings, 0 replies; 48+ messages in thread
From: David Miller @ 2007-05-10 7:16 UTC (permalink / raw)
To: jengelh; +Cc: netfilter-devel, sparclinux
From: Jan Engelhardt <jengelh@linux01.gwdg.de>
Date: Thu, 10 May 2007 08:34:07 +0200 (MEST)
> Unable to handle kernel NULL pointer dereference
> tsk->{mm,active_mm}->context = 000000000000078d
> tsk->{mm,active_mm}->pgd = fffff80055a48000
> \|/ ____ \|/
> "@'/ .. \`@"
> /_| \__/ |_\
> \__U_/
> iptables(9865): Oops [#1]
> TSTATE: 0000009911009606 TPC: 000000000052853c TNPC: 0000000000528540 Y:
> 00000000 Not tainted
> TPC: <atomic_sub_ret+0xc/0x30>
> g0: fffff8001fdf4000 g1: 000000001029a340
> g2: 00000000000000c8 g3: 0000000000000000
> g4: fffff8007fbe6f00 g5: fffff80000e80000
> g6: fffff8001fdf4000 g7: 0000000000000005
> o0: 0000000000000001 o1: 0000000000000010
> o2: 0000000010284810 o3: 0000000000000050
> o4: 0000000000000048 o5: 0000000000000640
> sp: fffff8001fdf70a1 ret_pc: 000000001029a350
> RPC: <hashlimit_destroy+0x18/0xc0 [xt_hashlimit]>
in hashlimit_destroy(), r->hinfo is NULL, and this NULL pointer
is being passed to atomic_sub_ret() via htable_put()'s
if (atomic_dec_and_test(&hinfo->use))
call.
It would be interesting if the current 2.6.21 vanilla kernel
gives you the same problem, please built that and retest because
I believe some compat issues were fixed between 2.6.20 and
2.6.21
Thanks.
^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: iptables throws unknown error - suspecting 32/64 compat issue
2007-05-10 6:27 ` Jan Engelhardt
@ 2007-05-10 12:58 ` Patrick McHardy
-1 siblings, 0 replies; 48+ messages in thread
From: Patrick McHardy @ 2007-05-10 12:58 UTC (permalink / raw)
To: Jan Engelhardt; +Cc: Netfilter Developer Mailing List, sparclinux
[-- Attachment #1: Type: text/plain, Size: 559 bytes --]
Jan Engelhardt wrote:
> Hi,
>
>
> the following command gives an error:
>
> iptables -t mangle -I FORWARD -m conntrack --ctstate NEW
>
> output is:
>
> iptables: Unknown error 4294967295
>
> As mentioned in the topic, I suspect it is due to 32-bit iptables not
> coping correctly with the 64-bit kernel (sometimes, patches to fix these
> are posted, so I thought it could be related). OS is Aurora Linux 2.98,
> with their latest(?) kernel 2.6.20-1.2986.al3.3smp.
The conntrack match is missing compat support, I've queued this patch
to fix it.
[-- Attachment #2: x --]
[-- Type: text/plain, Size: 2652 bytes --]
[NETFILTER]: xt_conntrack: add compat support
Signed-off-by: Patrick McHardy <kaber@trash.net>
---
commit ba8991494e1522be10d764b174fc4e3744c99655
tree 85d5cf3861566aa38ecb2e091be987ecfeb17655
parent 1797736897a68f556aef76a6a0963c3e8b1b4950
author Patrick McHardy <kaber@trash.net> Thu, 10 May 2007 14:57:40 +0200
committer Patrick McHardy <kaber@trash.net> Thu, 10 May 2007 14:57:40 +0200
net/netfilter/xt_conntrack.c | 54 ++++++++++++++++++++++++++++++++++++++++++
1 files changed, 54 insertions(+), 0 deletions(-)
diff --git a/net/netfilter/xt_conntrack.c b/net/netfilter/xt_conntrack.c
index f4ea8fe..189ded5 100644
--- a/net/netfilter/xt_conntrack.c
+++ b/net/netfilter/xt_conntrack.c
@@ -134,12 +134,66 @@ static void destroy(const struct xt_match *match, void *matchinfo)
nf_ct_l3proto_module_put(match->family);
}
+#ifdef CONFIG_COMPAT
+struct compat_xt_conntrack_info
+{
+ compat_uint_t statemask;
+ compat_uint_t statusmask;
+ struct ip_conntrack_old_tuple tuple[IP_CT_DIR_MAX];
+ struct in_addr sipmsk[IP_CT_DIR_MAX];
+ struct in_addr dipmsk[IP_CT_DIR_MAX];
+ compat_ulong_t expires_min;
+ compat_ulong_t expires_max;
+ u_int8_t flags;
+ u_int8_t invflags;
+};
+
+static void compat_from_user(void *dst, void *src)
+{
+ struct compat_xt_conntrack_info *cm = src;
+ struct xt_conntrack_info m = {
+ .statemask = cm->statemask,
+ .statusmask = cm->statusmask,
+ .expires_min = cm->expires_min,
+ .expires_max = cm->expires_max,
+ .flags = cm->flags,
+ .invflags = cm->invflags,
+ };
+ memcpy(m.tuple, cm->tuple, sizeof(m.tuple));
+ memcpy(m.sipmsk, cm->sipmsk, sizeof(m.sipmsk));
+ memcpy(m.dipmsk, cm->dipmsk, sizeof(m.dipmsk));
+ memcpy(dst, &m, sizeof(m));
+}
+
+static int compat_to_user(void __user *dst, void *src)
+{
+ struct xt_conntrack_info *m = src;
+ struct compat_xt_conntrack_info cm = {
+ .statemask = m->statemask,
+ .statusmask = m->statusmask,
+ .expires_min = m->expires_min,
+ .expires_max = m->expires_max,
+ .flags = m->flags,
+ .invflags = m->invflags,
+ };
+ memcpy(cm.tuple, m->tuple, sizeof(cm.tuple));
+ memcpy(cm.sipmsk, m->sipmsk, sizeof(cm.sipmsk));
+ memcpy(cm.dipmsk, m->dipmsk, sizeof(cm.dipmsk));
+ return copy_to_user(dst, &cm, sizeof(cm)) ? -EFAULT : 0;
+}
+#endif
+
static struct xt_match conntrack_match = {
.name = "conntrack",
.match = match,
.checkentry = checkentry,
.destroy = destroy,
.matchsize = sizeof(struct xt_conntrack_info),
+#ifdef CONFIG_COMPAT
+ .compatsize = sizeof(struct compat_xt_conntrack_info),
+ .compat_from_user = compat_from_user,
+ .compat_to_user = compat_to_user,
+#endif
.family = AF_INET,
.me = THIS_MODULE,
};
^ permalink raw reply related [flat|nested] 48+ messages in thread
* Re: iptables throws unknown error - suspecting 32/64 compat issue
@ 2007-05-10 12:58 ` Patrick McHardy
0 siblings, 0 replies; 48+ messages in thread
From: Patrick McHardy @ 2007-05-10 12:58 UTC (permalink / raw)
To: Jan Engelhardt; +Cc: Netfilter Developer Mailing List, sparclinux
[-- Attachment #1: Type: text/plain, Size: 559 bytes --]
Jan Engelhardt wrote:
> Hi,
>
>
> the following command gives an error:
>
> iptables -t mangle -I FORWARD -m conntrack --ctstate NEW
>
> output is:
>
> iptables: Unknown error 4294967295
>
> As mentioned in the topic, I suspect it is due to 32-bit iptables not
> coping correctly with the 64-bit kernel (sometimes, patches to fix these
> are posted, so I thought it could be related). OS is Aurora Linux 2.98,
> with their latest(?) kernel 2.6.20-1.2986.al3.3smp.
The conntrack match is missing compat support, I've queued this patch
to fix it.
[-- Attachment #2: x --]
[-- Type: text/plain, Size: 2652 bytes --]
[NETFILTER]: xt_conntrack: add compat support
Signed-off-by: Patrick McHardy <kaber@trash.net>
---
commit ba8991494e1522be10d764b174fc4e3744c99655
tree 85d5cf3861566aa38ecb2e091be987ecfeb17655
parent 1797736897a68f556aef76a6a0963c3e8b1b4950
author Patrick McHardy <kaber@trash.net> Thu, 10 May 2007 14:57:40 +0200
committer Patrick McHardy <kaber@trash.net> Thu, 10 May 2007 14:57:40 +0200
net/netfilter/xt_conntrack.c | 54 ++++++++++++++++++++++++++++++++++++++++++
1 files changed, 54 insertions(+), 0 deletions(-)
diff --git a/net/netfilter/xt_conntrack.c b/net/netfilter/xt_conntrack.c
index f4ea8fe..189ded5 100644
--- a/net/netfilter/xt_conntrack.c
+++ b/net/netfilter/xt_conntrack.c
@@ -134,12 +134,66 @@ static void destroy(const struct xt_match *match, void *matchinfo)
nf_ct_l3proto_module_put(match->family);
}
+#ifdef CONFIG_COMPAT
+struct compat_xt_conntrack_info
+{
+ compat_uint_t statemask;
+ compat_uint_t statusmask;
+ struct ip_conntrack_old_tuple tuple[IP_CT_DIR_MAX];
+ struct in_addr sipmsk[IP_CT_DIR_MAX];
+ struct in_addr dipmsk[IP_CT_DIR_MAX];
+ compat_ulong_t expires_min;
+ compat_ulong_t expires_max;
+ u_int8_t flags;
+ u_int8_t invflags;
+};
+
+static void compat_from_user(void *dst, void *src)
+{
+ struct compat_xt_conntrack_info *cm = src;
+ struct xt_conntrack_info m = {
+ .statemask = cm->statemask,
+ .statusmask = cm->statusmask,
+ .expires_min = cm->expires_min,
+ .expires_max = cm->expires_max,
+ .flags = cm->flags,
+ .invflags = cm->invflags,
+ };
+ memcpy(m.tuple, cm->tuple, sizeof(m.tuple));
+ memcpy(m.sipmsk, cm->sipmsk, sizeof(m.sipmsk));
+ memcpy(m.dipmsk, cm->dipmsk, sizeof(m.dipmsk));
+ memcpy(dst, &m, sizeof(m));
+}
+
+static int compat_to_user(void __user *dst, void *src)
+{
+ struct xt_conntrack_info *m = src;
+ struct compat_xt_conntrack_info cm = {
+ .statemask = m->statemask,
+ .statusmask = m->statusmask,
+ .expires_min = m->expires_min,
+ .expires_max = m->expires_max,
+ .flags = m->flags,
+ .invflags = m->invflags,
+ };
+ memcpy(cm.tuple, m->tuple, sizeof(cm.tuple));
+ memcpy(cm.sipmsk, m->sipmsk, sizeof(cm.sipmsk));
+ memcpy(cm.dipmsk, m->dipmsk, sizeof(cm.dipmsk));
+ return copy_to_user(dst, &cm, sizeof(cm)) ? -EFAULT : 0;
+}
+#endif
+
static struct xt_match conntrack_match = {
.name = "conntrack",
.match = match,
.checkentry = checkentry,
.destroy = destroy,
.matchsize = sizeof(struct xt_conntrack_info),
+#ifdef CONFIG_COMPAT
+ .compatsize = sizeof(struct compat_xt_conntrack_info),
+ .compat_from_user = compat_from_user,
+ .compat_to_user = compat_to_user,
+#endif
.family = AF_INET,
.me = THIS_MODULE,
};
^ permalink raw reply related [flat|nested] 48+ messages in thread
* Re: iptables throws unknown error - suspecting 32/64 compat issue
2007-05-10 6:34 ` Jan Engelhardt
@ 2007-05-10 13:20 ` Patrick McHardy
-1 siblings, 0 replies; 48+ messages in thread
From: Patrick McHardy @ 2007-05-10 13:20 UTC (permalink / raw)
To: Jan Engelhardt; +Cc: Netfilter Developer Mailing List, sparclinux
Jan Engelhardt wrote:
> On May 10 2007 08:27, Jan Engelhardt wrote:
>
>>As mentioned in the topic, I suspect it is due to 32-bit iptables not
>>coping correctly with the 64-bit kernel (sometimes, patches to fix these
>>are posted, so I thought it could be related). OS is Aurora Linux 2.98,
>>with their latest(?) kernel 2.6.20-1.2986.al3.3smp.
>
>
> And the following cmd oopsed it:
>
> # iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW
> -j sshcheck;
I believe this is a bug in the compat code, which *seems* to call (its
a bit messy, I just had a quick look) the destroy function without
having called checkentry previously when something goes wrong. Which
commands did you run before this?
^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: iptables throws unknown error - suspecting 32/64 compat issue
@ 2007-05-10 13:20 ` Patrick McHardy
0 siblings, 0 replies; 48+ messages in thread
From: Patrick McHardy @ 2007-05-10 13:20 UTC (permalink / raw)
To: Jan Engelhardt; +Cc: Netfilter Developer Mailing List, sparclinux
Jan Engelhardt wrote:
> On May 10 2007 08:27, Jan Engelhardt wrote:
>
>>As mentioned in the topic, I suspect it is due to 32-bit iptables not
>>coping correctly with the 64-bit kernel (sometimes, patches to fix these
>>are posted, so I thought it could be related). OS is Aurora Linux 2.98,
>>with their latest(?) kernel 2.6.20-1.2986.al3.3smp.
>
>
> And the following cmd oopsed it:
>
> # iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW
> -j sshcheck;
I believe this is a bug in the compat code, which *seems* to call (its
a bit messy, I just had a quick look) the destroy function without
having called checkentry previously when something goes wrong. Which
commands did you run before this?
^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: iptables throws unknown error - suspecting 32/64 compat issue
2007-05-10 13:20 ` Patrick McHardy
@ 2007-05-10 13:24 ` Jan Engelhardt
-1 siblings, 0 replies; 48+ messages in thread
From: Jan Engelhardt @ 2007-05-10 13:24 UTC (permalink / raw)
To: Patrick McHardy; +Cc: Netfilter Developer Mailing List, sparclinux
On May 10 2007 15:20, Patrick McHardy wrote:
>>
>> And the following cmd oopsed it:
>>
>> # iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW
>> -j sshcheck;
>
>
>I believe this is a bug in the compat code, which *seems* to call (its
>a bit messy, I just had a quick look) the destroy function without
>having called checkentry previously when something goes wrong. Which
>commands did you run before this?
A lot ... as far as the filter table and sshcheck is concerned,
iptables -N sshcheck;
iptables -A sshcheck -m recent --name sshcheck --seconds 60 --update -j DROP;
iptables -A sshcheck -m hashlimit --hashlimit-name sshcheck \
--hashlimit-mode srcip --hashlimit 4/min --hashlimit-burst 4 \
-j RETURN;
iptables -A sshcheck -m recent --name sshcheck --set -j DROP;
Jan
--
^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: iptables throws unknown error - suspecting 32/64 compat issue
@ 2007-05-10 13:24 ` Jan Engelhardt
0 siblings, 0 replies; 48+ messages in thread
From: Jan Engelhardt @ 2007-05-10 13:24 UTC (permalink / raw)
To: Patrick McHardy; +Cc: Netfilter Developer Mailing List, sparclinux
On May 10 2007 15:20, Patrick McHardy wrote:
>>
>> And the following cmd oopsed it:
>>
>> # iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW
>> -j sshcheck;
>
>
>I believe this is a bug in the compat code, which *seems* to call (its
>a bit messy, I just had a quick look) the destroy function without
>having called checkentry previously when something goes wrong. Which
>commands did you run before this?
A lot ... as far as the filter table and sshcheck is concerned,
iptables -N sshcheck;
iptables -A sshcheck -m recent --name sshcheck --seconds 60 --update -j DROP;
iptables -A sshcheck -m hashlimit --hashlimit-name sshcheck \
--hashlimit-mode srcip --hashlimit 4/min --hashlimit-burst 4 \
-j RETURN;
iptables -A sshcheck -m recent --name sshcheck --set -j DROP;
Jan
--
^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: iptables throws unknown error - suspecting 32/64 compat issue
2007-05-10 13:24 ` Jan Engelhardt
@ 2007-05-10 14:02 ` Patrick McHardy
-1 siblings, 0 replies; 48+ messages in thread
From: Patrick McHardy @ 2007-05-10 14:02 UTC (permalink / raw)
To: Jan Engelhardt; +Cc: sparclinux, Netfilter Developer Mailing List
Jan Engelhardt wrote:
> On May 10 2007 15:20, Patrick McHardy wrote:
>
>>>And the following cmd oopsed it:
>>>
>>> # iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW
>>> -j sshcheck;
>>
>>
>>I believe this is a bug in the compat code, which *seems* to call (its
>>a bit messy, I just had a quick look) the destroy function without
>>having called checkentry previously when something goes wrong. Which
>>commands did you run before this?
>
>
> A lot ... as far as the filter table and sshcheck is concerned,
>
> iptables -N sshcheck;
> iptables -A sshcheck -m recent --name sshcheck --seconds 60 --update -j DROP;
> iptables -A sshcheck -m hashlimit --hashlimit-name sshcheck \
> --hashlimit-mode srcip --hashlimit 4/min --hashlimit-burst 4 \
> -j RETURN;
> iptables -A sshcheck -m recent --name sshcheck --set -j DROP;
Did you get an "invalid size" message in the ringbuffer before the oops?
^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: iptables throws unknown error - suspecting 32/64 compat issue
@ 2007-05-10 14:02 ` Patrick McHardy
0 siblings, 0 replies; 48+ messages in thread
From: Patrick McHardy @ 2007-05-10 14:02 UTC (permalink / raw)
To: Jan Engelhardt; +Cc: sparclinux, Netfilter Developer Mailing List
Jan Engelhardt wrote:
> On May 10 2007 15:20, Patrick McHardy wrote:
>
>>>And the following cmd oopsed it:
>>>
>>> # iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW
>>> -j sshcheck;
>>
>>
>>I believe this is a bug in the compat code, which *seems* to call (its
>>a bit messy, I just had a quick look) the destroy function without
>>having called checkentry previously when something goes wrong. Which
>>commands did you run before this?
>
>
> A lot ... as far as the filter table and sshcheck is concerned,
>
> iptables -N sshcheck;
> iptables -A sshcheck -m recent --name sshcheck --seconds 60 --update -j DROP;
> iptables -A sshcheck -m hashlimit --hashlimit-name sshcheck \
> --hashlimit-mode srcip --hashlimit 4/min --hashlimit-burst 4 \
> -j RETURN;
> iptables -A sshcheck -m recent --name sshcheck --set -j DROP;
Did you get an "invalid size" message in the ringbuffer before the oops?
^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: iptables throws unknown error - suspecting 32/64 compat issue
2007-05-10 14:02 ` Patrick McHardy
@ 2007-05-10 14:05 ` Jan Engelhardt
-1 siblings, 0 replies; 48+ messages in thread
From: Jan Engelhardt @ 2007-05-10 14:05 UTC (permalink / raw)
To: Patrick McHardy; +Cc: sparclinux, Netfilter Developer Mailing List
On May 10 2007 16:02, Patrick McHardy wrote:
>>
>> A lot ... as far as the filter table and sshcheck is concerned,
>>
>> iptables -N sshcheck;
>> iptables -A sshcheck -m recent --name sshcheck --seconds 60 --update -j DROP;
>> iptables -A sshcheck -m hashlimit --hashlimit-name sshcheck \
>> --hashlimit-mode srcip --hashlimit 4/min --hashlimit-burst 4 \
>> -j RETURN;
>> iptables -A sshcheck -m recent --name sshcheck --set -j DROP;
>
>Did you get an "invalid size" message in the ringbuffer before the oops?
Now that you mention it, yes:
ip_tables: conntrack match: invalid size 80 != 72
Jan
--
^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: iptables throws unknown error - suspecting 32/64 compat issue
@ 2007-05-10 14:05 ` Jan Engelhardt
0 siblings, 0 replies; 48+ messages in thread
From: Jan Engelhardt @ 2007-05-10 14:05 UTC (permalink / raw)
To: Patrick McHardy; +Cc: sparclinux, Netfilter Developer Mailing List
On May 10 2007 16:02, Patrick McHardy wrote:
>>
>> A lot ... as far as the filter table and sshcheck is concerned,
>>
>> iptables -N sshcheck;
>> iptables -A sshcheck -m recent --name sshcheck --seconds 60 --update -j DROP;
>> iptables -A sshcheck -m hashlimit --hashlimit-name sshcheck \
>> --hashlimit-mode srcip --hashlimit 4/min --hashlimit-burst 4 \
>> -j RETURN;
>> iptables -A sshcheck -m recent --name sshcheck --set -j DROP;
>
>Did you get an "invalid size" message in the ringbuffer before the oops?
Now that you mention it, yes:
ip_tables: conntrack match: invalid size 80 != 72
Jan
--
^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: iptables throws unknown error - suspecting 32/64 compat issue
2007-05-10 14:05 ` Jan Engelhardt
@ 2007-05-29 21:36 ` Jan Engelhardt
-1 siblings, 0 replies; 48+ messages in thread
From: Jan Engelhardt @ 2007-05-29 21:36 UTC (permalink / raw)
To: Patrick McHardy; +Cc: sparclinux, Netfilter Developer Mailing List
On May 10 2007 16:05, Jan Engelhardt wrote:
>On May 10 2007 16:02, Patrick McHardy wrote:
>>>
>>> A lot ... as far as the filter table and sshcheck is concerned,
>>>
>>> iptables -N sshcheck;
>>> iptables -A sshcheck -m recent --name sshcheck --seconds 60 --update -j DROP;
>>> iptables -A sshcheck -m hashlimit --hashlimit-name sshcheck \
>>> --hashlimit-mode srcip --hashlimit 4/min --hashlimit-burst 4 \
>>> -j RETURN;
>>> iptables -A sshcheck -m recent --name sshcheck --set -j DROP;
>>
>>Did you get an "invalid size" message in the ringbuffer before the oops?
>
>Now that you mention it, yes:
>
>ip_tables: conntrack match: invalid size 80 != 72
This is fixed in 2.6.21, thanks.
Jan
--
^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: iptables throws unknown error - suspecting 32/64 compat issue
@ 2007-05-29 21:36 ` Jan Engelhardt
0 siblings, 0 replies; 48+ messages in thread
From: Jan Engelhardt @ 2007-05-29 21:36 UTC (permalink / raw)
To: Patrick McHardy; +Cc: sparclinux, Netfilter Developer Mailing List
On May 10 2007 16:05, Jan Engelhardt wrote:
>On May 10 2007 16:02, Patrick McHardy wrote:
>>>
>>> A lot ... as far as the filter table and sshcheck is concerned,
>>>
>>> iptables -N sshcheck;
>>> iptables -A sshcheck -m recent --name sshcheck --seconds 60 --update -j DROP;
>>> iptables -A sshcheck -m hashlimit --hashlimit-name sshcheck \
>>> --hashlimit-mode srcip --hashlimit 4/min --hashlimit-burst 4 \
>>> -j RETURN;
>>> iptables -A sshcheck -m recent --name sshcheck --set -j DROP;
>>
>>Did you get an "invalid size" message in the ringbuffer before the oops?
>
>Now that you mention it, yes:
>
>ip_tables: conntrack match: invalid size 80 != 72
This is fixed in 2.6.21, thanks.
Jan
--
^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: iptables throws unknown error - suspecting 32/64 compat issue
2007-05-29 21:36 ` Jan Engelhardt
@ 2007-05-29 22:29 ` Patrick McHardy
-1 siblings, 0 replies; 48+ messages in thread
From: Patrick McHardy @ 2007-05-29 22:29 UTC (permalink / raw)
To: Jan Engelhardt; +Cc: sparclinux, Netfilter Developer Mailing List
Jan Engelhardt wrote:
> On May 10 2007 16:05, Jan Engelhardt wrote:
>
>>On May 10 2007 16:02, Patrick McHardy wrote:
>>
>>>>A lot ... as far as the filter table and sshcheck is concerned,
>>>>
>>>>iptables -N sshcheck;
>>>>iptables -A sshcheck -m recent --name sshcheck --seconds 60 --update -j DROP;
>>>>iptables -A sshcheck -m hashlimit --hashlimit-name sshcheck \
>>>> --hashlimit-mode srcip --hashlimit 4/min --hashlimit-burst 4 \
>>>> -j RETURN;
>>>>iptables -A sshcheck -m recent --name sshcheck --set -j DROP;
>>>
>>>Did you get an "invalid size" message in the ringbuffer before the oops?
>>
>>Now that you mention it, yes:
>>
>>ip_tables: conntrack match: invalid size 80 != 72
>
>
> This is fixed in 2.6.21, thanks.
Yes, the hashlimit compat issue is. But the underlying problem still
persists, I'll send you a patch for testing soon.
^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: iptables throws unknown error - suspecting 32/64 compat issue
@ 2007-05-29 22:29 ` Patrick McHardy
0 siblings, 0 replies; 48+ messages in thread
From: Patrick McHardy @ 2007-05-29 22:29 UTC (permalink / raw)
To: Jan Engelhardt; +Cc: sparclinux, Netfilter Developer Mailing List
Jan Engelhardt wrote:
> On May 10 2007 16:05, Jan Engelhardt wrote:
>
>>On May 10 2007 16:02, Patrick McHardy wrote:
>>
>>>>A lot ... as far as the filter table and sshcheck is concerned,
>>>>
>>>>iptables -N sshcheck;
>>>>iptables -A sshcheck -m recent --name sshcheck --seconds 60 --update -j DROP;
>>>>iptables -A sshcheck -m hashlimit --hashlimit-name sshcheck \
>>>> --hashlimit-mode srcip --hashlimit 4/min --hashlimit-burst 4 \
>>>> -j RETURN;
>>>>iptables -A sshcheck -m recent --name sshcheck --set -j DROP;
>>>
>>>Did you get an "invalid size" message in the ringbuffer before the oops?
>>
>>Now that you mention it, yes:
>>
>>ip_tables: conntrack match: invalid size 80 != 72
>
>
> This is fixed in 2.6.21, thanks.
Yes, the hashlimit compat issue is. But the underlying problem still
persists, I'll send you a patch for testing soon.
^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: iptables throws unknown error - suspecting 32/64 compat issue
2007-05-29 22:29 ` Patrick McHardy
@ 2007-06-02 12:54 ` Patrick McHardy
-1 siblings, 0 replies; 48+ messages in thread
From: Patrick McHardy @ 2007-06-02 12:54 UTC (permalink / raw)
To: Patrick McHardy
Cc: Jan Engelhardt, sparclinux, Netfilter Developer Mailing List,
Dmitry Mishin
[-- Attachment #1: Type: text/plain, Size: 369 bytes --]
Patrick McHardy wrote:
> Jan Engelhardt wrote:
>
>>This is fixed in 2.6.21, thanks.
>
>
>
> Yes, the hashlimit compat issue is. But the underlying problem still
> persists, I'll send you a patch for testing soon.
Here it is, could you please test whether it fixes the crash by
backing out the hashlimit compat patch and triggering the size
error again? Thanks.
[-- Attachment #2: x --]
[-- Type: text/plain, Size: 3035 bytes --]
[NETFILTER]: ip_tables: fix compat related crash
check_compat_entry_size_and_hooks iterates over the matches and calls
compat_check_calc_match, which loads the match and calculates the
compat offsets, but unlike the non-compat version, doesn't call
->checkentry yet. On error however it calls cleanup_matches, which in
turn calls ->destroy, which can result in crashes if the destroy
function (validly) expects to only get called after the checkentry
function.
Add a compat_release_match function that only drops the module reference
on error and rename compat_check_calc_match to compat_find_calc_match to
reflect the fact that it doesn't call the checkentry function.
Reported by Jan Engelhardt <jengelh@linux01.gwdg.de>
Signed-off-by: Patrick McHardy <kaber@trash.net>
---
commit aea9d0eb2c80de9d31a9ecbcaf5e529b7503ea13
tree f014a00779dc3c3745e3294a393941ab91c3d37e
parent e7d815ef75f70dcdf55001f1f88ae7ae8827a7ba
author Patrick McHardy <kaber@trash.net> Sat, 02 Jun 2007 14:51:13 +0200
committer Patrick McHardy <kaber@trash.net> Sat, 02 Jun 2007 14:51:13 +0200
net/ipv4/netfilter/ip_tables.c | 22 ++++++++++++++++------
1 files changed, 16 insertions(+), 6 deletions(-)
diff --git a/net/ipv4/netfilter/ip_tables.c b/net/ipv4/netfilter/ip_tables.c
index e3f83bf..8fde1d1 100644
--- a/net/ipv4/netfilter/ip_tables.c
+++ b/net/ipv4/netfilter/ip_tables.c
@@ -1425,7 +1425,7 @@ out:
}
static inline int
-compat_check_calc_match(struct ipt_entry_match *m,
+compat_find_calc_match(struct ipt_entry_match *m,
const char *name,
const struct ipt_ip *ip,
unsigned int hookmask,
@@ -1449,6 +1449,16 @@ compat_check_calc_match(struct ipt_entry_match *m,
}
static inline int
+compat_release_match(struct ipt_entry_match *m, unsigned int *i)
+{
+ if (i && (*i)-- == 0)
+ return 1;
+
+ module_put(m->u.kernel.match->me);
+ return 0;
+}
+
+static inline int
check_compat_entry_size_and_hooks(struct ipt_entry *e,
struct xt_table_info *newinfo,
unsigned int *size,
@@ -1485,10 +1495,10 @@ check_compat_entry_size_and_hooks(struct ipt_entry *e,
off = 0;
entry_offset = (void *)e - (void *)base;
j = 0;
- ret = IPT_MATCH_ITERATE(e, compat_check_calc_match, name, &e->ip,
+ ret = IPT_MATCH_ITERATE(e, compat_find_calc_match, name, &e->ip,
e->comefrom, &off, &j);
if (ret != 0)
- goto cleanup_matches;
+ goto release_matches;
t = ipt_get_target(e);
target = try_then_request_module(xt_find_target(AF_INET,
@@ -1499,7 +1509,7 @@ check_compat_entry_size_and_hooks(struct ipt_entry *e,
duprintf("check_compat_entry_size_and_hooks: `%s' not found\n",
t->u.user.name);
ret = target ? PTR_ERR(target) : -ENOENT;
- goto cleanup_matches;
+ goto release_matches;
}
t->u.kernel.target = target;
@@ -1526,8 +1536,8 @@ check_compat_entry_size_and_hooks(struct ipt_entry *e,
out:
module_put(t->u.kernel.target->me);
-cleanup_matches:
- IPT_MATCH_ITERATE(e, cleanup_match, &j);
+release_matches:
+ IPT_MATCH_ITERATE(e, compat_release_match, &j);
return ret;
}
^ permalink raw reply related [flat|nested] 48+ messages in thread
* Re: iptables throws unknown error - suspecting 32/64 compat issue
@ 2007-06-02 12:54 ` Patrick McHardy
0 siblings, 0 replies; 48+ messages in thread
From: Patrick McHardy @ 2007-06-02 12:54 UTC (permalink / raw)
To: Patrick McHardy
Cc: Jan Engelhardt, sparclinux, Netfilter Developer Mailing List,
Dmitry Mishin
[-- Attachment #1: Type: text/plain, Size: 369 bytes --]
Patrick McHardy wrote:
> Jan Engelhardt wrote:
>
>>This is fixed in 2.6.21, thanks.
>
>
>
> Yes, the hashlimit compat issue is. But the underlying problem still
> persists, I'll send you a patch for testing soon.
Here it is, could you please test whether it fixes the crash by
backing out the hashlimit compat patch and triggering the size
error again? Thanks.
[-- Attachment #2: x --]
[-- Type: text/plain, Size: 3035 bytes --]
[NETFILTER]: ip_tables: fix compat related crash
check_compat_entry_size_and_hooks iterates over the matches and calls
compat_check_calc_match, which loads the match and calculates the
compat offsets, but unlike the non-compat version, doesn't call
->checkentry yet. On error however it calls cleanup_matches, which in
turn calls ->destroy, which can result in crashes if the destroy
function (validly) expects to only get called after the checkentry
function.
Add a compat_release_match function that only drops the module reference
on error and rename compat_check_calc_match to compat_find_calc_match to
reflect the fact that it doesn't call the checkentry function.
Reported by Jan Engelhardt <jengelh@linux01.gwdg.de>
Signed-off-by: Patrick McHardy <kaber@trash.net>
---
commit aea9d0eb2c80de9d31a9ecbcaf5e529b7503ea13
tree f014a00779dc3c3745e3294a393941ab91c3d37e
parent e7d815ef75f70dcdf55001f1f88ae7ae8827a7ba
author Patrick McHardy <kaber@trash.net> Sat, 02 Jun 2007 14:51:13 +0200
committer Patrick McHardy <kaber@trash.net> Sat, 02 Jun 2007 14:51:13 +0200
net/ipv4/netfilter/ip_tables.c | 22 ++++++++++++++++------
1 files changed, 16 insertions(+), 6 deletions(-)
diff --git a/net/ipv4/netfilter/ip_tables.c b/net/ipv4/netfilter/ip_tables.c
index e3f83bf..8fde1d1 100644
--- a/net/ipv4/netfilter/ip_tables.c
+++ b/net/ipv4/netfilter/ip_tables.c
@@ -1425,7 +1425,7 @@ out:
}
static inline int
-compat_check_calc_match(struct ipt_entry_match *m,
+compat_find_calc_match(struct ipt_entry_match *m,
const char *name,
const struct ipt_ip *ip,
unsigned int hookmask,
@@ -1449,6 +1449,16 @@ compat_check_calc_match(struct ipt_entry_match *m,
}
static inline int
+compat_release_match(struct ipt_entry_match *m, unsigned int *i)
+{
+ if (i && (*i)-- == 0)
+ return 1;
+
+ module_put(m->u.kernel.match->me);
+ return 0;
+}
+
+static inline int
check_compat_entry_size_and_hooks(struct ipt_entry *e,
struct xt_table_info *newinfo,
unsigned int *size,
@@ -1485,10 +1495,10 @@ check_compat_entry_size_and_hooks(struct ipt_entry *e,
off = 0;
entry_offset = (void *)e - (void *)base;
j = 0;
- ret = IPT_MATCH_ITERATE(e, compat_check_calc_match, name, &e->ip,
+ ret = IPT_MATCH_ITERATE(e, compat_find_calc_match, name, &e->ip,
e->comefrom, &off, &j);
if (ret != 0)
- goto cleanup_matches;
+ goto release_matches;
t = ipt_get_target(e);
target = try_then_request_module(xt_find_target(AF_INET,
@@ -1499,7 +1509,7 @@ check_compat_entry_size_and_hooks(struct ipt_entry *e,
duprintf("check_compat_entry_size_and_hooks: `%s' not found\n",
t->u.user.name);
ret = target ? PTR_ERR(target) : -ENOENT;
- goto cleanup_matches;
+ goto release_matches;
}
t->u.kernel.target = target;
@@ -1526,8 +1536,8 @@ check_compat_entry_size_and_hooks(struct ipt_entry *e,
out:
module_put(t->u.kernel.target->me);
-cleanup_matches:
- IPT_MATCH_ITERATE(e, cleanup_match, &j);
+release_matches:
+ IPT_MATCH_ITERATE(e, compat_release_match, &j);
return ret;
}
^ permalink raw reply related [flat|nested] 48+ messages in thread
* Re: iptables throws unknown error - suspecting 32/64 compat issue
2007-06-02 12:54 ` Patrick McHardy
@ 2007-06-02 13:29 ` Jan Engelhardt
-1 siblings, 0 replies; 48+ messages in thread
From: Jan Engelhardt @ 2007-06-02 13:29 UTC (permalink / raw)
To: Patrick McHardy
Cc: sparclinux, Netfilter Developer Mailing List, Dmitry Mishin
On Jun 2 2007 14:54, Patrick McHardy wrote:
>>>This is fixed in 2.6.21, thanks.
>>
>> Yes, the hashlimit compat issue is. But the underlying problem still
>> persists, I'll send you a patch for testing soon.
>
>Here it is, could you please test whether it fixes the crash by
>backing out the hashlimit compat patch and triggering the size
>error again? Thanks.
Do you mean conntrack compat?
http://lists.netfilter.org/pipermail/netfilter-devel/2007-May/027763.html
Jan
--
^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: iptables throws unknown error - suspecting 32/64 compat issue
@ 2007-06-02 13:29 ` Jan Engelhardt
0 siblings, 0 replies; 48+ messages in thread
From: Jan Engelhardt @ 2007-06-02 13:29 UTC (permalink / raw)
To: Patrick McHardy
Cc: sparclinux, Netfilter Developer Mailing List, Dmitry Mishin
On Jun 2 2007 14:54, Patrick McHardy wrote:
>>>This is fixed in 2.6.21, thanks.
>>
>> Yes, the hashlimit compat issue is. But the underlying problem still
>> persists, I'll send you a patch for testing soon.
>
>Here it is, could you please test whether it fixes the crash by
>backing out the hashlimit compat patch and triggering the size
>error again? Thanks.
Do you mean conntrack compat?
http://lists.netfilter.org/pipermail/netfilter-devel/2007-May/027763.html
Jan
--
^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: iptables throws unknown error - suspecting 32/64 compat issue
2007-06-02 13:29 ` Jan Engelhardt
@ 2007-06-02 13:53 ` Patrick McHardy
-1 siblings, 0 replies; 48+ messages in thread
From: Patrick McHardy @ 2007-06-02 13:53 UTC (permalink / raw)
To: Jan Engelhardt
Cc: sparclinux, Netfilter Developer Mailing List, Dmitry Mishin
Jan Engelhardt wrote:
> On Jun 2 2007 14:54, Patrick McHardy wrote:
>
>>>>This is fixed in 2.6.21, thanks.
>>>
>>>Yes, the hashlimit compat issue is. But the underlying problem still
>>>persists, I'll send you a patch for testing soon.
>>
>>Here it is, could you please test whether it fixes the crash by
>>backing out the hashlimit compat patch and triggering the size
>>error again? Thanks.
>
>
> Do you mean conntrack compat?
> http://lists.netfilter.org/pipermail/netfilter-devel/2007-May/027763.html
Right, I confused them.
^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: iptables throws unknown error - suspecting 32/64 compat issue
@ 2007-06-02 13:53 ` Patrick McHardy
0 siblings, 0 replies; 48+ messages in thread
From: Patrick McHardy @ 2007-06-02 13:53 UTC (permalink / raw)
To: Jan Engelhardt
Cc: sparclinux, Netfilter Developer Mailing List, Dmitry Mishin
Jan Engelhardt wrote:
> On Jun 2 2007 14:54, Patrick McHardy wrote:
>
>>>>This is fixed in 2.6.21, thanks.
>>>
>>>Yes, the hashlimit compat issue is. But the underlying problem still
>>>persists, I'll send you a patch for testing soon.
>>
>>Here it is, could you please test whether it fixes the crash by
>>backing out the hashlimit compat patch and triggering the size
>>error again? Thanks.
>
>
> Do you mean conntrack compat?
> http://lists.netfilter.org/pipermail/netfilter-devel/2007-May/027763.html
Right, I confused them.
^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: iptables throws unknown error - suspecting 32/64 compat issue
2007-06-02 12:54 ` Patrick McHardy
@ 2007-06-02 14:25 ` Jan Engelhardt
-1 siblings, 0 replies; 48+ messages in thread
From: Jan Engelhardt @ 2007-06-02 14:25 UTC (permalink / raw)
To: Patrick McHardy
Cc: sparclinux, Netfilter Developer Mailing List, Dmitry Mishin
On Jun 2 2007 14:54, Patrick McHardy wrote:
>Patrick McHardy wrote:
>> Jan Engelhardt wrote:
>>
>>>This is fixed in 2.6.21, thanks.
>>
>> Yes, the hashlimit compat issue is. But the underlying problem still
>> persists, I'll send you a patch for testing soon.
>
>Here it is, could you please test whether it fixes the crash by
>backing out the hashlimit compat patch and triggering the size
>error again? Thanks.
[connlimit compat]
Kernel built, rebooted, no panics or thelike.
So to sum it up, hashlimit works, connlimit works. Seems all nice.
Thanks,
Jan
--
^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: iptables throws unknown error - suspecting 32/64 compat issue
@ 2007-06-02 14:25 ` Jan Engelhardt
0 siblings, 0 replies; 48+ messages in thread
From: Jan Engelhardt @ 2007-06-02 14:25 UTC (permalink / raw)
To: Patrick McHardy
Cc: sparclinux, Netfilter Developer Mailing List, Dmitry Mishin
On Jun 2 2007 14:54, Patrick McHardy wrote:
>Patrick McHardy wrote:
>> Jan Engelhardt wrote:
>>
>>>This is fixed in 2.6.21, thanks.
>>
>> Yes, the hashlimit compat issue is. But the underlying problem still
>> persists, I'll send you a patch for testing soon.
>
>Here it is, could you please test whether it fixes the crash by
>backing out the hashlimit compat patch and triggering the size
>error again? Thanks.
[connlimit compat]
Kernel built, rebooted, no panics or thelike.
So to sum it up, hashlimit works, connlimit works. Seems all nice.
Thanks,
Jan
--
^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: iptables throws unknown error - suspecting 32/64 compat issue
2007-06-02 14:25 ` Jan Engelhardt
@ 2007-06-02 14:43 ` Patrick McHardy
-1 siblings, 0 replies; 48+ messages in thread
From: Patrick McHardy @ 2007-06-02 14:43 UTC (permalink / raw)
To: Jan Engelhardt
Cc: sparclinux, Netfilter Developer Mailing List, Dmitry Mishin
Jan Engelhardt wrote:
> On Jun 2 2007 14:54, Patrick McHardy wrote:
>
>>Here it is, could you please test whether it fixes the crash by
>>backing out the hashlimit compat patch and triggering the size
>>error again? Thanks.
>
> [connlimit compat]
>
> Kernel built, rebooted, no panics or thelike.
> So to sum it up, hashlimit works, connlimit works. Seems all nice.
Thanks Jan. Will send upstream and to -stable soon.
^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: iptables throws unknown error - suspecting 32/64 compat issue
@ 2007-06-02 14:43 ` Patrick McHardy
0 siblings, 0 replies; 48+ messages in thread
From: Patrick McHardy @ 2007-06-02 14:43 UTC (permalink / raw)
To: Jan Engelhardt
Cc: sparclinux, Netfilter Developer Mailing List, Dmitry Mishin
Jan Engelhardt wrote:
> On Jun 2 2007 14:54, Patrick McHardy wrote:
>
>>Here it is, could you please test whether it fixes the crash by
>>backing out the hashlimit compat patch and triggering the size
>>error again? Thanks.
>
> [connlimit compat]
>
> Kernel built, rebooted, no panics or thelike.
> So to sum it up, hashlimit works, connlimit works. Seems all nice.
Thanks Jan. Will send upstream and to -stable soon.
^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: iptables throws unknown error - suspecting 32/64 compat issue
2007-06-02 12:54 ` Patrick McHardy
@ 2007-06-03 6:47 ` Dmitry Mishin
-1 siblings, 0 replies; 48+ messages in thread
From: Dmitry Mishin @ 2007-06-03 6:47 UTC (permalink / raw)
To: Patrick McHardy
Cc: Jan Engelhardt, sparclinux, Netfilter Developer Mailing List
On Saturday 02 June 2007 16:54, Patrick McHardy wrote:
> Patrick McHardy wrote:
> > Jan Engelhardt wrote:
> >>This is fixed in 2.6.21, thanks.
> >
> > Yes, the hashlimit compat issue is. But the underlying problem still
> > persists, I'll send you a patch for testing soon.
>
> Here it is, could you please test whether it fixes the crash by
> backing out the hashlimit compat patch and triggering the size
> error again? Thanks.
Patrick,
it looks like translate_compat_table() should be fixed also.
--
Thanks,
Dmitry.
^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: iptables throws unknown error - suspecting 32/64 compat issue
@ 2007-06-03 6:47 ` Dmitry Mishin
0 siblings, 0 replies; 48+ messages in thread
From: Dmitry Mishin @ 2007-06-03 6:47 UTC (permalink / raw)
To: Patrick McHardy
Cc: Jan Engelhardt, sparclinux, Netfilter Developer Mailing List
On Saturday 02 June 2007 16:54, Patrick McHardy wrote:
> Patrick McHardy wrote:
> > Jan Engelhardt wrote:
> >>This is fixed in 2.6.21, thanks.
> >
> > Yes, the hashlimit compat issue is. But the underlying problem still
> > persists, I'll send you a patch for testing soon.
>
> Here it is, could you please test whether it fixes the crash by
> backing out the hashlimit compat patch and triggering the size
> error again? Thanks.
Patrick,
it looks like translate_compat_table() should be fixed also.
--
Thanks,
Dmitry.
^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: iptables throws unknown error - suspecting 32/64 compat issue
2007-06-03 6:47 ` Dmitry Mishin
@ 2007-06-03 16:57 ` Patrick McHardy
-1 siblings, 0 replies; 48+ messages in thread
From: Patrick McHardy @ 2007-06-03 16:57 UTC (permalink / raw)
To: Dmitry Mishin
Cc: Jan Engelhardt, sparclinux, Netfilter Developer Mailing List
[-- Attachment #1: Type: text/plain, Size: 385 bytes --]
Dmitry Mishin wrote:
> On Saturday 02 June 2007 16:54, Patrick McHardy wrote:
>
>>Here it is, could you please test whether it fixes the crash by
>>backing out the hashlimit compat patch and triggering the size
>>error again? Thanks.
>
> Patrick,
> it looks like translate_compat_table() should be fixed also.
You're right, thanks for catching this. This patch should be
better.
[-- Attachment #2: x --]
[-- Type: text/plain, Size: 3737 bytes --]
[NETFILTER]: ip_tables: fix compat related crash
check_compat_entry_size_and_hooks iterates over the matches and calls
compat_check_calc_match, which loads the match and calculates the
compat offsets, but unlike the non-compat version, doesn't call
->checkentry yet. On error however it calls cleanup_matches, which in
turn calls ->destroy, which can result in crashes if the destroy
function (validly) expects to only get called after the checkentry
function.
Add a compat_release_match function that only drops the module reference
on error and rename compat_check_calc_match to compat_find_calc_match to
reflect the fact that it doesn't call the checkentry function.
Reported by Jan Engelhardt <jengelh@linux01.gwdg.de>
Signed-off-by: Patrick McHardy <kaber@trash.net>
---
commit b2b15a77343e2baadee22a5e64f691732874b10b
tree 7d82cf0a9fd3cf77933205a7a1834e958293e293
parent e7d815ef75f70dcdf55001f1f88ae7ae8827a7ba
author Patrick McHardy <kaber@trash.net> Sun, 03 Jun 2007 18:57:04 +0200
committer Patrick McHardy <kaber@trash.net> Sun, 03 Jun 2007 18:57:04 +0200
net/ipv4/netfilter/ip_tables.c | 41 ++++++++++++++++++++++++++++++++--------
1 files changed, 33 insertions(+), 8 deletions(-)
diff --git a/net/ipv4/netfilter/ip_tables.c b/net/ipv4/netfilter/ip_tables.c
index e3f83bf..0a35639 100644
--- a/net/ipv4/netfilter/ip_tables.c
+++ b/net/ipv4/netfilter/ip_tables.c
@@ -1425,7 +1425,7 @@ out:
}
static inline int
-compat_check_calc_match(struct ipt_entry_match *m,
+compat_find_calc_match(struct ipt_entry_match *m,
const char *name,
const struct ipt_ip *ip,
unsigned int hookmask,
@@ -1449,6 +1449,31 @@ compat_check_calc_match(struct ipt_entry_match *m,
}
static inline int
+compat_release_match(struct ipt_entry_match *m, unsigned int *i)
+{
+ if (i && (*i)-- == 0)
+ return 1;
+
+ module_put(m->u.kernel.match->me);
+ return 0;
+}
+
+static inline int
+compat_release_entry(struct ipt_entry *e, unsigned int *i)
+{
+ struct ipt_entry_target *t;
+
+ if (i && (*i)-- == 0)
+ return 1;
+
+ /* Cleanup all matches */
+ IPT_MATCH_ITERATE(e, compat_release_match, NULL);
+ t = ipt_get_target(e);
+ module_put(t->u.kernel.target->me);
+ return 0;
+}
+
+static inline int
check_compat_entry_size_and_hooks(struct ipt_entry *e,
struct xt_table_info *newinfo,
unsigned int *size,
@@ -1485,10 +1510,10 @@ check_compat_entry_size_and_hooks(struct ipt_entry *e,
off = 0;
entry_offset = (void *)e - (void *)base;
j = 0;
- ret = IPT_MATCH_ITERATE(e, compat_check_calc_match, name, &e->ip,
+ ret = IPT_MATCH_ITERATE(e, compat_find_calc_match, name, &e->ip,
e->comefrom, &off, &j);
if (ret != 0)
- goto cleanup_matches;
+ goto release_matches;
t = ipt_get_target(e);
target = try_then_request_module(xt_find_target(AF_INET,
@@ -1499,7 +1524,7 @@ check_compat_entry_size_and_hooks(struct ipt_entry *e,
duprintf("check_compat_entry_size_and_hooks: `%s' not found\n",
t->u.user.name);
ret = target ? PTR_ERR(target) : -ENOENT;
- goto cleanup_matches;
+ goto release_matches;
}
t->u.kernel.target = target;
@@ -1526,8 +1551,8 @@ check_compat_entry_size_and_hooks(struct ipt_entry *e,
out:
module_put(t->u.kernel.target->me);
-cleanup_matches:
- IPT_MATCH_ITERATE(e, cleanup_match, &j);
+release_matches:
+ IPT_MATCH_ITERATE(e, compat_release_match, &j);
return ret;
}
@@ -1690,13 +1715,13 @@ translate_compat_table(const char *name,
free_newinfo:
xt_free_table_info(newinfo);
-out:
IPT_ENTRY_ITERATE(entry0, total_size, cleanup_entry, &j);
return ret;
out_unlock:
compat_flush_offsets();
xt_compat_unlock(AF_INET);
- goto out;
+ IPT_ENTRY_ITERATE(entry0, total_size, compat_release_entry, &j);
+ return ret;
}
static int
^ permalink raw reply related [flat|nested] 48+ messages in thread
* Re: iptables throws unknown error - suspecting 32/64 compat issue
@ 2007-06-03 16:57 ` Patrick McHardy
0 siblings, 0 replies; 48+ messages in thread
From: Patrick McHardy @ 2007-06-03 16:57 UTC (permalink / raw)
To: Dmitry Mishin
Cc: Jan Engelhardt, sparclinux, Netfilter Developer Mailing List
[-- Attachment #1: Type: text/plain, Size: 385 bytes --]
Dmitry Mishin wrote:
> On Saturday 02 June 2007 16:54, Patrick McHardy wrote:
>
>>Here it is, could you please test whether it fixes the crash by
>>backing out the hashlimit compat patch and triggering the size
>>error again? Thanks.
>
> Patrick,
> it looks like translate_compat_table() should be fixed also.
You're right, thanks for catching this. This patch should be
better.
[-- Attachment #2: x --]
[-- Type: text/plain, Size: 3737 bytes --]
[NETFILTER]: ip_tables: fix compat related crash
check_compat_entry_size_and_hooks iterates over the matches and calls
compat_check_calc_match, which loads the match and calculates the
compat offsets, but unlike the non-compat version, doesn't call
->checkentry yet. On error however it calls cleanup_matches, which in
turn calls ->destroy, which can result in crashes if the destroy
function (validly) expects to only get called after the checkentry
function.
Add a compat_release_match function that only drops the module reference
on error and rename compat_check_calc_match to compat_find_calc_match to
reflect the fact that it doesn't call the checkentry function.
Reported by Jan Engelhardt <jengelh@linux01.gwdg.de>
Signed-off-by: Patrick McHardy <kaber@trash.net>
---
commit b2b15a77343e2baadee22a5e64f691732874b10b
tree 7d82cf0a9fd3cf77933205a7a1834e958293e293
parent e7d815ef75f70dcdf55001f1f88ae7ae8827a7ba
author Patrick McHardy <kaber@trash.net> Sun, 03 Jun 2007 18:57:04 +0200
committer Patrick McHardy <kaber@trash.net> Sun, 03 Jun 2007 18:57:04 +0200
net/ipv4/netfilter/ip_tables.c | 41 ++++++++++++++++++++++++++++++++--------
1 files changed, 33 insertions(+), 8 deletions(-)
diff --git a/net/ipv4/netfilter/ip_tables.c b/net/ipv4/netfilter/ip_tables.c
index e3f83bf..0a35639 100644
--- a/net/ipv4/netfilter/ip_tables.c
+++ b/net/ipv4/netfilter/ip_tables.c
@@ -1425,7 +1425,7 @@ out:
}
static inline int
-compat_check_calc_match(struct ipt_entry_match *m,
+compat_find_calc_match(struct ipt_entry_match *m,
const char *name,
const struct ipt_ip *ip,
unsigned int hookmask,
@@ -1449,6 +1449,31 @@ compat_check_calc_match(struct ipt_entry_match *m,
}
static inline int
+compat_release_match(struct ipt_entry_match *m, unsigned int *i)
+{
+ if (i && (*i)-- == 0)
+ return 1;
+
+ module_put(m->u.kernel.match->me);
+ return 0;
+}
+
+static inline int
+compat_release_entry(struct ipt_entry *e, unsigned int *i)
+{
+ struct ipt_entry_target *t;
+
+ if (i && (*i)-- == 0)
+ return 1;
+
+ /* Cleanup all matches */
+ IPT_MATCH_ITERATE(e, compat_release_match, NULL);
+ t = ipt_get_target(e);
+ module_put(t->u.kernel.target->me);
+ return 0;
+}
+
+static inline int
check_compat_entry_size_and_hooks(struct ipt_entry *e,
struct xt_table_info *newinfo,
unsigned int *size,
@@ -1485,10 +1510,10 @@ check_compat_entry_size_and_hooks(struct ipt_entry *e,
off = 0;
entry_offset = (void *)e - (void *)base;
j = 0;
- ret = IPT_MATCH_ITERATE(e, compat_check_calc_match, name, &e->ip,
+ ret = IPT_MATCH_ITERATE(e, compat_find_calc_match, name, &e->ip,
e->comefrom, &off, &j);
if (ret != 0)
- goto cleanup_matches;
+ goto release_matches;
t = ipt_get_target(e);
target = try_then_request_module(xt_find_target(AF_INET,
@@ -1499,7 +1524,7 @@ check_compat_entry_size_and_hooks(struct ipt_entry *e,
duprintf("check_compat_entry_size_and_hooks: `%s' not found\n",
t->u.user.name);
ret = target ? PTR_ERR(target) : -ENOENT;
- goto cleanup_matches;
+ goto release_matches;
}
t->u.kernel.target = target;
@@ -1526,8 +1551,8 @@ check_compat_entry_size_and_hooks(struct ipt_entry *e,
out:
module_put(t->u.kernel.target->me);
-cleanup_matches:
- IPT_MATCH_ITERATE(e, cleanup_match, &j);
+release_matches:
+ IPT_MATCH_ITERATE(e, compat_release_match, &j);
return ret;
}
@@ -1690,13 +1715,13 @@ translate_compat_table(const char *name,
free_newinfo:
xt_free_table_info(newinfo);
-out:
IPT_ENTRY_ITERATE(entry0, total_size, cleanup_entry, &j);
return ret;
out_unlock:
compat_flush_offsets();
xt_compat_unlock(AF_INET);
- goto out;
+ IPT_ENTRY_ITERATE(entry0, total_size, compat_release_entry, &j);
+ return ret;
}
static int
^ permalink raw reply related [flat|nested] 48+ messages in thread
* Re: iptables throws unknown error - suspecting 32/64 compat issue
2007-06-03 16:57 ` Patrick McHardy
@ 2007-06-03 17:29 ` Jan Engelhardt
-1 siblings, 0 replies; 48+ messages in thread
From: Jan Engelhardt @ 2007-06-03 17:29 UTC (permalink / raw)
To: Patrick McHardy
Cc: Dmitry Mishin, sparclinux, Netfilter Developer Mailing List
On Jun 3 2007 18:57, Patrick McHardy wrote:
>Dmitry Mishin wrote:
>> On Saturday 02 June 2007 16:54, Patrick McHardy wrote:
>>
>>>Here it is, could you please test whether it fixes the crash by
>>>backing out the hashlimit compat patch and triggering the size
>>>error again? Thanks.
>>
>> Patrick,
>> it looks like translate_compat_table() should be fixed also.
>
>You're right, thanks for catching this. This patch should be
>better.
I am kind of impartial when it comes to testing patches, but when
I look through and want to reply to them, doing them inline is
preferred.
Tested-By: Jan Engelhardt <jengelh@gmx.de>
Jan
--
^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: iptables throws unknown error - suspecting 32/64 compat issue
@ 2007-06-03 17:29 ` Jan Engelhardt
0 siblings, 0 replies; 48+ messages in thread
From: Jan Engelhardt @ 2007-06-03 17:29 UTC (permalink / raw)
To: Patrick McHardy
Cc: Dmitry Mishin, sparclinux, Netfilter Developer Mailing List
On Jun 3 2007 18:57, Patrick McHardy wrote:
>Dmitry Mishin wrote:
>> On Saturday 02 June 2007 16:54, Patrick McHardy wrote:
>>
>>>Here it is, could you please test whether it fixes the crash by
>>>backing out the hashlimit compat patch and triggering the size
>>>error again? Thanks.
>>
>> Patrick,
>> it looks like translate_compat_table() should be fixed also.
>
>You're right, thanks for catching this. This patch should be
>better.
I am kind of impartial when it comes to testing patches, but when
I look through and want to reply to them, doing them inline is
preferred.
Tested-By: Jan Engelhardt <jengelh@gmx.de>
Jan
--
^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: iptables throws unknown error - suspecting 32/64 compat issue
2007-06-03 17:29 ` Jan Engelhardt
@ 2007-06-03 17:31 ` Patrick McHardy
-1 siblings, 0 replies; 48+ messages in thread
From: Patrick McHardy @ 2007-06-03 17:31 UTC (permalink / raw)
To: Jan Engelhardt
Cc: Dmitry Mishin, sparclinux, Netfilter Developer Mailing List
Jan Engelhardt wrote:
> I am kind of impartial when it comes to testing patches, but when
> I look through and want to reply to them, doing them inline is
> preferred.
Content-Disposition: inline;
filename="x"
Works fine in any mailer I've tried.
^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: iptables throws unknown error - suspecting 32/64 compat issue
@ 2007-06-03 17:31 ` Patrick McHardy
0 siblings, 0 replies; 48+ messages in thread
From: Patrick McHardy @ 2007-06-03 17:31 UTC (permalink / raw)
To: Jan Engelhardt
Cc: Dmitry Mishin, sparclinux, Netfilter Developer Mailing List
Jan Engelhardt wrote:
> I am kind of impartial when it comes to testing patches, but when
> I look through and want to reply to them, doing them inline is
> preferred.
Content-Disposition: inline;
filename="x"
Works fine in any mailer I've tried.
^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: iptables throws unknown error - suspecting 32/64 compat issue
2007-06-03 17:31 ` Patrick McHardy
@ 2007-06-03 18:11 ` Jan Engelhardt
-1 siblings, 0 replies; 48+ messages in thread
From: Jan Engelhardt @ 2007-06-03 18:11 UTC (permalink / raw)
To: Patrick McHardy
Cc: Dmitry Mishin, sparclinux, Netfilter Developer Mailing List
On Jun 3 2007 19:31, Patrick McHardy wrote:
>Jan Engelhardt wrote:
>> I am kind of impartial when it comes to testing patches, but when
>> I look through and want to reply to them, doing them inline is
>> preferred.
>
>Content-Disposition: inline;
> filename="x"
>
>Works fine in any mailer I've tried.
Try pine.
* Displayed the attachment inline. (I think this needs a config
option, which is enabled for me).
* On reply, it strips the attachments.
* On export, the attachment is retained.
Time to figure.
Jan
--
^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: iptables throws unknown error - suspecting 32/64 compat issue
@ 2007-06-03 18:11 ` Jan Engelhardt
0 siblings, 0 replies; 48+ messages in thread
From: Jan Engelhardt @ 2007-06-03 18:11 UTC (permalink / raw)
To: Patrick McHardy
Cc: Dmitry Mishin, sparclinux, Netfilter Developer Mailing List
On Jun 3 2007 19:31, Patrick McHardy wrote:
>Jan Engelhardt wrote:
>> I am kind of impartial when it comes to testing patches, but when
>> I look through and want to reply to them, doing them inline is
>> preferred.
>
>Content-Disposition: inline;
> filename="x"
>
>Works fine in any mailer I've tried.
Try pine.
* Displayed the attachment inline. (I think this needs a config
option, which is enabled for me).
* On reply, it strips the attachments.
* On export, the attachment is retained.
Time to figure.
Jan
--
^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: iptables throws unknown error - suspecting 32/64 compat issue
2007-06-03 16:57 ` Patrick McHardy
@ 2007-06-04 7:54 ` Dmitry Mishin
-1 siblings, 0 replies; 48+ messages in thread
From: Dmitry Mishin @ 2007-06-04 7:54 UTC (permalink / raw)
To: Patrick McHardy
Cc: sparclinux, Netfilter Developer Mailing List, Jan Engelhardt
On Sunday 03 June 2007 20:57, Patrick McHardy wrote:
> Dmitry Mishin wrote:
> > On Saturday 02 June 2007 16:54, Patrick McHardy wrote:
> >>Here it is, could you please test whether it fixes the crash by
> >>backing out the hashlimit compat patch and triggering the size
> >>error again? Thanks.
> >
> > Patrick,
> > it looks like translate_compat_table() should be fixed also.
>
> You're right, thanks for catching this. This patch should be
> better.
It's better, but I see the issue with iterate with compat_check_entry() calls.
If it fails, some of target/matches' check_* functions are called, some not.
Please, review my version of this patch.
Signed-off-by: Dmitry Mishin <dim@openvz.org>
---
diff --git a/include/linux/netfilter_ipv4/ip_tables.h
b/include/linux/netfilter_ipv4/ip_tables.h
index 2f46dd7..9c294a5 100644
--- a/include/linux/netfilter_ipv4/ip_tables.h
+++ b/include/linux/netfilter_ipv4/ip_tables.h
@@ -264,6 +264,23 @@ ({ \
__ret; \
})
+/* fn returns 0 to continue iteration */
+#define IPT_ENTRY_ITERATE_CONTINUE(entries, size, i, fn, args...) \
+({ \
+ unsigned int __i; \
+ int __ret = 0; \
+ struct ipt_entry *__entry; \
+ \
+ for (__i = i; __i < (size); __i += __entry->next_offset) { \
+ __entry = (void *)(entries) + __i; \
+ \
+ __ret = fn(__entry , ## args); \
+ if (__ret != 0) \
+ break; \
+ } \
+ __ret; \
+})
+
/*
* Main firewall chains definitions and global var's definitions.
*/
diff --git a/net/ipv4/netfilter/ip_tables.c b/net/ipv4/netfilter/ip_tables.c
index e3f83bf..9bacf1a 100644
--- a/net/ipv4/netfilter/ip_tables.c
+++ b/net/ipv4/netfilter/ip_tables.c
@@ -499,7 +499,8 @@ check_entry(struct ipt_entry *e, const c
}
static inline int check_match(struct ipt_entry_match *m, const char *name,
- const struct ipt_ip *ip, unsigned int hookmask)
+ const struct ipt_ip *ip, unsigned int hookmask,
+ unsigned int *i)
{
struct xt_match *match;
int ret;
@@ -515,6 +516,8 @@ static inline int check_match(struct ipt
m->u.kernel.match->name);
ret = -EINVAL;
}
+ if (!ret)
+ (*i)++;
return ret;
}
@@ -537,11 +540,10 @@ find_check_match(struct ipt_entry_match
}
m->u.kernel.match = match;
- ret = check_match(m, name, ip, hookmask);
+ ret = check_match(m, name, ip, hookmask, i);
if (ret)
goto err;
- (*i)++;
return 0;
err:
module_put(m->u.kernel.match->me);
@@ -1425,7 +1427,7 @@ out:
}
static inline int
-compat_check_calc_match(struct ipt_entry_match *m,
+compat_find_calc_match(struct ipt_entry_match *m,
const char *name,
const struct ipt_ip *ip,
unsigned int hookmask,
@@ -1449,6 +1451,31 @@ compat_check_calc_match(struct ipt_entry
}
static inline int
+compat_release_match(struct ipt_entry_match *m, unsigned int *i)
+{
+ if (i && (*i)-- == 0)
+ return 1;
+
+ module_put(m->u.kernel.match->me);
+ return 0;
+}
+
+static inline int
+compat_release_entry(struct ipt_entry *e, unsigned int *i)
+{
+ struct ipt_entry_target *t;
+
+ if (i && (*i)-- == 0)
+ return 1;
+
+ /* Cleanup all matches */
+ IPT_MATCH_ITERATE(e, compat_release_match, NULL);
+ t = ipt_get_target(e);
+ module_put(t->u.kernel.target->me);
+ return 0;
+}
+
+static inline int
check_compat_entry_size_and_hooks(struct ipt_entry *e,
struct xt_table_info *newinfo,
unsigned int *size,
@@ -1485,10 +1512,10 @@ check_compat_entry_size_and_hooks(struct
off = 0;
entry_offset = (void *)e - (void *)base;
j = 0;
- ret = IPT_MATCH_ITERATE(e, compat_check_calc_match, name, &e->ip,
+ ret = IPT_MATCH_ITERATE(e, compat_find_calc_match, name, &e->ip,
e->comefrom, &off, &j);
if (ret != 0)
- goto cleanup_matches;
+ goto release_matches;
t = ipt_get_target(e);
target = try_then_request_module(xt_find_target(AF_INET,
@@ -1499,7 +1526,7 @@ check_compat_entry_size_and_hooks(struct
duprintf("check_compat_entry_size_and_hooks: `%s' not found\n",
t->u.user.name);
ret = target ? PTR_ERR(target) : -ENOENT;
- goto cleanup_matches;
+ goto release_matches;
}
t->u.kernel.target = target;
@@ -1526,8 +1553,8 @@ check_compat_entry_size_and_hooks(struct
out:
module_put(t->u.kernel.target->me);
-cleanup_matches:
- IPT_MATCH_ITERATE(e, cleanup_match, &j);
+release_matches:
+ IPT_MATCH_ITERATE(e, compat_release_match, &j);
return ret;
}
@@ -1574,15 +1601,26 @@ static int compat_copy_entry_from_user(s
return ret;
}
-static inline int compat_check_entry(struct ipt_entry *e, const char *name)
+static inline int compat_check_entry(struct ipt_entry *e, const char *name,
+ unsigned int *i)
{
- int ret;
+ int j, ret;
- ret = IPT_MATCH_ITERATE(e, check_match, name, &e->ip, e->comefrom);
+ j = 0;
+ ret = IPT_MATCH_ITERATE(e, check_match, name, &e->ip, e->comefrom, &j);
if (ret)
- return ret;
+ goto cleanup_matches;
+
+ ret = check_target(e, name);
+ if (ret)
+ goto cleanup_matches;
- return check_target(e, name);
+ (*i)++;
+ return 0;
+
+ cleanup_matches:
+ IPT_MATCH_ITERATE(e, cleanup_match, &j);
+ return ret;
}
static int
@@ -1673,10 +1711,17 @@ translate_compat_table(const char *name,
if (!mark_source_chains(newinfo, valid_hooks, entry1))
goto free_newinfo;
+ i = 0;
ret = IPT_ENTRY_ITERATE(entry1, newinfo->size, compat_check_entry,
- name);
- if (ret)
- goto free_newinfo;
+ name, &i);
+ if (ret) {
+ j -= i;
+ IPT_ENTRY_ITERATE_CONTINUE(entry1, newinfo->size, i,
+ compat_release_entry, &j);
+ IPT_ENTRY_ITERATE(entry1, newinfo->size, cleanup_entry, &i);
+ xt_free_table_info(newinfo);
+ return ret;
+ }
/* And one copy for every other CPU */
for_each_possible_cpu(i)
@@ -1691,7 +1736,7 @@ translate_compat_table(const char *name,
free_newinfo:
xt_free_table_info(newinfo);
out:
- IPT_ENTRY_ITERATE(entry0, total_size, cleanup_entry, &j);
+ IPT_ENTRY_ITERATE(entry0, total_size, compat_release_entry, &j);
return ret;
out_unlock:
compat_flush_offsets();
^ permalink raw reply related [flat|nested] 48+ messages in thread
* Re: iptables throws unknown error - suspecting 32/64 compat issue
@ 2007-06-04 7:54 ` Dmitry Mishin
0 siblings, 0 replies; 48+ messages in thread
From: Dmitry Mishin @ 2007-06-04 7:54 UTC (permalink / raw)
To: Patrick McHardy
Cc: sparclinux, Netfilter Developer Mailing List, Jan Engelhardt
On Sunday 03 June 2007 20:57, Patrick McHardy wrote:
> Dmitry Mishin wrote:
> > On Saturday 02 June 2007 16:54, Patrick McHardy wrote:
> >>Here it is, could you please test whether it fixes the crash by
> >>backing out the hashlimit compat patch and triggering the size
> >>error again? Thanks.
> >
> > Patrick,
> > it looks like translate_compat_table() should be fixed also.
>
> You're right, thanks for catching this. This patch should be
> better.
It's better, but I see the issue with iterate with compat_check_entry() calls.
If it fails, some of target/matches' check_* functions are called, some not.
Please, review my version of this patch.
Signed-off-by: Dmitry Mishin <dim@openvz.org>
---
diff --git a/include/linux/netfilter_ipv4/ip_tables.h
b/include/linux/netfilter_ipv4/ip_tables.h
index 2f46dd7..9c294a5 100644
--- a/include/linux/netfilter_ipv4/ip_tables.h
+++ b/include/linux/netfilter_ipv4/ip_tables.h
@@ -264,6 +264,23 @@ ({ \
__ret; \
})
+/* fn returns 0 to continue iteration */
+#define IPT_ENTRY_ITERATE_CONTINUE(entries, size, i, fn, args...) \
+({ \
+ unsigned int __i; \
+ int __ret = 0; \
+ struct ipt_entry *__entry; \
+ \
+ for (__i = i; __i < (size); __i += __entry->next_offset) { \
+ __entry = (void *)(entries) + __i; \
+ \
+ __ret = fn(__entry , ## args); \
+ if (__ret != 0) \
+ break; \
+ } \
+ __ret; \
+})
+
/*
* Main firewall chains definitions and global var's definitions.
*/
diff --git a/net/ipv4/netfilter/ip_tables.c b/net/ipv4/netfilter/ip_tables.c
index e3f83bf..9bacf1a 100644
--- a/net/ipv4/netfilter/ip_tables.c
+++ b/net/ipv4/netfilter/ip_tables.c
@@ -499,7 +499,8 @@ check_entry(struct ipt_entry *e, const c
}
static inline int check_match(struct ipt_entry_match *m, const char *name,
- const struct ipt_ip *ip, unsigned int hookmask)
+ const struct ipt_ip *ip, unsigned int hookmask,
+ unsigned int *i)
{
struct xt_match *match;
int ret;
@@ -515,6 +516,8 @@ static inline int check_match(struct ipt
m->u.kernel.match->name);
ret = -EINVAL;
}
+ if (!ret)
+ (*i)++;
return ret;
}
@@ -537,11 +540,10 @@ find_check_match(struct ipt_entry_match
}
m->u.kernel.match = match;
- ret = check_match(m, name, ip, hookmask);
+ ret = check_match(m, name, ip, hookmask, i);
if (ret)
goto err;
- (*i)++;
return 0;
err:
module_put(m->u.kernel.match->me);
@@ -1425,7 +1427,7 @@ out:
}
static inline int
-compat_check_calc_match(struct ipt_entry_match *m,
+compat_find_calc_match(struct ipt_entry_match *m,
const char *name,
const struct ipt_ip *ip,
unsigned int hookmask,
@@ -1449,6 +1451,31 @@ compat_check_calc_match(struct ipt_entry
}
static inline int
+compat_release_match(struct ipt_entry_match *m, unsigned int *i)
+{
+ if (i && (*i)-- = 0)
+ return 1;
+
+ module_put(m->u.kernel.match->me);
+ return 0;
+}
+
+static inline int
+compat_release_entry(struct ipt_entry *e, unsigned int *i)
+{
+ struct ipt_entry_target *t;
+
+ if (i && (*i)-- = 0)
+ return 1;
+
+ /* Cleanup all matches */
+ IPT_MATCH_ITERATE(e, compat_release_match, NULL);
+ t = ipt_get_target(e);
+ module_put(t->u.kernel.target->me);
+ return 0;
+}
+
+static inline int
check_compat_entry_size_and_hooks(struct ipt_entry *e,
struct xt_table_info *newinfo,
unsigned int *size,
@@ -1485,10 +1512,10 @@ check_compat_entry_size_and_hooks(struct
off = 0;
entry_offset = (void *)e - (void *)base;
j = 0;
- ret = IPT_MATCH_ITERATE(e, compat_check_calc_match, name, &e->ip,
+ ret = IPT_MATCH_ITERATE(e, compat_find_calc_match, name, &e->ip,
e->comefrom, &off, &j);
if (ret != 0)
- goto cleanup_matches;
+ goto release_matches;
t = ipt_get_target(e);
target = try_then_request_module(xt_find_target(AF_INET,
@@ -1499,7 +1526,7 @@ check_compat_entry_size_and_hooks(struct
duprintf("check_compat_entry_size_and_hooks: `%s' not found\n",
t->u.user.name);
ret = target ? PTR_ERR(target) : -ENOENT;
- goto cleanup_matches;
+ goto release_matches;
}
t->u.kernel.target = target;
@@ -1526,8 +1553,8 @@ check_compat_entry_size_and_hooks(struct
out:
module_put(t->u.kernel.target->me);
-cleanup_matches:
- IPT_MATCH_ITERATE(e, cleanup_match, &j);
+release_matches:
+ IPT_MATCH_ITERATE(e, compat_release_match, &j);
return ret;
}
@@ -1574,15 +1601,26 @@ static int compat_copy_entry_from_user(s
return ret;
}
-static inline int compat_check_entry(struct ipt_entry *e, const char *name)
+static inline int compat_check_entry(struct ipt_entry *e, const char *name,
+ unsigned int *i)
{
- int ret;
+ int j, ret;
- ret = IPT_MATCH_ITERATE(e, check_match, name, &e->ip, e->comefrom);
+ j = 0;
+ ret = IPT_MATCH_ITERATE(e, check_match, name, &e->ip, e->comefrom, &j);
if (ret)
- return ret;
+ goto cleanup_matches;
+
+ ret = check_target(e, name);
+ if (ret)
+ goto cleanup_matches;
- return check_target(e, name);
+ (*i)++;
+ return 0;
+
+ cleanup_matches:
+ IPT_MATCH_ITERATE(e, cleanup_match, &j);
+ return ret;
}
static int
@@ -1673,10 +1711,17 @@ translate_compat_table(const char *name,
if (!mark_source_chains(newinfo, valid_hooks, entry1))
goto free_newinfo;
+ i = 0;
ret = IPT_ENTRY_ITERATE(entry1, newinfo->size, compat_check_entry,
- name);
- if (ret)
- goto free_newinfo;
+ name, &i);
+ if (ret) {
+ j -= i;
+ IPT_ENTRY_ITERATE_CONTINUE(entry1, newinfo->size, i,
+ compat_release_entry, &j);
+ IPT_ENTRY_ITERATE(entry1, newinfo->size, cleanup_entry, &i);
+ xt_free_table_info(newinfo);
+ return ret;
+ }
/* And one copy for every other CPU */
for_each_possible_cpu(i)
@@ -1691,7 +1736,7 @@ translate_compat_table(const char *name,
free_newinfo:
xt_free_table_info(newinfo);
out:
- IPT_ENTRY_ITERATE(entry0, total_size, cleanup_entry, &j);
+ IPT_ENTRY_ITERATE(entry0, total_size, compat_release_entry, &j);
return ret;
out_unlock:
compat_flush_offsets();
^ permalink raw reply related [flat|nested] 48+ messages in thread
* Re: iptables throws unknown error - suspecting 32/64 compat issue
2007-06-04 7:54 ` Dmitry Mishin
@ 2007-06-05 12:16 ` Patrick McHardy
-1 siblings, 0 replies; 48+ messages in thread
From: Patrick McHardy @ 2007-06-05 12:16 UTC (permalink / raw)
To: Dmitry Mishin
Cc: Jan Engelhardt, sparclinux, Netfilter Developer Mailing List
Dmitry Mishin wrote:
> It's better, but I see the issue with iterate with compat_check_entry() calls.
> If it fails, some of target/matches' check_* functions are called, some not.
> Please, review my version of this patch.
You're right again, thanks. Patch applied.
^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: iptables throws unknown error - suspecting 32/64 compat issue
@ 2007-06-05 12:16 ` Patrick McHardy
0 siblings, 0 replies; 48+ messages in thread
From: Patrick McHardy @ 2007-06-05 12:16 UTC (permalink / raw)
To: Dmitry Mishin
Cc: Jan Engelhardt, sparclinux, Netfilter Developer Mailing List
Dmitry Mishin wrote:
> It's better, but I see the issue with iterate with compat_check_entry() calls.
> If it fails, some of target/matches' check_* functions are called, some not.
> Please, review my version of this patch.
You're right again, thanks. Patch applied.
^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: iptables throws unknown error - suspecting 32/64 compat issue
2007-06-05 12:16 ` Patrick McHardy
@ 2007-06-05 13:32 ` Patrick McHardy
-1 siblings, 0 replies; 48+ messages in thread
From: Patrick McHardy @ 2007-06-05 13:32 UTC (permalink / raw)
To: Dmitry Mishin
Cc: sparclinux, Netfilter Developer Mailing List, Jan Engelhardt
[-- Attachment #1: Type: text/plain, Size: 334 bytes --]
Patrick McHardy wrote:
> Dmitry Mishin wrote:
>
>>It's better, but I see the issue with iterate with compat_check_entry() calls.
>>If it fails, some of target/matches' check_* functions are called, some not.
>>Please, review my version of this patch.
>
>
>
> You're right again, thanks. Patch applied.
>
With one minor change:
[-- Attachment #2: x --]
[-- Type: text/plain, Size: 915 bytes --]
diff --git a/include/linux/netfilter_ipv4/ip_tables.h b/include/linux/netfilter_ipv4/ip_tables.h
index 9c294a5..e992cd6 100644
--- a/include/linux/netfilter_ipv4/ip_tables.h
+++ b/include/linux/netfilter_ipv4/ip_tables.h
@@ -265,14 +265,17 @@ ipt_get_target(struct ipt_entry *e)
})
/* fn returns 0 to continue iteration */
-#define IPT_ENTRY_ITERATE_CONTINUE(entries, size, i, fn, args...) \
+#define IPT_ENTRY_ITERATE_CONTINUE(entries, size, n, fn, args...) \
({ \
- unsigned int __i; \
+ unsigned int __i, __n; \
int __ret = 0; \
struct ipt_entry *__entry; \
\
- for (__i = i; __i < (size); __i += __entry->next_offset) { \
+ for (__i = 0, __n = 0; __i < (size); \
+ __i += __entry->next_offset, __n++) { \
__entry = (void *)(entries) + __i; \
+ if (__n < n) \
+ continue; \
\
__ret = fn(__entry , ## args); \
if (__ret != 0) \
^ permalink raw reply related [flat|nested] 48+ messages in thread
* Re: iptables throws unknown error - suspecting 32/64 compat issue
@ 2007-06-05 13:32 ` Patrick McHardy
0 siblings, 0 replies; 48+ messages in thread
From: Patrick McHardy @ 2007-06-05 13:32 UTC (permalink / raw)
To: Dmitry Mishin
Cc: sparclinux, Netfilter Developer Mailing List, Jan Engelhardt
[-- Attachment #1: Type: text/plain, Size: 334 bytes --]
Patrick McHardy wrote:
> Dmitry Mishin wrote:
>
>>It's better, but I see the issue with iterate with compat_check_entry() calls.
>>If it fails, some of target/matches' check_* functions are called, some not.
>>Please, review my version of this patch.
>
>
>
> You're right again, thanks. Patch applied.
>
With one minor change:
[-- Attachment #2: x --]
[-- Type: text/plain, Size: 915 bytes --]
diff --git a/include/linux/netfilter_ipv4/ip_tables.h b/include/linux/netfilter_ipv4/ip_tables.h
index 9c294a5..e992cd6 100644
--- a/include/linux/netfilter_ipv4/ip_tables.h
+++ b/include/linux/netfilter_ipv4/ip_tables.h
@@ -265,14 +265,17 @@ ipt_get_target(struct ipt_entry *e)
})
/* fn returns 0 to continue iteration */
-#define IPT_ENTRY_ITERATE_CONTINUE(entries, size, i, fn, args...) \
+#define IPT_ENTRY_ITERATE_CONTINUE(entries, size, n, fn, args...) \
({ \
- unsigned int __i; \
+ unsigned int __i, __n; \
int __ret = 0; \
struct ipt_entry *__entry; \
\
- for (__i = i; __i < (size); __i += __entry->next_offset) { \
+ for (__i = 0, __n = 0; __i < (size); \
+ __i += __entry->next_offset, __n++) { \
__entry = (void *)(entries) + __i; \
+ if (__n < n) \
+ continue; \
\
__ret = fn(__entry , ## args); \
if (__ret != 0) \
^ permalink raw reply related [flat|nested] 48+ messages in thread
* Re: iptables throws unknown error - suspecting 32/64 compat issue
2007-06-05 13:32 ` Patrick McHardy
@ 2007-06-05 13:50 ` Dmitry Mishin
-1 siblings, 0 replies; 48+ messages in thread
From: Dmitry Mishin @ 2007-06-05 13:50 UTC (permalink / raw)
To: netfilter-devel; +Cc: sparclinux, Patrick McHardy, Jan Engelhardt
On Tuesday 05 June 2007 17:32, Patrick McHardy wrote:
> Patrick McHardy wrote:
> > Dmitry Mishin wrote:
> >>It's better, but I see the issue with iterate with compat_check_entry()
> >> calls. If it fails, some of target/matches' check_* functions are
> >> called, some not. Please, review my version of this patch.
> >
> > You're right again, thanks. Patch applied.
>
> With one minor change:
No probs, thanks Patrick, for your work!
--
Thanks,
Dmitry.
^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: iptables throws unknown error - suspecting 32/64 compat issue
@ 2007-06-05 13:50 ` Dmitry Mishin
0 siblings, 0 replies; 48+ messages in thread
From: Dmitry Mishin @ 2007-06-05 13:50 UTC (permalink / raw)
To: netfilter-devel; +Cc: sparclinux, Patrick McHardy, Jan Engelhardt
On Tuesday 05 June 2007 17:32, Patrick McHardy wrote:
> Patrick McHardy wrote:
> > Dmitry Mishin wrote:
> >>It's better, but I see the issue with iterate with compat_check_entry()
> >> calls. If it fails, some of target/matches' check_* functions are
> >> called, some not. Please, review my version of this patch.
> >
> > You're right again, thanks. Patch applied.
>
> With one minor change:
No probs, thanks Patrick, for your work!
--
Thanks,
Dmitry.
^ permalink raw reply [flat|nested] 48+ messages in thread
end of thread, other threads:[~2007-06-05 13:50 UTC | newest]
Thread overview: 48+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-05-10 6:27 iptables throws unknown error - suspecting 32/64 compat issue Jan Engelhardt
2007-05-10 6:27 ` Jan Engelhardt
2007-05-10 6:34 ` Jan Engelhardt
2007-05-10 6:34 ` Jan Engelhardt
2007-05-10 7:16 ` David Miller
2007-05-10 7:16 ` David Miller
2007-05-10 13:20 ` Patrick McHardy
2007-05-10 13:20 ` Patrick McHardy
2007-05-10 13:24 ` Jan Engelhardt
2007-05-10 13:24 ` Jan Engelhardt
2007-05-10 14:02 ` Patrick McHardy
2007-05-10 14:02 ` Patrick McHardy
2007-05-10 14:05 ` Jan Engelhardt
2007-05-10 14:05 ` Jan Engelhardt
2007-05-29 21:36 ` Jan Engelhardt
2007-05-29 21:36 ` Jan Engelhardt
2007-05-29 22:29 ` Patrick McHardy
2007-05-29 22:29 ` Patrick McHardy
2007-06-02 12:54 ` Patrick McHardy
2007-06-02 12:54 ` Patrick McHardy
2007-06-02 13:29 ` Jan Engelhardt
2007-06-02 13:29 ` Jan Engelhardt
2007-06-02 13:53 ` Patrick McHardy
2007-06-02 13:53 ` Patrick McHardy
2007-06-02 14:25 ` Jan Engelhardt
2007-06-02 14:25 ` Jan Engelhardt
2007-06-02 14:43 ` Patrick McHardy
2007-06-02 14:43 ` Patrick McHardy
2007-06-03 6:47 ` Dmitry Mishin
2007-06-03 6:47 ` Dmitry Mishin
2007-06-03 16:57 ` Patrick McHardy
2007-06-03 16:57 ` Patrick McHardy
2007-06-03 17:29 ` Jan Engelhardt
2007-06-03 17:29 ` Jan Engelhardt
2007-06-03 17:31 ` Patrick McHardy
2007-06-03 17:31 ` Patrick McHardy
2007-06-03 18:11 ` Jan Engelhardt
2007-06-03 18:11 ` Jan Engelhardt
2007-06-04 7:54 ` Dmitry Mishin
2007-06-04 7:54 ` Dmitry Mishin
2007-06-05 12:16 ` Patrick McHardy
2007-06-05 12:16 ` Patrick McHardy
2007-06-05 13:32 ` Patrick McHardy
2007-06-05 13:32 ` Patrick McHardy
2007-06-05 13:50 ` Dmitry Mishin
2007-06-05 13:50 ` Dmitry Mishin
2007-05-10 12:58 ` Patrick McHardy
2007-05-10 12:58 ` Patrick McHardy
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.