I'm seeing something a bit weird, but I'm not sure why. If I expand Andrei's test script to: set -m d=$(mktemp -d /tmp/cg.XXXXXX) mkdir $d/a1 mount -t cgroup -o none,name=xxxxy xxx $d/a1 mkdir $d/a2 mount -t cgroup -o none,name=xxxxy xxx $d/a2 mkdir -p $d/a1/test umount $d/a1 umount $d/a2 d=$(mktemp -d /tmp/cg.XXXXXX) mkdir $d/a1 mount -t cgroup -o none,name=xxxxy xxx $d/a1 mkdir $d/a2 mount -t cgroup -o none,name=xxxxy xxx $d/a2 rmdir $d/a1/test umount $d/a1 umount $d/a2 then a cgroup gets leaked at the end. Just retaining the final: for i in `seq 2`; do umount $d/a$i done in place of the two final expanded umount commands fixes the issue. The mounts are getting released, but not the cgroups as far as I can tell. David