Messages in this thread Patch in this message | | | Date | Wed, 08 Dec 2021 13:09:11 -0300 | From | Marcelo Tosatti <> | Subject | [patch v8 05/10] task isolation: add hook to task exit |
| |
Add task isolation specific hook to task exit routines.
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
--- include/linux/task_isolation.h | 11 +++++++++++ kernel/exit.c | 2 ++ kernel/fork.c | 1 + kernel/task_isolation.c | 4 ++++ 4 files changed, 18 insertions(+)
Index: linux-2.6/kernel/exit.c =================================================================== --- linux-2.6.orig/kernel/exit.c +++ linux-2.6/kernel/exit.c @@ -64,6 +64,7 @@ #include <linux/compat.h> #include <linux/io_uring.h> #include <linux/kprobes.h> +#include <linux/task_isolation.h> #include <linux/uaccess.h> #include <asm/unistd.h> @@ -785,6 +786,7 @@ void __noreturn do_exit(long code) } io_uring_files_cancel(); + tsk_isol_exit(tsk); exit_signals(tsk); /* sets PF_EXITING */ /* sync mm's RSS info before statistics gathering */ Index: linux-2.6/kernel/fork.c =================================================================== --- linux-2.6.orig/kernel/fork.c +++ linux-2.6/kernel/fork.c @@ -2444,6 +2444,7 @@ bad_fork_free_pid: if (pid != &init_struct_pid) free_pid(pid); bad_fork_cleanup_task_isolation: + tsk_isol_exit(p); tsk_isol_free(p); bad_fork_cleanup_thread: exit_thread(p); Index: linux-2.6/kernel/task_isolation.c =================================================================== --- linux-2.6.orig/kernel/task_isolation.c +++ linux-2.6/kernel/task_isolation.c @@ -21,6 +21,10 @@ #include <linux/mm.h> #include <linux/vmstat.h> +void __tsk_isol_exit(struct task_struct *tsk) +{ +} + void __tsk_isol_free(struct task_struct *tsk) { if (!tsk->isol_info) Index: linux-2.6/include/linux/task_isolation.h =================================================================== --- linux-2.6.orig/include/linux/task_isolation.h +++ linux-2.6/include/linux/task_isolation.h @@ -27,6 +27,13 @@ static inline void tsk_isol_free(struct __tsk_isol_free(tsk); } +void __tsk_isol_exit(struct task_struct *tsk); +static inline void tsk_isol_exit(struct task_struct *tsk) +{ + if (tsk->isol_info) + __tsk_isol_exit(tsk); +} + int prctl_task_isolation_feat_get(unsigned long arg2, unsigned long arg3, unsigned long arg4, unsigned long arg5); int prctl_task_isolation_cfg_get(unsigned long arg2, unsigned long arg3, @@ -57,6 +64,10 @@ static inline void tsk_isol_free(struct { } +static inline void tsk_isol_exit(struct task_struct *tsk) +{ +} + static inline int prctl_task_isolation_feat_get(unsigned long arg2, unsigned long arg3, unsigned long arg4,
| |