summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoreri <eri@FreeBSD.org>2012-05-31 20:10:05 +0000
committereri <eri@FreeBSD.org>2012-05-31 20:10:05 +0000
commit61b3ae137e474caea71221a2371467f53847d918 (patch)
tree97a71a2949af970ab257e334a7b7c41b376eec1d
parentfa432bf52c72d669300168b8db7a9442b22e243d (diff)
downloadFreeBSD-src-61b3ae137e474caea71221a2371467f53847d918.zip
FreeBSD-src-61b3ae137e474caea71221a2371467f53847d918.tar.gz
Correct table counter functionality to not panic.
This was caused by not proper initialization of necessary parameters. PR: 168200 Reviewed by: bz@, glebius@ MFC after: 1 week
-rw-r--r--sys/contrib/pf/net/pf_ioctl.c4
-rw-r--r--sys/contrib/pf/net/pf_table.c1
-rw-r--r--sys/contrib/pf/net/pfvar.h2
3 files changed, 5 insertions, 2 deletions
diff --git a/sys/contrib/pf/net/pf_ioctl.c b/sys/contrib/pf/net/pf_ioctl.c
index 468f3d7..6b5d8f5 100644
--- a/sys/contrib/pf/net/pf_ioctl.c
+++ b/sys/contrib/pf/net/pf_ioctl.c
@@ -298,7 +298,7 @@ init_zone_var(void)
V_pf_altq_pl = V_pf_pooladdr_pl = NULL;
V_pf_frent_pl = V_pf_frag_pl = V_pf_cache_pl = V_pf_cent_pl = NULL;
V_pf_state_scrub_pl = NULL;
- V_pfr_ktable_pl = V_pfr_kentry_pl = NULL;
+ V_pfr_ktable_pl = V_pfr_kentry_pl = V_pfr_kcounters_pl = NULL;
}
void
@@ -317,6 +317,7 @@ cleanup_pf_zone(void)
UMA_DESTROY(V_pf_cent_pl);
UMA_DESTROY(V_pfr_ktable_pl);
UMA_DESTROY(V_pfr_kentry_pl);
+ UMA_DESTROY(V_pfr_kcounters_pl);
UMA_DESTROY(V_pf_state_scrub_pl);
UMA_DESTROY(V_pfi_addr_pl);
}
@@ -337,6 +338,7 @@ pfattach(void)
UMA_CREATE(V_pf_pooladdr_pl, struct pf_pooladdr, "pfpooladdrpl");
UMA_CREATE(V_pfr_ktable_pl, struct pfr_ktable, "pfrktable");
UMA_CREATE(V_pfr_kentry_pl, struct pfr_kentry, "pfrkentry");
+ UMA_CREATE(V_pfr_kcounters_pl, struct pfr_kcounters, "pfrkcounters");
UMA_CREATE(V_pf_frent_pl, struct pf_frent, "pffrent");
UMA_CREATE(V_pf_frag_pl, struct pf_fragment, "pffrag");
UMA_CREATE(V_pf_cache_pl, struct pf_fragment, "pffrcache");
diff --git a/sys/contrib/pf/net/pf_table.c b/sys/contrib/pf/net/pf_table.c
index 5e1f5f1..ea77e31 100644
--- a/sys/contrib/pf/net/pf_table.c
+++ b/sys/contrib/pf/net/pf_table.c
@@ -179,7 +179,6 @@ struct pfr_walktree {
VNET_DEFINE(uma_zone_t, pfr_ktable_pl);
VNET_DEFINE(uma_zone_t, pfr_kentry_pl);
VNET_DEFINE(uma_zone_t, pfr_kcounters_pl);
-#define V_pfr_kcounters_pl VNET(pfr_kcounters_pl)
VNET_DEFINE(struct sockaddr_in, pfr_sin);
#define V_pfr_sin VNET(pfr_sin)
VNET_DEFINE(struct sockaddr_in6, pfr_sin6);
diff --git a/sys/contrib/pf/net/pfvar.h b/sys/contrib/pf/net/pfvar.h
index 85fef1d..dab70c5 100644
--- a/sys/contrib/pf/net/pfvar.h
+++ b/sys/contrib/pf/net/pfvar.h
@@ -1868,6 +1868,8 @@ VNET_DECLARE(uma_zone_t, pfr_ktable_pl);
#define V_pfr_ktable_pl VNET(pfr_ktable_pl)
VNET_DECLARE(uma_zone_t, pfr_kentry_pl);
#define V_pfr_kentry_pl VNET(pfr_kentry_pl)
+VNET_DECLARE(uma_zone_t, pfr_kcounters_pl);
+#define V_pfr_kcounters_pl VNET(pfr_kcounters_pl)
VNET_DECLARE(uma_zone_t, pf_cache_pl);
#define V_pf_cache_pl VNET(pf_cache_pl)
VNET_DECLARE(uma_zone_t, pf_cent_pl);
OpenPOWER on IntegriCloud