• Linus Torvalds's avatar
    Merge branch 'for-4.11-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup · 06ea4c38
    Linus Torvalds authored
    Pull cgroup fixes from Tejun Heo:
     "This contains fixes for two long standing subtle bugs:
    
       - kthread_bind() on a new kthread binds it to specific CPUs and
         prevents userland from messing with the affinity or cgroup
         membership. Unfortunately, for cgroup membership, there's a window
         between kthread creation and kthread_bind*() invocation where the
         kthread can be moved into a non-root cgroup by userland.
    
         Depending on what controllers are in effect, this can assign the
         kthread unexpected attributes. For example, in the reported case,
         workqueue workers ended up in a non-root cpuset cgroups and had
         their CPU affinities overridden. This broke workqueue invariants
         and led to workqueue stalls.
    
         Fixed by closing the window between kthread creation and
         kthread_bind() as suggested by Oleg.
    
       - There was a bug in cgroup mount path which could allow two
         competing mount attempts to attach the same cgroup_root to two
         different superblocks.
    
         This was caused by mishandling return value from kernfs_pin_sb().
    
         Fixed"
    
    * 'for-4.11-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup:
      cgroup: avoid attaching a cgroup root to two different superblocks
      cgroup, kthread: close race window where new kthreads can be migrated to non-root cgroups
    06ea4c38
cgroup.c 136 KB