All of lore.kernel.org
 help / color / mirror / Atom feed
* iptables+2.6-test8-bk4 : Still problems
@ 2003-10-26  8:48 Georg Chini
  2003-10-26 15:52 ` Balint Cristian
  0 siblings, 1 reply; 8+ messages in thread
From: Georg Chini @ 2003-10-26  8:48 UTC (permalink / raw)
  To: sparclinux, netfilter-devel

Hello,

on my sparc64 (ultra1) I am using ppp and ipsec
to get a tunnel to my office. Before 2.6.0-test8-bk4
my computer would freeze when using any iptables command.
With 2.6.0-test8-bk4 "iptables -F" responds with
"invalid argument" when my ppp interface is up and
the tables will not be flushed.
/usr/local/sbin/iptables -A INPUT -i ppp0 -j ACCEPT
works, but the corresponding
/usr/local/sbin/iptables -D INPUT -i ppp0 -j ACCEPT
does not, again I get "invalid argument".
When I additionally start ipsec (using freeswan 2.03)
things will get worse. Every iptables command referring
to the ppp interface or the IP-address of the ppp interface
is rejected with "invalid argument".
Any suggestions how to fix this are welcome.
If you need more debugging output, I can supply it.
As I am not sure wether this is a sparc-only problem,
I post this to netfilter-devel too.

Thanks in advance
                   Georg Chini


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: iptables+2.6-test8-bk4 : Still problems
  2003-10-26  8:48 iptables+2.6-test8-bk4 : Still problems Georg Chini
@ 2003-10-26 15:52 ` Balint Cristian
  2003-10-27  6:34   ` David S. Miller
  0 siblings, 1 reply; 8+ messages in thread
From: Balint Cristian @ 2003-10-26 15:52 UTC (permalink / raw)
  To: Georg Chini, sparclinux, netfilter-devel

On Sunday 26 October 2003 03:48, Georg Chini wrote:

> /usr/local/sbin/iptables -A INPUT -i ppp0 -j ACCEPT
> works, but the corresponding
> /usr/local/sbin/iptables -D INPUT -i ppp0 -j ACCEPT
> does not, again I get "invalid argument".


I object too, a simple "iptables -F" not work, see here:

-------------------------------------------///-------------------------------------
[root@sun root]# iptables -L -n
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
REJECT     tcp  --  0.0.0.0/0            0.0.0.0/0          tcp dpt:631 reject-with tcp-reset

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
[root@sun root]# iptables -F INPUT
iptables: No chain/target/match by that name
[root@sun root]#
------------------------------------////------------------------------------------------------------

	I can add rules even can delete rules, accounting seems to work on rules but only rules FLUSH
don't work.

Using: iptables v1.2.8 + 2.6.0-test8-bk2 + davem.netfilter-compat-patch

cristian


>
> Thanks in advance
>                    Georg Chini
>
> -
> To unsubscribe from this list: send the line "unsubscribe sparclinux" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

-- 
Life in itself has no meaning. 
Life is an opportunity to create meaning.

              \|/ ____ \|/ 
              "@'/ .. \`@" 
              /_| \__/ |_\ 
                 \__U_/ 


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: iptables+2.6-test8-bk4 : Still problems
  2003-10-26 15:52 ` Balint Cristian
@ 2003-10-27  6:34   ` David S. Miller
  2003-10-28 20:31     ` Georg Chini
  0 siblings, 1 reply; 8+ messages in thread
From: David S. Miller @ 2003-10-27  6:34 UTC (permalink / raw)
  To: Balint Cristian; +Cc: georg.chini, sparclinux, netfilter-devel


It's some bug in the translation code in net/compat.c

If someone could review that code and try to find the bug
I'd appreciate it as I have a million other things to do
over the next few days.

Thanks.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: iptables+2.6-test8-bk4 : Still problems
  2003-10-27  6:34   ` David S. Miller
@ 2003-10-28 20:31     ` Georg Chini
  2003-10-29  6:48       ` David S. Miller
  2003-10-29  7:13       ` David S. Miller
  0 siblings, 2 replies; 8+ messages in thread
From: Georg Chini @ 2003-10-28 20:31 UTC (permalink / raw)
  To: David S. Miller; +Cc: Balint Cristian, sparclinux, netfilter-devel

