• T
    cgroup: fix cftype->file_offset handling · 34c06254
    Tejun Heo 提交于
    6f60eade ("cgroup: generalize obtaining the handles of and
    notifying cgroup files") introduced cftype->file_offset so that the
    handles for per-css file instances can be recorded.  These handles
    then can be used, for example, to generate file modified
    notifications.
    
    Unfortunately, it made the wrong assumption that files are created
    once for a given css and removed on its destruction.  Due to the
    dependencies among subsystems, a css may be hidden from userland and
    then later shown again.  This is implemented by removing and
    re-creating the affected files, so the associated kernfs_node for a
    given cgroup file may change over time.  This incorrect assumption led
    to the corruption of css->files lists.
    
    Reimplement cftype->file_offset handling so that cgroup_file->kn is
    protected by a lock and updated as files are created and destroyed.
    This also makes keeping them on per-cgroup list unnecessary.
    Signed-off-by: NTejun Heo <tj@kernel.org>
    Reported-by: NJames Sedgwick <jsedgwick@fb.com>
    Fixes: 6f60eade ("cgroup: generalize obtaining the handles of and notifying cgroup files")
    Acked-by: NJohannes Weiner <hannes@cmpxchg.org>
    Acked-by: NZefan Li <lizefan@huawei.com>
    34c06254
cgroup-defs.h 15.9 KB