• Tejun Heo's avatar
    cgroup: fix cgroup_subsys_state leak for seq_files · e605b365
    Tejun Heo authored
    If a cgroup file implements either read_map() or read_seq_string(),
    such file is served using seq_file by overriding file->f_op to
    cgroup_seqfile_operations, which also overrides the release method to
    single_release() from cgroup_file_release().
    
    Because cgroup_file_open() didn't use to acquire any resources, this
    used to be fine, but since f7d58818 ("cgroup: pin
    cgroup_subsys_state when opening a cgroupfs file"), cgroup_file_open()
    pins the css (cgroup_subsys_state) which is put by
    cgroup_file_release().  The patch forgot to update the release path
    for seq_files and each open/release cycle leaks a css reference.
    
    Fix it by updating cgroup_file_release() to also handle seq_files and
    using it for seq_file release path too.
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Cc: stable@vger.kernel.org # v3.12
    e605b365
cgroup.c 153 KB