diff options
Diffstat (limited to 'net')
-rw-r--r-- | net/ipv4/netfilter/ip_tables.c | 4 | ||||
-rw-r--r-- | net/ipv6/netfilter/ip6_tables.c | 4 |
2 files changed, 4 insertions, 4 deletions
diff --git a/net/ipv4/netfilter/ip_tables.c b/net/ipv4/netfilter/ip_tables.c index ff8d85d2070d..eef99a1b5de6 100644 --- a/net/ipv4/netfilter/ip_tables.c +++ b/net/ipv4/netfilter/ip_tables.c | |||
@@ -340,8 +340,8 @@ ipt_do_table(struct sk_buff **pskb, | |||
340 | back->comefrom); | 340 | back->comefrom); |
341 | continue; | 341 | continue; |
342 | } | 342 | } |
343 | if (table_base + v | 343 | if (table_base + v != (void *)e + e->next_offset |
344 | != (void *)e + e->next_offset) { | 344 | && !(e->ip.flags & IPT_F_GOTO)) { |
345 | /* Save old back ptr in next entry */ | 345 | /* Save old back ptr in next entry */ |
346 | struct ipt_entry *next | 346 | struct ipt_entry *next |
347 | = (void *)e + e->next_offset; | 347 | = (void *)e + e->next_offset; |
diff --git a/net/ipv6/netfilter/ip6_tables.c b/net/ipv6/netfilter/ip6_tables.c index 41a67cf6e33a..1cb8adb2787f 100644 --- a/net/ipv6/netfilter/ip6_tables.c +++ b/net/ipv6/netfilter/ip6_tables.c | |||
@@ -433,8 +433,8 @@ ip6t_do_table(struct sk_buff **pskb, | |||
433 | back->comefrom); | 433 | back->comefrom); |
434 | continue; | 434 | continue; |
435 | } | 435 | } |
436 | if (table_base + v | 436 | if (table_base + v != (void *)e + e->next_offset |
437 | != (void *)e + e->next_offset) { | 437 | && !(e->ipv6.flags & IP6T_F_GOTO)) { |
438 | /* Save old back ptr in next entry */ | 438 | /* Save old back ptr in next entry */ |
439 | struct ip6t_entry *next | 439 | struct ip6t_entry *next |
440 | = (void *)e + e->next_offset; | 440 | = (void *)e + e->next_offset; |