David S. Miller wrote:
> It's some bug in the translation code in net/compat.c

Yes it is.
The problem is, that the ipt_entries are not all the same
size. So instead of copying them one by one you have
to copy the whole block. Here is a patch:


--- linux-test/net/compat.c     Tue Oct 28 21:15:36 2003
+++ linux-2.6.0-test9/net/compat.c      Tue Oct 28 20:52:43 2003
@@ -318,11 +318,12 @@
  {
         struct compat_ipt_replace *urepl = (struct compat_ipt_replace *)optval;
         struct ipt_replace *repl_nat;
+       struct ipt_entry *k_ipt_entries;
         char name[IPT_TABLE_MAXNAMELEN];
         u32 origsize, tmp32, num_counters;
         unsigned int repl_nat_size;
         int ret;
-       int i, num_ents;
+       int i;
         compat_uptr_t ucntrs;

         if (get_user(origsize, &urepl->size))
@@ -366,15 +367,14 @@
             __put_user(compat_ptr(ucntrs), &repl_nat->counters))
                 goto out;

-       num_ents = origsize / sizeof(struct ipt_entry);
-
-       for (i = 0; i < num_ents; i++) {
-               struct ipt_entry ent;
+       k_ipt_entries = (struct ipt_entry *)kmalloc(origsize, GFP_KERNEL);
+       if (__copy_from_user(k_ipt_entries, &urepl->entries[0], origsize) ||
+           __copy_to_user(&repl_nat->entries[0], k_ipt_entries, origsize)) {
+               kfree(k_ipt_entries);
+               goto out;
+               }

-               if (__copy_from_user(&ent, &urepl->entries[i], sizeof(ent)) ||
-                   __copy_to_user(&repl_nat->entries[i], &ent, sizeof(ent)))
-                       goto out;
-       }
+       kfree(k_ipt_entries);

         for (i = 0; i < NF_IP_NUMHOOKS; i++) {
                 if (__get_user(tmp32, &urepl->hook_entry[i]) ||


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: iptables+2.6-test8-bk4 : Still problems
  2003-10-28 20:31     ` Georg Chini
@ 2003-10-29  6:48       ` David S. Miller
  2003-10-29  7:13       ` David S. Miller
  1 sibling, 0 replies; 8+ messages in thread
From: David S. Miller @ 2003-10-29  6:48 UTC (permalink / raw)
  To: Georg Chini; +Cc: rezso, sparclinux, netfilter-devel

On Tue, 28 Oct 2003 21:31:02 +0100
Georg Chini <georg.chini@triaton-webhosting.com> wrote:

> David S. Miller wrote:
> > It's some bug in the translation code in net/compat.c
> 
> Yes it is.
> The problem is, that the ipt_entries are not all the same
> size. So instead of copying them one by one you have
> to copy the whole block. Here is a patch:

Good spotting, I didn't know this.

However, I was trying to avoid a kmalloc of anything in this code :(
You're also not verifying the kmalloc() return value for errors.

I think I'll use copy_in_user() to fix this bug, thanks.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: iptables+2.6-test8-bk4 : Still problems
  2003-10-28 20:31     ` Georg Chini
  2003-10-29  6:48       ` David S. Miller
@ 2003-10-29  7:13       ` David S. Miller
  2003-10-29 18:20         ` Ryan Veety
  1 sibling, 1 reply; 8+ messages in thread
From: David S. Miller @ 2003-10-29  7:13 UTC (permalink / raw)
  To: Georg Chini; +Cc: rezso, sparclinux, netfilter-devel


Ok, here is the patch I'm using to fix this, please test.

Thanks again for figuring out the problem Georg.

# This is a BitKeeper generated patch for the following project:
# Project Name: Linux kernel tree
# This patch format is intended for GNU patch command version 2.5 or higher.
# This patch includes the following deltas:
#	           ChangeSet	1.1380  -> 1.1381 
#	        net/compat.c	1.11    -> 1.12   
#
# The following is the BitKeeper ChangeSet Log
# --------------------------------------------
# 03/10/28	davem@nuts.ninka.net	1.1381
# [NET/COMPAT]: Fix copying of ipt_entry objects in do_netfilter_replace().
# 
# As noted by Georg Chini, ipt_entry object are of variable size
# so just copying individual struct ipt_entry slots around does
# not work.
# --------------------------------------------
#
diff -Nru a/net/compat.c b/net/compat.c
--- a/net/compat.c	Tue Oct 28 23:16:40 2003
+++ b/net/compat.c	Tue Oct 28 23:16:40 2003
@@ -322,7 +322,7 @@
 	u32 origsize, tmp32, num_counters;
 	unsigned int repl_nat_size;
 	int ret;
-	int i, num_ents;
+	int i;
 	compat_uptr_t ucntrs;
 
 	if (get_user(origsize, &urepl->size))
@@ -366,15 +366,10 @@
 	    __put_user(compat_ptr(ucntrs), &repl_nat->counters))
 		goto out;
 
-	num_ents = origsize / sizeof(struct ipt_entry);
-
-	for (i = 0; i < num_ents; i++) {
-		struct ipt_entry ent;
-
-		if (__copy_from_user(&ent, &urepl->entries[i], sizeof(ent)) ||
-		    __copy_to_user(&repl_nat->entries[i], &ent, sizeof(ent)))
-			goto out;
-	}
+	if (__copy_in_user(&repl_nat->entries[0],
+			   &urepl->entries[0],
+			   origsize))
+		goto out;
 
 	for (i = 0; i < NF_IP_NUMHOOKS; i++) {
 		if (__get_user(tmp32, &urepl->hook_entry[i]) ||

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: iptables+2.6-test8-bk4 : Still problems
  2003-10-29  7:13       ` David S. Miller
@ 2003-10-29 18:20         ` Ryan Veety
  2003-10-29 18:34           ` David S. Miller
  0 siblings, 1 reply; 8+ messages in thread
From: Ryan Veety @ 2003-10-29 18:20 UTC (permalink / raw)
  To: David S. Miller; +Cc: Georg Chini, rezso, sparclinux, netfilter-devel

On Tue, 28 Oct 2003, David S. Miller wrote:

>
> Ok, here is the patch I'm using to fix this, please test.
>
> Thanks again for figuring out the problem Georg.

Works here, -F flushes properly.  The only remaining netfilter issue I noticed
is limiting doesn't work on sparc64.  The following works fine on an x86
machine running 2.6.0-test9.

# iptables -A INPUT -i eth0 -p icmp -m limit --limit 10/second -j ACCEPT
iptables: Invalid argument

No biggie for me, just happened to notice it.

Ryan
     __________________________________________________________
   .'  Ryan Veety <ryan@ryanspc.com> - http://www.ryanspc.com  `.
   |          PGP Key: http://www.ryanspc.com/pgp.txt           |
    `----------------------------------------------------------'

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: iptables+2.6-test8-bk4 : Still problems
  2003-10-29 18:20         ` Ryan Veety
@ 2003-10-29 18:34           ` David S. Miller
  0 siblings, 0 replies; 8+ messages in thread
From: David S. Miller @ 2003-10-29 18:34 UTC (permalink / raw)
  To: Ryan Veety; +Cc: georg.chini, rezso, sparclinux, netfilter-devel

On Wed, 29 Oct 2003 13:20:30 -0500 (EST)
Ryan Veety <ryan@ryanspc.com> wrote:

> # iptables -A INPUT -i eth0 -p icmp -m limit --limit 10/second -j ACCEPT
> iptables: Invalid argument
> 
> No biggie for me, just happened to notice it.

I suspect it's the "unsigned long" in "struct ipt_rateinfo", we'd need
to translate these structures going in/out of netfilter :-(

There are a bunch of other iptables target modules that would need
similar translations.

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2003-10-29 18:34 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2003-10-26  8:48 iptables+2.6-test8-bk4 : Still problems Georg Chini
2003-10-26 15:52 ` Balint Cristian
2003-10-27  6:34   ` David S. Miller
2003-10-28 20:31     ` Georg Chini
2003-10-29  6:48       ` David S. Miller
2003-10-29  7:13       ` David S. Miller
2003-10-29 18:20         ` Ryan Veety
2003-10-29 18:34           ` David S. Miller

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.