Free struct ucreds allocated in vfs_hang_addrlist() when deleting

the export element.
While there, remove register storage-class specifiers.

Reported and tested by:	pho
Reviewed by:	kan
Approved by:	re (kensmith)
This commit is contained in:
Konstantin Belousov 2009-06-29 18:09:07 +00:00
parent ca72c49f42
commit a73034ef7f

View file

@ -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);
}
/*