mirror of
https://github.com/opnsense/src.git
synced 2026-06-11 01:30:30 -04:00
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:
parent
ca72c49f42
commit
a73034ef7f
1 changed files with 14 additions and 4 deletions
|
|
@ -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);
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
|||
Loading…
Reference in a new issue