Module Name: src Committed By: ozaki-r Date: Wed Jul 26 03:59:59 UTC 2017
Modified Files: src/sys/netipsec: ipsec.c key.c key.h key_debug.c Log Message: Provide and apply key_sp_refcnt (NFC) It simplifies further changes. To generate a diff of this commit: cvs rdiff -u -r1.110 -r1.111 src/sys/netipsec/ipsec.c cvs rdiff -u -r1.192 -r1.193 src/sys/netipsec/key.c cvs rdiff -u -r1.24 -r1.25 src/sys/netipsec/key.h cvs rdiff -u -r1.18 -r1.19 src/sys/netipsec/key_debug.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/netipsec/ipsec.c diff -u src/sys/netipsec/ipsec.c:1.110 src/sys/netipsec/ipsec.c:1.111 --- src/sys/netipsec/ipsec.c:1.110 Fri Jul 21 04:50:11 2017 +++ src/sys/netipsec/ipsec.c Wed Jul 26 03:59:59 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: ipsec.c,v 1.110 2017/07/21 04:50:11 ozaki-r Exp $ */ +/* $NetBSD: ipsec.c,v 1.111 2017/07/26 03:59:59 ozaki-r Exp $ */ /* $FreeBSD: /usr/local/www/cvsroot/FreeBSD/src/sys/netipsec/ipsec.c,v 1.2.2.2 2003/07/01 01:38:13 sam Exp $ */ /* $KAME: ipsec.c,v 1.103 2001/05/24 07:14:18 sakane Exp $ */ @@ -32,7 +32,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ipsec.c,v 1.110 2017/07/21 04:50:11 ozaki-r Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ipsec.c,v 1.111 2017/07/26 03:59:59 ozaki-r Exp $"); /* * IPsec controller part. @@ -256,7 +256,7 @@ ipsec_checkpcbcache(struct mbuf *m, stru KEY_SP_REF(pcbsp->sp_cache[dir].cachesp); KEYDEBUG_PRINTF(KEYDEBUG_IPSEC_STAMP, "DP cause refcnt++:%d SP:%p\n", - pcbsp->sp_cache[dir].cachesp->refcnt, + key_sp_refcnt(pcbsp->sp_cache[dir].cachesp), pcbsp->sp_cache[dir].cachesp); return pcbsp->sp_cache[dir].cachesp; } @@ -282,7 +282,7 @@ ipsec_fillpcbcache(struct inpcbpolicy *p KEY_SP_REF(pcbsp->sp_cache[dir].cachesp); KEYDEBUG_PRINTF(KEYDEBUG_IPSEC_STAMP, "DP cause refcnt++:%d SP:%p\n", - pcbsp->sp_cache[dir].cachesp->refcnt, + key_sp_refcnt(pcbsp->sp_cache[dir].cachesp), pcbsp->sp_cache[dir].cachesp); /* @@ -392,7 +392,7 @@ key_get_default_sp(int af, const char *w KEY_SP_REF(sp); KEYDEBUG_PRINTF(KEYDEBUG_IPSEC_STAMP, "DP returns SP:%p (%u)\n", - sp, sp->refcnt); + sp, key_sp_refcnt(sp)); return sp; } #define KEY_GET_DEFAULT_SP(af) \ @@ -531,7 +531,7 @@ ipsec_getpolicybysock(struct mbuf *m, u_ currsp->policy); KEYDEBUG_PRINTF(KEYDEBUG_IPSEC_STAMP, "DP (priv %u policy %u) allocates SP:%p (refcnt %u)\n", - pcbsp->priv, currsp->policy, sp, sp->refcnt); + pcbsp->priv, currsp->policy, sp, key_sp_refcnt(sp)); ipsec_fillpcbcache(pcbsp, m, sp, dir); return sp; } Index: src/sys/netipsec/key.c diff -u src/sys/netipsec/key.c:1.192 src/sys/netipsec/key.c:1.193 --- src/sys/netipsec/key.c:1.192 Wed Jul 26 01:33:35 2017 +++ src/sys/netipsec/key.c Wed Jul 26 03:59:59 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: key.c,v 1.192 2017/07/26 01:33:35 ozaki-r Exp $ */ +/* $NetBSD: key.c,v 1.193 2017/07/26 03:59:59 ozaki-r Exp $ */ /* $FreeBSD: src/sys/netipsec/key.c,v 1.3.2.3 2004/02/14 22:23:23 bms Exp $ */ /* $KAME: key.c,v 1.191 2001/06/27 10:46:49 sakane Exp $ */ @@ -32,7 +32,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: key.c,v 1.192 2017/07/26 01:33:35 ozaki-r Exp $"); +__KERNEL_RCSID(0, "$NetBSD: key.c,v 1.193 2017/07/26 03:59:59 ozaki-r Exp $"); /* * This code is referd to RFC 2367 @@ -602,6 +602,15 @@ static struct work key_timehandler_wk; REFLOG("SP_DELREF", (p), (where), (tag)); \ } while (0) +u_int +key_sp_refcnt(const struct secpolicy *sp) +{ + + if (sp == NULL) + return 0; + + return sp->refcnt; +} static inline void key_sp_dead(struct secpolicy *sp) @@ -686,7 +695,7 @@ found: KEYDEBUG_PRINTF(KEYDEBUG_IPSEC_STAMP, "DP return SP:%p (ID=%u) refcnt %u\n", - sp, sp ? sp->id : 0, sp ? sp->refcnt : 0); + sp, sp ? sp->id : 0, key_sp_refcnt(sp)); return sp; } @@ -762,7 +771,7 @@ found: done: KEYDEBUG_PRINTF(KEYDEBUG_IPSEC_STAMP, "DP return SP:%p (ID=%u) refcnt %u\n", - sp, sp ? sp->id : 0, sp ? sp->refcnt : 0); + sp, sp ? sp->id : 0, key_sp_refcnt(sp)); return sp; } @@ -1112,7 +1121,7 @@ key_sp_ref(struct secpolicy *sp, const c KEYDEBUG_PRINTF(KEYDEBUG_IPSEC_STAMP, "DP SP:%p (ID=%u) from %s:%u; refcnt now %u\n", - sp, sp->id, where, tag, sp->refcnt); + sp, sp->id, where, tag, key_sp_refcnt(sp)); } void @@ -2492,7 +2501,8 @@ key_setdumpsp(struct secpolicy *sp, u_in { struct mbuf *result = NULL, *m; - m = key_setsadbmsg(type, 0, SADB_SATYPE_UNSPEC, seq, pid, sp->refcnt); + m = key_setsadbmsg(type, 0, SADB_SATYPE_UNSPEC, seq, pid, + key_sp_refcnt(sp)); if (!m) goto fail; result = m; Index: src/sys/netipsec/key.h diff -u src/sys/netipsec/key.h:1.24 src/sys/netipsec/key.h:1.25 --- src/sys/netipsec/key.h:1.24 Fri Jul 21 04:39:08 2017 +++ src/sys/netipsec/key.h Wed Jul 26 03:59:59 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: key.h,v 1.24 2017/07/21 04:39:08 ozaki-r Exp $ */ +/* $NetBSD: key.h,v 1.25 2017/07/26 03:59:59 ozaki-r Exp $ */ /* $FreeBSD: src/sys/netipsec/key.h,v 1.1.4.1 2003/01/24 05:11:36 sam Exp $ */ /* $KAME: key.h,v 1.21 2001/07/27 03:51:30 itojun Exp $ */ @@ -56,6 +56,7 @@ struct secpolicy *key_gettunnel(const st const struct sockaddr *, const char*, int); /* NB: prepend with _ for KAME IPv6 compatbility */ void _key_freesp(struct secpolicy **, const char*, int); +u_int key_sp_refcnt(const struct secpolicy *); void key_sp_ref(struct secpolicy *, const char*, int); void key_sa_ref(struct secasvar *, const char*, int); Index: src/sys/netipsec/key_debug.c diff -u src/sys/netipsec/key_debug.c:1.18 src/sys/netipsec/key_debug.c:1.19 --- src/sys/netipsec/key_debug.c:1.18 Fri Jul 21 04:50:11 2017 +++ src/sys/netipsec/key_debug.c Wed Jul 26 03:59:59 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: key_debug.c,v 1.18 2017/07/21 04:50:11 ozaki-r Exp $ */ +/* $NetBSD: key_debug.c,v 1.19 2017/07/26 03:59:59 ozaki-r Exp $ */ /* $FreeBSD: src/sys/netipsec/key_debug.c,v 1.1.4.1 2003/01/24 05:11:36 sam Exp $ */ /* $KAME: key_debug.c,v 1.26 2001/06/27 10:46:50 sakane Exp $ */ @@ -33,7 +33,7 @@ #ifdef _KERNEL #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: key_debug.c,v 1.18 2017/07/21 04:50:11 ozaki-r Exp $"); +__KERNEL_RCSID(0, "$NetBSD: key_debug.c,v 1.19 2017/07/26 03:59:59 ozaki-r Exp $"); #endif #if defined(_KERNEL_OPT) @@ -51,6 +51,7 @@ __KERNEL_RCSID(0, "$NetBSD: key_debug.c, #include <net/route.h> +#include <netipsec/key.h> #include <netipsec/key_var.h> #include <netipsec/key_debug.h> @@ -461,7 +462,7 @@ kdebug_secpolicy(const struct secpolicy panic("kdebug_secpolicy: NULL pointer was passed"); printf("secpolicy{ refcnt=%u state=%u policy=%u\n", - sp->refcnt, sp->state, sp->policy); + key_sp_refcnt(sp), sp->state, sp->policy); kdebug_secpolicyindex(&sp->spidx);