i=Johann Lombardi
i=Oleg Drokin
do not free groups, rather put them (since they can be reused by child threads)
struct md_identity *identity = &entry->u.identity;
if (identity->mi_ginfo) {
- groups_free(identity->mi_ginfo);
+ put_group_info(identity->mi_ginfo);
identity->mi_ginfo = NULL;
}
if (!perms) {
CERROR("failed to alloc %d permissions\n",
data->idd_nperms);
- groups_free(ginfo);
+ put_group_info(ginfo);
RETURN(-ENOMEM);
}
if (uc->mu_valid != UCRED_INIT) {
uc->mu_suppgids[0] = uc->mu_suppgids[1] = -1;
if (uc->mu_ginfo) {
- groups_free(uc->mu_ginfo);
+ put_group_info(uc->mu_ginfo);
uc->mu_ginfo = NULL;
}
if (uc->mu_identity) {
out:
if (rc) {
if (ucred->mu_ginfo) {
- groups_free(ucred->mu_ginfo);
+ put_group_info(ucred->mu_ginfo);
ucred->mu_ginfo = NULL;
}
if (ucred->mu_identity) {