Message ID | 20171018203230.29871-4-k.opasiak@samsung.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Wed, Oct 18, 2017 at 10:32:29PM +0200, Krzysztof Opasiak wrote: > Add rlimit-events call to process lifecycle to ensure that > we get notified whenever process dies (to cleanup our watch > levels) or forks (to implement watch levels inheritance). > > Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com> > --- > kernel/exit.c | 4 ++++ > kernel/fork.c | 16 +++++++++++++++- > 2 files changed, 19 insertions(+), 1 deletion(-) > > diff --git a/kernel/exit.c b/kernel/exit.c > index 516acdb0e0ec..c7e435ac4428 100644 > --- a/kernel/exit.c > +++ b/kernel/exit.c > @@ -62,6 +62,7 @@ > #include <linux/kcov.h> > #include <linux/random.h> > #include <linux/rcuwait.h> > +#include <linux/rlimit_noti.h> > > #include <linux/uaccess.h> > #include <asm/unistd.h> > @@ -858,6 +859,9 @@ void __noreturn do_exit(long code) > if (group_dead) > tty_audit_exit(); > audit_free(tsk); > +#ifdef CONFIG_RLIMIT_NOTIFICATION > + rlimit_noti_task_exit(tsk); > +#endif #ifdef should not be needed in a .c file :(
On 10/19/2017 09:41 AM, Greg KH wrote: > On Wed, Oct 18, 2017 at 10:32:29PM +0200, Krzysztof Opasiak wrote: >> Add rlimit-events call to process lifecycle to ensure that >> we get notified whenever process dies (to cleanup our watch >> levels) or forks (to implement watch levels inheritance). >> >> Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com> >> --- >> kernel/exit.c | 4 ++++ >> kernel/fork.c | 16 +++++++++++++++- >> 2 files changed, 19 insertions(+), 1 deletion(-) >> >> diff --git a/kernel/exit.c b/kernel/exit.c >> index 516acdb0e0ec..c7e435ac4428 100644 >> --- a/kernel/exit.c >> +++ b/kernel/exit.c >> @@ -62,6 +62,7 @@ >> #include <linux/kcov.h> >> #include <linux/random.h> >> #include <linux/rcuwait.h> >> +#include <linux/rlimit_noti.h> >> >> #include <linux/uaccess.h> >> #include <asm/unistd.h> >> @@ -858,6 +859,9 @@ void __noreturn do_exit(long code) >> if (group_dead) >> tty_audit_exit(); >> audit_free(tsk); >> +#ifdef CONFIG_RLIMIT_NOTIFICATION >> + rlimit_noti_task_exit(tsk); >> +#endif > > #ifdef should not be needed in a .c file :( > Yeah, I should have dropped them as it's solved in header by defining this function as empty when rlimit-events are disabled. Best regards,
diff --git a/kernel/exit.c b/kernel/exit.c index 516acdb0e0ec..c7e435ac4428 100644 --- a/kernel/exit.c +++ b/kernel/exit.c @@ -62,6 +62,7 @@ #include <linux/kcov.h> #include <linux/random.h> #include <linux/rcuwait.h> +#include <linux/rlimit_noti.h> #include <linux/uaccess.h> #include <asm/unistd.h> @@ -858,6 +859,9 @@ void __noreturn do_exit(long code) if (group_dead) tty_audit_exit(); audit_free(tsk); +#ifdef CONFIG_RLIMIT_NOTIFICATION + rlimit_noti_task_exit(tsk); +#endif tsk->exit_code = code; taskstats_exit(tsk, group_dead); diff --git a/kernel/fork.c b/kernel/fork.c index a98336d154b6..3d102b116688 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -98,6 +98,8 @@ #include <trace/events/sched.h> +#include <linux/rlimit_noti.h> + #define CREATE_TRACE_POINTS #include <trace/events/task.h> @@ -1395,9 +1397,21 @@ static int copy_signal(unsigned long clone_flags, struct task_struct *tsk) #endif task_lock(current->group_leader); - memcpy(sig->rlim, current->signal->rlim, sizeof sig->rlim); + memcpy(sig->rlim, current->signal->rlim, sizeof(sig->rlim)); task_unlock(current->group_leader); +#ifdef CONFIG_RLIMIT_NOTIFICATION + { + int ret; + + ret = rlimit_noti_task_fork(current->group_leader, tsk); + if (ret) { + kmem_cache_free(signal_cachep, sig); + return ret; + } + } +#endif + posix_cpu_timers_init_group(sig); tty_audit_fork(sig);
Add rlimit-events call to process lifecycle to ensure that we get notified whenever process dies (to cleanup our watch levels) or forks (to implement watch levels inheritance). Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com> --- kernel/exit.c | 4 ++++ kernel/fork.c | 16 +++++++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-)