• Jiri Olsa's avatar
    x86/intel_rdt: Put group node in rdtgroup_kn_unlock · 49ec8f5b
    Jiri Olsa authored
    The rdtgroup_kn_unlock waits for the last user to release and put its
    node. But it's calling kernfs_put on the node which calls the
    rdtgroup_kn_unlock, which might not be the group's directory node, but
    another group's file node.
    
    This race could be easily reproduced by running 2 instances
    of following script:
    
      mount -t resctrl resctrl /sys/fs/resctrl/
      pushd /sys/fs/resctrl/
      mkdir krava
      echo "krava" > krava/schemata
      rmdir krava
      popd
      umount  /sys/fs/resctrl
    
    It triggers the slub debug error message with following command
    line config: slub_debug=,kernfs_node_cache.
    
    Call kernfs_put on the group's node to fix it.
    
    Fixes: 60cf5e10 ("x86/intel_rdt: Add mkdir to resctrl file system")
    Signed-off-by: default avatarJiri Olsa <jolsa@kernel.org>
    Cc: Fenghua Yu <fenghua.yu@intel.com>
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Mike Galbraith <efault@gmx.de>
    Cc: Shaohua Li <shli@fb.com>
    Cc: stable@vger.kernel.org
    Link: http://lkml.kernel.org/r/1489501253-20248-1-git-send-email-jolsa@kernel.orgSigned-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    49ec8f5b
intel_rdt_rdtgroup.c 25.4 KB