From owner-svn-src-projects@FreeBSD.ORG Fri Aug 24 17:48:55 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A21C7106566C; Fri, 24 Aug 2012 17:48:55 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 8D7758FC12; Fri, 24 Aug 2012 17:48:55 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q7OHmtvE079159; Fri, 24 Aug 2012 17:48:55 GMT (envelope-from glebius@svn.freebsd.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q7OHmtbu079156; Fri, 24 Aug 2012 17:48:55 GMT (envelope-from glebius@svn.freebsd.org) Message-Id: <201208241748.q7OHmtbu079156@svn.freebsd.org> From: Gleb Smirnoff Date: Fri, 24 Aug 2012 17:48:55 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r239661 - projects/pf/head/sys/contrib/pf/net X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 24 Aug 2012 17:48:55 -0000 Author: glebius Date: Fri Aug 24 17:48:55 2012 New Revision: 239661 URL: http://svn.freebsd.org/changeset/base/239661 Log: Since r238421 caused so much pain, restore the UMA initialization for the key zone, but make it ctor method rather then init method. This doesn't provide any optimisation, but just reduces code duplication. Modified: projects/pf/head/sys/contrib/pf/net/if_pfsync.c projects/pf/head/sys/contrib/pf/net/pf.c Modified: projects/pf/head/sys/contrib/pf/net/if_pfsync.c ============================================================================== --- projects/pf/head/sys/contrib/pf/net/if_pfsync.c Fri Aug 24 17:48:15 2012 (r239660) +++ projects/pf/head/sys/contrib/pf/net/if_pfsync.c Fri Aug 24 17:48:55 2012 (r239661) @@ -460,23 +460,18 @@ pfsync_state_import(struct pfsync_state if ((st = uma_zalloc(V_pf_state_z, M_NOWAIT | M_ZERO)) == NULL) goto cleanup; - if ((skw = uma_zalloc(V_pf_state_key_z, M_NOWAIT | M_ZERO)) == NULL) + if ((skw = uma_zalloc(V_pf_state_key_z, M_NOWAIT)) == NULL) goto cleanup; - TAILQ_INIT(&skw->states[PF_SK_WIRE]); - TAILQ_INIT(&skw->states[PF_SK_STACK]); - if (PF_ANEQ(&sp->key[PF_SK_WIRE].addr[0], &sp->key[PF_SK_STACK].addr[0], sp->af) || PF_ANEQ(&sp->key[PF_SK_WIRE].addr[1], &sp->key[PF_SK_STACK].addr[1], sp->af) || sp->key[PF_SK_WIRE].port[0] != sp->key[PF_SK_STACK].port[0] || sp->key[PF_SK_WIRE].port[1] != sp->key[PF_SK_STACK].port[1]) { - sks = uma_zalloc(V_pf_state_key_z, M_NOWAIT | M_ZERO); + sks = uma_zalloc(V_pf_state_key_z, M_NOWAIT); if (sks == NULL) goto cleanup; - TAILQ_INIT(&sks->states[PF_SK_WIRE]); - TAILQ_INIT(&sks->states[PF_SK_STACK]); } else sks = skw; Modified: projects/pf/head/sys/contrib/pf/net/pf.c ============================================================================== --- projects/pf/head/sys/contrib/pf/net/pf.c Fri Aug 24 17:48:15 2012 (r239660) +++ projects/pf/head/sys/contrib/pf/net/pf.c Fri Aug 24 17:48:55 2012 (r239661) @@ -259,6 +259,7 @@ static void pf_detach_state(struct pf_ static int pf_state_key_attach(struct pf_state_key *, struct pf_state_key *, struct pf_state *); static void pf_state_key_detach(struct pf_state *, int); +static int pf_state_key_ctor(void *, int, void *, int); static u_int32_t pf_tcp_iss(struct pf_pdesc *); static int pf_test_rule(struct pf_rule **, struct pf_state **, int, struct pfi_kif *, struct mbuf *, int, @@ -739,7 +740,7 @@ pf_initialize() uma_zone_set_max(V_pf_state_z, PFSTATE_HIWAT); V_pf_state_key_z = uma_zcreate("pf state keys", - sizeof(struct pf_state_key), NULL, NULL, NULL, NULL, + sizeof(struct pf_state_key), pf_state_key_ctor, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); V_pf_keyhash = malloc(V_pf_hashsize * sizeof(struct pf_keyhash), M_PFHASH, M_WAITOK | M_ZERO); @@ -1042,13 +1043,25 @@ pf_state_key_detach(struct pf_state *s, } } +static int +pf_state_key_ctor(void *mem, int size, void *arg, int flags) +{ + struct pf_state_key *sk = mem; + + bzero(sk, sizeof(struct pf_state_key_cmp)); + TAILQ_INIT(&sk->states[PF_SK_WIRE]); + TAILQ_INIT(&sk->states[PF_SK_STACK]); + + return (0); +} + struct pf_state_key * pf_state_key_setup(struct pf_pdesc *pd, struct pf_addr *saddr, struct pf_addr *daddr, u_int16_t sport, u_int16_t dport) { struct pf_state_key *sk; - sk = uma_zalloc(V_pf_state_key_z, M_ZERO | M_NOWAIT); + sk = uma_zalloc(V_pf_state_key_z, M_NOWAIT); if (sk == NULL) return (NULL); @@ -1059,9 +1072,6 @@ pf_state_key_setup(struct pf_pdesc *pd, sk->proto = pd->proto; sk->af = pd->af; - TAILQ_INIT(&sk->states[PF_SK_WIRE]); - TAILQ_INIT(&sk->states[PF_SK_STACK]); - return (sk); } @@ -1076,9 +1086,6 @@ pf_state_key_clone(struct pf_state_key * bcopy(orig, sk, sizeof(struct pf_state_key_cmp)); - TAILQ_INIT(&sk->states[PF_SK_WIRE]); - TAILQ_INIT(&sk->states[PF_SK_STACK]); - return (sk); }