Module Name: src
Committed By: ozaki-r
Date: Thu Aug 3 06:32:51 UTC 2017
Modified Files:
src/sys/netinet: tcp_input.c tcp_output.c
src/sys/netipsec: ipsec.c ipsec_input.c ipsec_netbsd.c ipsec_output.c
key.c key.h xform_ah.c xform_esp.c xform_ipcomp.c
Log Message:
Introduce KEY_SA_UNREF and replace KEY_FREESAV with it where sav will never be
actually freed in the future
KEY_SA_UNREF is still key_freesav so no functional change for now.
This change reduces diff of further changes.
To generate a diff of this commit:
cvs rdiff -u -r1.359 -r1.360 src/sys/netinet/tcp_input.c
cvs rdiff -u -r1.196 -r1.197 src/sys/netinet/tcp_output.c
cvs rdiff -u -r1.115 -r1.116 src/sys/netipsec/ipsec.c
cvs rdiff -u -r1.50 -r1.51 src/sys/netipsec/ipsec_input.c
cvs rdiff -u -r1.44 -r1.45 src/sys/netipsec/ipsec_netbsd.c
cvs rdiff -u -r1.57 -r1.58 src/sys/netipsec/ipsec_output.c
cvs rdiff -u -r1.205 -r1.206 src/sys/netipsec/key.c
cvs rdiff -u -r1.26 -r1.27 src/sys/netipsec/key.h
cvs rdiff -u -r1.70 -r1.71 src/sys/netipsec/xform_ah.c
cvs rdiff -u -r1.68 -r1.69 src/sys/netipsec/xform_esp.c
cvs rdiff -u -r1.49 -r1.50 src/sys/netipsec/xform_ipcomp.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/netinet/tcp_input.c
diff -u src/sys/netinet/tcp_input.c:1.359 src/sys/netinet/tcp_input.c:1.360
--- src/sys/netinet/tcp_input.c:1.359 Fri Jul 7 01:37:34 2017
+++ src/sys/netinet/tcp_input.c Thu Aug 3 06:32:51 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tcp_input.c,v 1.359 2017/07/07 01:37:34 ozaki-r Exp $ */
+/* $NetBSD: tcp_input.c,v 1.360 2017/08/03 06:32:51 ozaki-r Exp $ */
/*
* Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
@@ -148,7 +148,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: tcp_input.c,v 1.359 2017/07/07 01:37:34 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tcp_input.c,v 1.360 2017/08/03 06:32:51 ozaki-r Exp $");
#ifdef _KERNEL_OPT
#include "opt_inet.h"
@@ -3448,12 +3448,12 @@ tcp_dooptions(struct tcpcb *tp, const u_
TCP_STATINC(TCP_STAT_GOODSIG);
key_sa_recordxfer(sav, m);
- KEY_FREESAV(&sav);
+ KEY_SA_UNREF(&sav);
}
return 0;
out:
if (sav != NULL)
- KEY_FREESAV(&sav);
+ KEY_SA_UNREF(&sav);
return -1;
#endif
}
@@ -4714,7 +4714,7 @@ syn_cache_respond(struct syn_cache *sc,
if (sav) {
(void)tcp_signature(m, th, hlen, sav, sigp);
key_sa_recordxfer(sav, m);
- KEY_FREESAV(&sav);
+ KEY_SA_UNREF(&sav);
}
#endif
Index: src/sys/netinet/tcp_output.c
diff -u src/sys/netinet/tcp_output.c:1.196 src/sys/netinet/tcp_output.c:1.197
--- src/sys/netinet/tcp_output.c:1.196 Fri Jun 2 03:41:20 2017
+++ src/sys/netinet/tcp_output.c Thu Aug 3 06:32:51 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: tcp_output.c,v 1.196 2017/06/02 03:41:20 ozaki-r Exp $ */
+/* $NetBSD: tcp_output.c,v 1.197 2017/08/03 06:32:51 ozaki-r Exp $ */
/*
* Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
@@ -135,7 +135,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: tcp_output.c,v 1.196 2017/06/02 03:41:20 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tcp_output.c,v 1.197 2017/08/03 06:32:51 ozaki-r Exp $");
#ifdef _KERNEL_OPT
#include "opt_inet.h"
@@ -1505,7 +1505,7 @@ reset: TCP_REASS_UNLOCK(tp);
tcp_signature(m, th, (char *)th - mtod(m, char *), sav, sigp);
key_sa_recordxfer(sav, m);
- KEY_FREESAV(&sav);
+ KEY_SA_UNREF(&sav);
}
#endif
Index: src/sys/netipsec/ipsec.c
diff -u src/sys/netipsec/ipsec.c:1.115 src/sys/netipsec/ipsec.c:1.116
--- src/sys/netipsec/ipsec.c:1.115 Wed Aug 2 04:03:28 2017
+++ src/sys/netipsec/ipsec.c Thu Aug 3 06:32:51 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: ipsec.c,v 1.115 2017/08/02 04:03:28 ozaki-r Exp $ */
+/* $NetBSD: ipsec.c,v 1.116 2017/08/03 06:32:51 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.115 2017/08/02 04:03:28 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ipsec.c,v 1.116 2017/08/03 06:32:51 ozaki-r Exp $");
/*
* IPsec controller part.
@@ -815,7 +815,7 @@ ipsec4_forward(struct mbuf *m, int *dest
*destmtu -= ipsechdr;
}
rtcache_unref(rt, ro);
- KEY_FREESAV(&sav);
+ KEY_SA_UNREF(&sav);
}
KEY_SP_UNREF(&sp);
return 0;
@@ -1911,7 +1911,7 @@ ipsec_hdrsiz(const struct secpolicy *sp)
error = key_checkrequest(isr, &sav);
if (error == 0) {
clen = esp_hdrsiz(sav);
- KEY_FREESAV(&sav);
+ KEY_SA_UNREF(&sav);
} else
clen = esp_hdrsiz(NULL);
break;
@@ -1919,7 +1919,7 @@ ipsec_hdrsiz(const struct secpolicy *sp)
error = key_checkrequest(isr, &sav);
if (error == 0) {
clen = ah_hdrsiz(sav);
- KEY_FREESAV(&sav);
+ KEY_SA_UNREF(&sav);
} else
clen = ah_hdrsiz(NULL);
break;
Index: src/sys/netipsec/ipsec_input.c
diff -u src/sys/netipsec/ipsec_input.c:1.50 src/sys/netipsec/ipsec_input.c:1.51
--- src/sys/netipsec/ipsec_input.c:1.50 Thu Aug 3 04:42:26 2017
+++ src/sys/netipsec/ipsec_input.c Thu Aug 3 06:32:51 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: ipsec_input.c,v 1.50 2017/08/03 04:42:26 ozaki-r Exp $ */
+/* $NetBSD: ipsec_input.c,v 1.51 2017/08/03 06:32:51 ozaki-r Exp $ */
/* $FreeBSD: /usr/local/www/cvsroot/FreeBSD/src/sys/netipsec/ipsec_input.c,v 1.2.4.2 2003/03/28 20:32:53 sam Exp $ */
/* $OpenBSD: ipsec_input.c,v 1.63 2003/02/20 18:35:43 deraadt Exp $ */
@@ -39,7 +39,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ipsec_input.c,v 1.50 2017/08/03 04:42:26 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ipsec_input.c,v 1.51 2017/08/03 06:32:51 ozaki-r Exp $");
/*
* IPsec input processing.
@@ -288,7 +288,7 @@ ipsec_common_input(struct mbuf *m, int s
* everything else.
*/
error = (*sav->tdb_xform->xf_input)(m, sav, skip, protoff);
- KEY_FREESAV(&sav);
+ KEY_SA_UNREF(&sav);
splx(s);
return error;
}
Index: src/sys/netipsec/ipsec_netbsd.c
diff -u src/sys/netipsec/ipsec_netbsd.c:1.44 src/sys/netipsec/ipsec_netbsd.c:1.45
--- src/sys/netipsec/ipsec_netbsd.c:1.44 Fri Jul 7 01:37:34 2017
+++ src/sys/netipsec/ipsec_netbsd.c Thu Aug 3 06:32:51 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: ipsec_netbsd.c,v 1.44 2017/07/07 01:37:34 ozaki-r Exp $ */
+/* $NetBSD: ipsec_netbsd.c,v 1.45 2017/08/03 06:32:51 ozaki-r Exp $ */
/* $KAME: esp_input.c,v 1.60 2001/09/04 08:43:19 itojun Exp $ */
/* $KAME: ah_input.c,v 1.64 2001/09/04 08:43:19 itojun Exp $ */
@@ -32,7 +32,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ipsec_netbsd.c,v 1.44 2017/07/07 01:37:34 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ipsec_netbsd.c,v 1.45 2017/08/03 06:32:51 ozaki-r Exp $");
#if defined(_KERNEL_OPT)
#include "opt_inet.h"
@@ -123,7 +123,7 @@ ah4_ctlinput(int cmd, const struct socka
offsetof(struct icmp, icmp_ip));
icmp_mtudisc(icp, ip->ip_dst);
}
- KEY_FREESAV(&sav);
+ KEY_SA_UNREF(&sav);
}
}
return NULL;
@@ -168,7 +168,7 @@ esp4_ctlinput(int cmd, const struct sock
offsetof(struct icmp, icmp_ip));
icmp_mtudisc(icp, ip->ip_dst);
}
- KEY_FREESAV(&sav);
+ KEY_SA_UNREF(&sav);
}
}
return NULL;
@@ -237,7 +237,7 @@ ah6_ctlinput(int cmd, const struct socka
if (sav) {
if (SADB_SASTATE_USABLE_P(sav))
valid++;
- KEY_FREESAV(&sav);
+ KEY_SA_UNREF(&sav);
}
/* XXX Further validation? */
@@ -342,7 +342,7 @@ esp6_ctlinput(int cmd, const struct sock
if (sav) {
if (SADB_SASTATE_USABLE_P(sav))
valid++;
- KEY_FREESAV(&sav);
+ KEY_SA_UNREF(&sav);
}
/* XXX Further validation? */
Index: src/sys/netipsec/ipsec_output.c
diff -u src/sys/netipsec/ipsec_output.c:1.57 src/sys/netipsec/ipsec_output.c:1.58
--- src/sys/netipsec/ipsec_output.c:1.57 Thu Jul 27 06:59:28 2017
+++ src/sys/netipsec/ipsec_output.c Thu Aug 3 06:32:51 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: ipsec_output.c,v 1.57 2017/07/27 06:59:28 ozaki-r Exp $ */
+/* $NetBSD: ipsec_output.c,v 1.58 2017/08/03 06:32:51 ozaki-r Exp $ */
/*-
* Copyright (c) 2002, 2003 Sam Leffler, Errno Consulting
@@ -29,7 +29,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ipsec_output.c,v 1.57 2017/07/27 06:59:28 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ipsec_output.c,v 1.58 2017/08/03 06:32:51 ozaki-r Exp $");
/*
* IPsec output processing.
@@ -428,7 +428,7 @@ again:
" to policy (check your sysctls)\n");
IPSEC_OSTAT(PDROPS);
*error = EHOSTUNREACH;
- KEY_FREESAV(&sav);
+ KEY_SA_UNREF(&sav);
goto bad;
}
@@ -491,7 +491,7 @@ ipsec4_process_packet(struct mbuf *m, st
if (ntohs(ip->ip_len) <= sav->esp_frag)
goto noneed;
*mtu = sav->esp_frag;
- KEY_FREESAV(&sav);
+ KEY_SA_UNREF(&sav);
splx(s);
return 0;
}
@@ -605,11 +605,11 @@ noneed:
} else {
error = ipsec_process_done(m, isr, sav);
}
- KEY_FREESAV(&sav);
+ KEY_SA_UNREF(&sav);
splx(s);
return error;
unrefsav:
- KEY_FREESAV(&sav);
+ KEY_SA_UNREF(&sav);
bad:
splx(s);
if (m)
@@ -791,11 +791,11 @@ ipsec6_process_packet(
compute_ipsec_pos(m, &i, &off);
}
error = (*sav->tdb_xform->xf_output)(m, isr, sav, NULL, i, off);
- KEY_FREESAV(&sav);
+ KEY_SA_UNREF(&sav);
splx(s);
return error;
unrefsav:
- KEY_FREESAV(&sav);
+ KEY_SA_UNREF(&sav);
bad:
splx(s);
if (m)
Index: src/sys/netipsec/key.c
diff -u src/sys/netipsec/key.c:1.205 src/sys/netipsec/key.c:1.206
--- src/sys/netipsec/key.c:1.205 Thu Aug 3 06:31:58 2017
+++ src/sys/netipsec/key.c Thu Aug 3 06:32:51 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: key.c,v 1.205 2017/08/03 06:31:58 ozaki-r Exp $ */
+/* $NetBSD: key.c,v 1.206 2017/08/03 06:32:51 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.205 2017/08/03 06:31:58 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: key.c,v 1.206 2017/08/03 06:32:51 ozaki-r Exp $");
/*
* This code is referd to RFC 2367
@@ -3147,7 +3147,7 @@ key_checkspidup(const struct secasindex
continue;
sav = key_getsavbyspi(sah, spi);
if (sav != NULL) {
- KEY_FREESAV(&sav);
+ KEY_SA_UNREF(&sav);
return true;
}
}
@@ -5439,7 +5439,7 @@ key_api_update(struct socket *so, struct
return key_sendup_mbuf(so, n, KEY_SENDUP_ALL);
}
error:
- KEY_FREESAV(&sav);
+ KEY_SA_UNREF(&sav);
return key_senderror(so, m, error);
}
@@ -5580,7 +5580,7 @@ key_api_add(struct socket *so, struct mb
/* We can create new SA only if SPI is differenct. */
sav = key_getsavbyspi(sah, sa0->sadb_sa_spi);
if (sav != NULL) {
- KEY_FREESAV(&sav);
+ KEY_SA_UNREF(&sav);
IPSECLOG(LOG_DEBUG, "SA already exists.\n");
return key_senderror(so, m, EEXIST);
}
@@ -5987,7 +5987,7 @@ key_api_get(struct socket *so, struct mb
/* map proto to satype */
satype = key_proto2satype(sah->saidx.proto);
if (satype == 0) {
- KEY_FREESAV(&sav);
+ KEY_SA_UNREF(&sav);
IPSECLOG(LOG_DEBUG, "there was invalid proto in SAD.\n");
return key_senderror(so, m, EINVAL);
}
@@ -5995,7 +5995,7 @@ key_api_get(struct socket *so, struct mb
/* create new sadb_msg to reply. */
n = key_setdumpsa(sav, SADB_GET, satype, mhp->msg->sadb_msg_seq,
mhp->msg->sadb_msg_pid);
- KEY_FREESAV(&sav);
+ KEY_SA_UNREF(&sav);
if (!n)
return key_senderror(so, m, ENOBUFS);
Index: src/sys/netipsec/key.h
diff -u src/sys/netipsec/key.h:1.26 src/sys/netipsec/key.h:1.27
--- src/sys/netipsec/key.h:1.26 Wed Aug 2 01:28:03 2017
+++ src/sys/netipsec/key.h Thu Aug 3 06:32:51 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: key.h,v 1.26 2017/08/02 01:28:03 ozaki-r Exp $ */
+/* $NetBSD: key.h,v 1.27 2017/08/03 06:32:51 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 $ */
@@ -83,6 +83,8 @@ void key_socksplist_add(struct secpolicy
key_sp_ref(sp, __func__, __LINE__)
#define KEY_SA_REF(sav) \
key_sa_ref(sav, __func__, __LINE__)
+#define KEY_SA_UNREF(psav) \
+ key_freesav(psav, __func__, __LINE__)
struct secasvar *key_lookup_sa(const union sockaddr_union *,
u_int, u_int32_t, u_int16_t, u_int16_t, const char*, int);
Index: src/sys/netipsec/xform_ah.c
diff -u src/sys/netipsec/xform_ah.c:1.70 src/sys/netipsec/xform_ah.c:1.71
--- src/sys/netipsec/xform_ah.c:1.70 Wed Aug 2 01:28:03 2017
+++ src/sys/netipsec/xform_ah.c Thu Aug 3 06:32:51 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: xform_ah.c,v 1.70 2017/08/02 01:28:03 ozaki-r Exp $ */
+/* $NetBSD: xform_ah.c,v 1.71 2017/08/03 06:32:51 ozaki-r Exp $ */
/* $FreeBSD: src/sys/netipsec/xform_ah.c,v 1.1.4.1 2003/01/24 05:11:36 sam Exp $ */
/* $OpenBSD: ip_ah.c,v 1.63 2001/06/26 06:18:58 angelos Exp $ */
/*
@@ -39,7 +39,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: xform_ah.c,v 1.70 2017/08/02 01:28:03 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: xform_ah.c,v 1.71 2017/08/03 06:32:51 ozaki-r Exp $");
#if defined(_KERNEL_OPT)
#include "opt_inet.h"
@@ -817,7 +817,7 @@ ah_input_cb(struct cryptop *crp)
sav = tc->tc_sav;
if (__predict_false(!SADB_SASTATE_USABLE_P(sav))) {
- KEY_FREESAV(&sav);
+ KEY_SA_UNREF(&sav);
sav = KEY_LOOKUP_SA(&tc->tc_dst, tc->tc_proto, tc->tc_spi,
sport, dport);
if (sav == NULL) {
@@ -932,12 +932,12 @@ ah_input_cb(struct cryptop *crp)
IPSEC_COMMON_INPUT_CB(m, sav, skip, protoff);
- KEY_FREESAV(&sav);
+ KEY_SA_UNREF(&sav);
IPSEC_RELEASE_GLOBAL_LOCKS();
return error;
bad:
if (sav)
- KEY_FREESAV(&sav);
+ KEY_SA_UNREF(&sav);
IPSEC_RELEASE_GLOBAL_LOCKS();
if (m != NULL)
m_freem(m);
@@ -1215,7 +1215,7 @@ ah_output_cb(struct cryptop *crp)
goto bad;
}
if (__predict_false(!SADB_SASTATE_USABLE_P(sav))) {
- KEY_FREESAV(&sav);
+ KEY_SA_UNREF(&sav);
sav = KEY_LOOKUP_SA(&tc->tc_dst, tc->tc_proto, tc->tc_spi, 0, 0);
if (sav == NULL) {
AH_STATINC(AH_STAT_NOTDB);
@@ -1269,13 +1269,13 @@ ah_output_cb(struct cryptop *crp)
/* NB: m is reclaimed by ipsec_process_done. */
err = ipsec_process_done(m, isr, sav);
- KEY_FREESAV(&sav);
+ KEY_SA_UNREF(&sav);
KEY_SP_UNREF(&isr->sp);
IPSEC_RELEASE_GLOBAL_LOCKS();
return err;
bad:
if (sav)
- KEY_FREESAV(&sav);
+ KEY_SA_UNREF(&sav);
KEY_SP_UNREF(&isr->sp);
IPSEC_RELEASE_GLOBAL_LOCKS();
if (m)
Index: src/sys/netipsec/xform_esp.c
diff -u src/sys/netipsec/xform_esp.c:1.68 src/sys/netipsec/xform_esp.c:1.69
--- src/sys/netipsec/xform_esp.c:1.68 Wed Aug 2 01:28:03 2017
+++ src/sys/netipsec/xform_esp.c Thu Aug 3 06:32:51 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: xform_esp.c,v 1.68 2017/08/02 01:28:03 ozaki-r Exp $ */
+/* $NetBSD: xform_esp.c,v 1.69 2017/08/03 06:32:51 ozaki-r Exp $ */
/* $FreeBSD: src/sys/netipsec/xform_esp.c,v 1.2.2.1 2003/01/24 05:11:36 sam Exp $ */
/* $OpenBSD: ip_esp.c,v 1.69 2001/06/26 06:18:59 angelos Exp $ */
@@ -39,7 +39,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: xform_esp.c,v 1.68 2017/08/02 01:28:03 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: xform_esp.c,v 1.69 2017/08/03 06:32:51 ozaki-r Exp $");
#if defined(_KERNEL_OPT)
#include "opt_inet.h"
@@ -521,7 +521,7 @@ esp_input_cb(struct cryptop *crp)
sav = tc->tc_sav;
if (__predict_false(!SADB_SASTATE_USABLE_P(sav))) {
- KEY_FREESAV(&sav);
+ KEY_SA_UNREF(&sav);
sav = KEY_LOOKUP_SA(&tc->tc_dst, tc->tc_proto, tc->tc_spi,
sport, dport);
if (sav == NULL) {
@@ -549,7 +549,7 @@ esp_input_cb(struct cryptop *crp)
sav->tdb_cryptoid = crp->crp_sid;
if (crp->crp_etype == EAGAIN) {
- KEY_FREESAV(&sav);
+ KEY_SA_UNREF(&sav);
IPSEC_RELEASE_GLOBAL_LOCKS();
return crypto_dispatch(crp);
}
@@ -673,12 +673,12 @@ esp_input_cb(struct cryptop *crp)
IPSEC_COMMON_INPUT_CB(m, sav, skip, protoff);
- KEY_FREESAV(&sav);
+ KEY_SA_UNREF(&sav);
IPSEC_RELEASE_GLOBAL_LOCKS();
return error;
bad:
if (sav)
- KEY_FREESAV(&sav);
+ KEY_SA_UNREF(&sav);
IPSEC_RELEASE_GLOBAL_LOCKS();
if (m != NULL)
m_freem(m);
@@ -987,7 +987,7 @@ esp_output_cb(struct cryptop *crp)
goto bad;
}
if (__predict_false(!SADB_SASTATE_USABLE_P(sav))) {
- KEY_FREESAV(&sav);
+ KEY_SA_UNREF(&sav);
sav = KEY_LOOKUP_SA(&tc->tc_dst, tc->tc_proto, tc->tc_spi, 0, 0);
if (sav == NULL) {
char buf[IPSEC_ADDRSTRLEN];
@@ -1046,13 +1046,13 @@ esp_output_cb(struct cryptop *crp)
/* NB: m is reclaimed by ipsec_process_done. */
err = ipsec_process_done(m, isr, sav);
- KEY_FREESAV(&sav);
+ KEY_SA_UNREF(&sav);
KEY_SP_UNREF(&isr->sp);
IPSEC_RELEASE_GLOBAL_LOCKS();
return err;
bad:
if (sav)
- KEY_FREESAV(&sav);
+ KEY_SA_UNREF(&sav);
KEY_SP_UNREF(&isr->sp);
IPSEC_RELEASE_GLOBAL_LOCKS();
if (m)
Index: src/sys/netipsec/xform_ipcomp.c
diff -u src/sys/netipsec/xform_ipcomp.c:1.49 src/sys/netipsec/xform_ipcomp.c:1.50
--- src/sys/netipsec/xform_ipcomp.c:1.49 Wed Aug 2 01:28:03 2017
+++ src/sys/netipsec/xform_ipcomp.c Thu Aug 3 06:32:51 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: xform_ipcomp.c,v 1.49 2017/08/02 01:28:03 ozaki-r Exp $ */
+/* $NetBSD: xform_ipcomp.c,v 1.50 2017/08/03 06:32:51 ozaki-r Exp $ */
/* $FreeBSD: src/sys/netipsec/xform_ipcomp.c,v 1.1.4.1 2003/01/24 05:11:36 sam Exp $ */
/* $OpenBSD: ip_ipcomp.c,v 1.1 2001/07/05 12:08:52 jjbg Exp $ */
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: xform_ipcomp.c,v 1.49 2017/08/02 01:28:03 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: xform_ipcomp.c,v 1.50 2017/08/03 06:32:51 ozaki-r Exp $");
/* IP payload compression protocol (IPComp), see RFC 2393 */
#if defined(_KERNEL_OPT)
@@ -259,7 +259,7 @@ ipcomp_input_cb(struct cryptop *crp)
sav = tc->tc_sav;
if (__predict_false(!SADB_SASTATE_USABLE_P(sav))) {
- KEY_FREESAV(&sav);
+ KEY_SA_UNREF(&sav);
sav = KEY_LOOKUP_SA(&tc->tc_dst, tc->tc_proto, tc->tc_spi,
sport, dport);
if (sav == NULL) {
@@ -282,7 +282,7 @@ ipcomp_input_cb(struct cryptop *crp)
sav->tdb_cryptoid = crp->crp_sid;
if (crp->crp_etype == EAGAIN) {
- KEY_FREESAV(&sav);
+ KEY_SA_UNREF(&sav);
IPSEC_RELEASE_GLOBAL_LOCKS();
return crypto_dispatch(crp);
}
@@ -348,12 +348,12 @@ ipcomp_input_cb(struct cryptop *crp)
IPSEC_COMMON_INPUT_CB(m, sav, skip, protoff);
- KEY_FREESAV(&sav);
+ KEY_SA_UNREF(&sav);
IPSEC_RELEASE_GLOBAL_LOCKS();
return error;
bad:
if (sav)
- KEY_FREESAV(&sav);
+ KEY_SA_UNREF(&sav);
IPSEC_RELEASE_GLOBAL_LOCKS();
if (m)
m_freem(m);
@@ -555,7 +555,7 @@ ipcomp_output_cb(struct cryptop *crp)
goto bad;
}
if (__predict_false(!SADB_SASTATE_USABLE_P(sav))) {
- KEY_FREESAV(&sav);
+ KEY_SA_UNREF(&sav);
sav = KEY_LOOKUP_SA(&tc->tc_dst, tc->tc_proto, tc->tc_spi, 0, 0);
if (sav == NULL) {
IPCOMP_STATINC(IPCOMP_STAT_NOTDB);
@@ -660,13 +660,13 @@ ipcomp_output_cb(struct cryptop *crp)
/* NB: m is reclaimed by ipsec_process_done. */
error = ipsec_process_done(m, isr, sav);
- KEY_FREESAV(&sav);
+ KEY_SA_UNREF(&sav);
KEY_SP_UNREF(&isr->sp);
IPSEC_RELEASE_GLOBAL_LOCKS();
return error;
bad:
if (sav)
- KEY_FREESAV(&sav);
+ KEY_SA_UNREF(&sav);
KEY_SP_UNREF(&isr->sp);
IPSEC_RELEASE_GLOBAL_LOCKS();
if (m)