Skip to content

lua-lsm: put looked-up task after descendant walk#15

Open
chenzongyao200127 wants to merge 2 commits into
openanolis:lua-lsmfrom
chenzongyao200127:lua-lsm-a93ddfd-task-descendant-put
Open

lua-lsm: put looked-up task after descendant walk#15
chenzongyao200127 wants to merge 2 commits into
openanolis:lua-lsmfrom
chenzongyao200127:lua-lsm-a93ddfd-task-descendant-put

Conversation

@chenzongyao200127
Copy link
Copy Markdown
Collaborator

kernel_task_is_descendant() accepts either a task userdata or a pid. The pid path takes a task reference with find_get_task_by_vpid(), but the RCU walk may replace parent with parent->group_leader before the final put_task_struct().

When the pid names a non-leader thread, this leaks the looked-up task and drops a reference from the group leader without having acquired one here.

Keep the looked-up task in a separate pointer and release that reference after the walk. The group leader pointer is only used for comparison under the RCU read-side critical section.

Validation:

  • ./scripts/checkpatch.pl --git origin/lua-lsm..lua-lsm-a93ddfd-task-descendant-put
  • git diff --check origin/lua-lsm..lua-lsm-a93ddfd-task-descendant-put

Signed-off-by: Zongyao Chen ZongYao.Chen@linux.alibaba.com

* lua-lsm: validate inode_init_security xattr output
* lua-lsm: own inode_init_security xattr name storage
* lua-lsm: document OCFS2 xattr name lifetime issue

---------

Signed-off-by: Zongyao Chen <ZongYao.Chen@linux.alibaba.com>
kernel_task_is_descendant() accepts either a task userdata or a pid. The
pid path takes a task reference with find_get_task_by_vpid(), but the
RCU walk may replace parent with parent->group_leader before the final
put_task_struct().

When the pid names a non-leader thread, this leaks the looked-up task
and drops a reference from the group leader without having acquired one
here.

Keep the looked-up task in a separate pointer and release that reference
after the walk. The group leader pointer is only used for comparison
under the RCU read-side critical section.

Signed-off-by: Zongyao Chen <ZongYao.Chen@linux.alibaba.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant