devfs: Avoid a malloc/free if we just need to increment the refcount

MFC after:	1 week
Sponsored by:	Gandi.net
This commit is contained in:
manu 2017-11-30 12:38:42 +00:00
parent 410d6f52ca
commit cbfe9423a0

View File

@ -98,19 +98,18 @@ devfs_dir_ref(const char *dir)
if (*dir == '\0')
return;
dle_new = malloc(sizeof(*dle), M_DEVFS4, M_WAITOK);
dle_new->dir = strdup(dir, M_DEVFS4);
dle_new->refcnt = 1;
mtx_lock(&dirlist_mtx);
dle = devfs_dir_findent_locked(dir);
if (dle != NULL) {
dle->refcnt++;
mtx_unlock(&dirlist_mtx);
free(dle_new->dir, M_DEVFS4);
free(dle_new, M_DEVFS4);
return;
}
dle_new = malloc(sizeof(*dle), M_DEVFS4, M_WAITOK);
dle_new->dir = strdup(dir, M_DEVFS4);
dle_new->refcnt = 1;
LIST_INSERT_HEAD(&devfs_dirlist, dle_new, link);
mtx_unlock(&dirlist_mtx);
}