[Regression] 3.19-rc3 : memcg: Hang in mount memcg

From: Suzuki K. Poulose
Date: Fri Jan 09 2015 - 12:43:40 EST


Hi

We have hit a hang on ARM64 defconfig, while running LTP tests on 3.19-rc3. We are
in the process of a git bisect and will update the results as and
when we find the commit.

During the ksm ltp run, the test hangs trying to mount memcg with the following strace
output:

mount("memcg", "/dev/cgroup", "cgroup", 0, "memory") = ? ERESTARTNOINTR (To be restarted)
mount("memcg", "/dev/cgroup", "cgroup", 0, "memory") = ? ERESTARTNOINTR (To be restarted)
[ ... repeated forever ... ]

At this point, one can try mounting the memcg to verify the problem.
# mount -t cgroup -o memory memcg memcg_dir
--hangs--

Strangely, if we run the mount command from a cold boot (i.e. without running LTP first),
then it succeeds.

Upon a quick look we are hitting the following code :
kernel/cgroup.c: cgroup_mount() :

1779 for_each_subsys(ss, i) {
1780 if (!(opts.subsys_mask & (1 << i)) ||
1781 ss->root == &cgrp_dfl_root)
1782 continue;
1783
1784 if (!percpu_ref_tryget_live(&ss->root->cgrp.self.refcnt)) {
1785 mutex_unlock(&cgroup_mutex);
1786 msleep(10);
1787 ret = restart_syscall(); <=====
1788 goto out_free;
1789 }
1790 cgroup_put(&ss->root->cgrp);
1791 }

with ss->root->cgrp.self.refct.percpu_count_ptr == __PERCPU_REF_ATOMIC_DEAD

Any ideas?

Thanks
Suzuki

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/