From owner-svn-src-projects@FreeBSD.ORG Wed Mar 7 18:13:34 2012 Return-Path: <owner-svn-src-projects@FreeBSD.ORG> Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 0C971106566C; Wed, 7 Mar 2012 18:13:34 +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 D726D8FC14; Wed, 7 Mar 2012 18:13:33 +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 q27IDXui004508; Wed, 7 Mar 2012 18:13:33 GMT (envelope-from glebius@svn.freebsd.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q27IDX3w004506; Wed, 7 Mar 2012 18:13:33 GMT (envelope-from glebius@svn.freebsd.org) Message-Id: <201203071813.q27IDX3w004506@svn.freebsd.org> From: Gleb Smirnoff <glebius@FreeBSD.org> Date: Wed, 7 Mar 2012 18:13:33 +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: r232662 - 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" <svn-src-projects.freebsd.org> List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, <mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe> List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects> List-Post: <mailto:svn-src-projects@freebsd.org> List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help> List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, <mailto:svn-src-projects-request@freebsd.org?subject=subscribe> X-List-Received-Date: Wed, 07 Mar 2012 18:13:34 -0000 Author: glebius Date: Wed Mar 7 18:13:33 2012 New Revision: 232662 URL: http://svn.freebsd.org/changeset/base/232662 Log: Couple of catchups in pfsync with recent changes to pf: - Don't use M_ZERO for pf_state_key allocations. - Embrace pf_unlink_state() with PF_KEY_LOCK(). Modified: projects/pf/head/sys/contrib/pf/net/if_pfsync.c Modified: projects/pf/head/sys/contrib/pf/net/if_pfsync.c ============================================================================== --- projects/pf/head/sys/contrib/pf/net/if_pfsync.c Wed Mar 7 18:11:12 2012 (r232661) +++ projects/pf/head/sys/contrib/pf/net/if_pfsync.c Wed Mar 7 18:13:33 2012 (r232662) @@ -441,7 +441,6 @@ pfsync_state_import(struct pfsync_state struct pf_state_key *skw = NULL, *sks = NULL; struct pf_rule *r = NULL; struct pfi_kif *kif; - int pool_flags; int error; PF_LOCK_ASSERT(); @@ -476,15 +475,13 @@ pfsync_state_import(struct pfsync_state if ((r->max_states && r->states_cur >= r->max_states)) goto cleanup; - if (flags & PFSYNC_SI_IOCTL) - pool_flags = M_WAITOK | M_ZERO; - else - pool_flags = M_NOWAIT | M_ZERO; - - if ((st = uma_zalloc(V_pf_state_z, pool_flags)) == NULL) + /* + * XXXGL: consider M_WAITOK in ioctl path after. + */ + if ((st = uma_zalloc(V_pf_state_z, M_NOWAIT | M_ZERO)) == NULL) goto cleanup; - if ((skw = uma_zalloc(V_pf_state_key_z, pool_flags)) == NULL) + if ((skw = uma_zalloc(V_pf_state_key_z, M_NOWAIT)) == NULL) goto cleanup; if (PF_ANEQ(&sp->key[PF_SK_WIRE].addr[0], @@ -493,7 +490,7 @@ pfsync_state_import(struct pfsync_state &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]) { - if ((sks = uma_zalloc(V_pf_state_key_z, pool_flags)) == NULL) + if ((sks = uma_zalloc(V_pf_state_key_z, M_NOWAIT)) == NULL) goto cleanup; } else sks = skw; @@ -1130,7 +1127,9 @@ pfsync_in_del_c(struct pfsync_pkt *pkt, } SET(st->state_flags, PFSTATE_NOSYNC); + PF_KEYS_LOCK(); pf_unlink_state(st, 0); + PF_KEYS_UNLOCK(); } PF_UNLOCK();