• L
    cgroup: fix umount vs cgroup_cfts_commit() race · 084457f2
    Li Zefan 提交于
    cgroup_cfts_commit() uses dget() to keep cgroup alive after cgroup_mutex
    is dropped, but dget() won't prevent cgroupfs from being umounted. When
    the race happens, vfs will see some dentries with non-zero refcnt while
    umount is in process.
    
    Keep running this:
      mount -t cgroup -o blkio xxx /cgroup
      umount /cgroup
    
    And this:
      modprobe cfq-iosched
      rmmod cfs-iosched
    
    After a while, the BUG() in shrink_dcache_for_umount_subtree() may
    be triggered:
    
      BUG: Dentry xxx{i=0,n=blkio.yyy} still in use (1) [umount of cgroup cgroup]
    Signed-off-by: NLi Zefan <lizefan@huawei.com>
    Signed-off-by: NTejun Heo <tj@kernel.org>
    Cc: stable@vger.kernel.org
    084457f2
cgroup.c 150.2 KB