Commit 4ca257ee authored by David S. Miller's avatar David S. Miller

Merge git://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf

Pablo Neira Ayuso says:

====================
Netfilter fixes for net

The following patchset contains netfilter fixes for you net tree,
they are:

1) Missing ct zone size in the nft_ct initialization path, patch
   from Florian Westphal.

2) Two patches for netfilter uapi headers, one to remove unnecessary
   sysctl.h inclusion and another to fix compilation of xt_hashlimit.h
   in userspace, from Dmitry V. Levin.

3) Patch to fix a sloppy change in nf_ct_expect that incorrectly
   simplified nf_ct_expect_related_report() in the previous nf-next
   batch. This also includes another patch for __nf_ct_expect_check()
   to report success by returning 0 to keep it consistent with other
   existing functions. From Jarno Rajahalme.

4) The ->walk() iterator of the new bitmap set type goes over the real
   bitmap size, this results in incorrect dumps when NFTA_SET_USERDATA
   is used.
====================
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents 51fb60eb 13aa5a8f
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
#include <linux/types.h> #include <linux/types.h>
#include <linux/compiler.h> #include <linux/compiler.h>
#include <linux/sysctl.h>
#include <linux/in.h> #include <linux/in.h>
#include <linux/in6.h> #include <linux/in6.h>
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
#define _UAPI_XT_HASHLIMIT_H #define _UAPI_XT_HASHLIMIT_H
#include <linux/types.h> #include <linux/types.h>
#include <linux/limits.h>
#include <linux/if.h> #include <linux/if.h>
/* timings are in milliseconds. */ /* timings are in milliseconds. */
......
...@@ -410,7 +410,7 @@ static inline int __nf_ct_expect_check(struct nf_conntrack_expect *expect) ...@@ -410,7 +410,7 @@ static inline int __nf_ct_expect_check(struct nf_conntrack_expect *expect)
struct net *net = nf_ct_exp_net(expect); struct net *net = nf_ct_exp_net(expect);
struct hlist_node *next; struct hlist_node *next;
unsigned int h; unsigned int h;
int ret = 1; int ret = 0;
if (!master_help) { if (!master_help) {
ret = -ESHUTDOWN; ret = -ESHUTDOWN;
...@@ -460,14 +460,14 @@ int nf_ct_expect_related_report(struct nf_conntrack_expect *expect, ...@@ -460,14 +460,14 @@ int nf_ct_expect_related_report(struct nf_conntrack_expect *expect,
spin_lock_bh(&nf_conntrack_expect_lock); spin_lock_bh(&nf_conntrack_expect_lock);
ret = __nf_ct_expect_check(expect); ret = __nf_ct_expect_check(expect);
if (ret <= 0) if (ret < 0)
goto out; goto out;
nf_ct_expect_insert(expect); nf_ct_expect_insert(expect);
spin_unlock_bh(&nf_conntrack_expect_lock); spin_unlock_bh(&nf_conntrack_expect_lock);
nf_ct_expect_event_report(IPEXP_NEW, expect, portid, report); nf_ct_expect_event_report(IPEXP_NEW, expect, portid, report);
return ret; return 0;
out: out:
spin_unlock_bh(&nf_conntrack_expect_lock); spin_unlock_bh(&nf_conntrack_expect_lock);
return ret; return ret;
......
...@@ -528,6 +528,7 @@ static int nft_ct_set_init(const struct nft_ctx *ctx, ...@@ -528,6 +528,7 @@ static int nft_ct_set_init(const struct nft_ctx *ctx,
if (!nft_ct_tmpl_alloc_pcpu()) if (!nft_ct_tmpl_alloc_pcpu())
return -ENOMEM; return -ENOMEM;
nft_ct_pcpu_template_refcnt++; nft_ct_pcpu_template_refcnt++;
len = sizeof(u16);
break; break;
#endif #endif
default: default:
......
...@@ -258,7 +258,7 @@ static int nft_bitmap_init(const struct nft_set *set, ...@@ -258,7 +258,7 @@ static int nft_bitmap_init(const struct nft_set *set,
{ {
struct nft_bitmap *priv = nft_set_priv(set); struct nft_bitmap *priv = nft_set_priv(set);
priv->bitmap_size = nft_bitmap_total_size(set->klen); priv->bitmap_size = nft_bitmap_size(set->klen);
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment