summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKonstantin Belousov <kib@FreeBSD.org>2009-06-29 18:09:07 +0000
committerKonstantin Belousov <kib@FreeBSD.org>2009-06-29 18:09:07 +0000
commita73034ef7f044f7eedf47c87a9e788edb98a4ffa (patch)
treefc060754086b42ace6e1a107d278d695395cb463
parentca72c49f42e39ae28f2adc23af811536d4746201 (diff)
Notes
-rw-r--r--sys/kern/vfs_export.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/sys/kern/vfs_export.c b/sys/kern/vfs_export.c
index ee8a35b1b417..d898c085adb8 100644
--- a/sys/kern/vfs_export.c
+++ b/sys/kern/vfs_export.c
@@ -220,9 +220,13 @@ out:
static int
vfs_free_netcred(struct radix_node *rn, void *w)
{
- register struct radix_node_head *rnh = (struct radix_node_head *) w;
+ struct radix_node_head *rnh = (struct radix_node_head *) w;
+ struct ucred *cred;
(*rnh->rnh_deladdr) (rn->rn_key, rn->rn_mask, rnh);
+ cred = ((struct netcred *)rn)->netc_anon;
+ if (cred != NULL)
+ crfree(cred);
free(rn, M_NETADDR);
return (0);
}
@@ -233,10 +237,11 @@ vfs_free_netcred(struct radix_node *rn, void *w)
static void
vfs_free_addrlist(struct netexport *nep)
{
- register int i;
- register struct radix_node_head *rnh;
+ int i;
+ struct radix_node_head *rnh;
+ struct ucred *cred;
- for (i = 0; i <= AF_MAX; i++)
+ for (i = 0; i <= AF_MAX; i++) {
if ((rnh = nep->ne_rtable[i])) {
RADIX_NODE_HEAD_LOCK(rnh);
(*rnh->rnh_walktree) (rnh, vfs_free_netcred, rnh);
@@ -245,6 +250,11 @@ vfs_free_addrlist(struct netexport *nep)
free(rnh, M_RTABLE);
nep->ne_rtable[i] = NULL; /* not SMP safe XXX */
}
+ }
+ cred = nep->ne_defexported.netc_anon;
+ if (cred != NULL)
+ crfree(cred);
+
}
/*