X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=cgroup.c;h=34b61ded08d0fa5e22527012c979e31163b1b8ec;hp=ea6bbd69168d7578fcf5836f8d9267f05bc15448;hb=dc68fd2cde455260f28256ce8a29345c4061308b;hpb=b9fd788f0e8adacc33316107594e9eb0463743d7 diff --git a/cgroup.c b/cgroup.c index ea6bbd69..34b61ded 100644 --- a/cgroup.c +++ b/cgroup.c @@ -52,9 +52,22 @@ static void add_cgroup(struct thread_data *td, const char *name, { struct cgroup_member *cm; + if (!lock) + return; + cm = smalloc(sizeof(*cm)); + if (!cm) { +err: + log_err("fio: failed to allocate cgroup member\n"); + return; + } + INIT_FLIST_HEAD(&cm->list); cm->root = smalloc_strdup(name); + if (!cm->root) { + sfree(cm); + goto err; + } if (td->o.cgroup_nodelete) cm->cgroup_nodelete = 1; fio_mutex_down(lock); @@ -67,6 +80,9 @@ void cgroup_kill(struct flist_head *clist) struct flist_head *n, *tmp; struct cgroup_member *cm; + if (!lock) + return; + fio_mutex_down(lock); flist_for_each_safe(n, tmp, clist) { @@ -182,7 +198,9 @@ void cgroup_shutdown(struct thread_data *td, char **mnt) static void fio_init cgroup_init(void) { - lock = fio_mutex_init(1); + lock = fio_mutex_init(FIO_MUTEX_UNLOCKED); + if (!lock) + log_err("fio: failed to allocate cgroup lock\n"); } static void fio_exit cgroup_exit(void)