From: Oleg Nesterov <oleg@redhat.com>
To: Ingo Molnar <mingo@elte.hu>
Cc: Peter Lojkin <ia6432@inbox.ru>,
linux-kernel@vger.kernel.org, stable@kernel.org,
Peter Zijlstra <peterz@infradead.org>,
rjw@sisk.pl, Roland McGrath <roland@redhat.com>
Subject: [PATCH, for 2.6.29] BUG 12911: fix RLIMIT_CPU && fork()
Date: Mon, 23 Mar 2009 20:34:11 +0100 [thread overview]
Message-ID: <20090323193411.GA17514@redhat.com> (raw)
In-Reply-To: <20090323164341.GA1304@elte.hu>
See http://bugzilla.kernel.org/show_bug.cgi?id=12911
copy_signal() copies signal->rlim, but RLIMIT_CPU is "lost". Because
posix_cpu_timers_init_group() sets cputime_expires.prof_exp = 0 and thus
fastpath_timer_check() returns false unless we have other cpu timers.
This is the minimal fix for 2.6.29 (tested) and 2.6.28. The patch is not
optimal, we need further cleanups here. With this patch update_rlimit_cpu()
is not really needed, but I don't think it should be removed.
The proper fix (I think) is:
- set_process_cpu_timer() should just start the cputimer->running
logic (it does), no need to change cputime_expires.xxx_exp
- posix_cpu_timers_init_group() should set ->running when needed
- fastpath_timer_check() can check ->running instead of
task_cputime_zero(signal->cputime_expires)
Reported-by: Peter Lojkin <ia6432@inbox.ru>
Signed-off-by: Oleg Nesterov <oleg@redhat.com>
--- a/kernel/posix-cpu-timers.c
+++ b/kernel/posix-cpu-timers.c
@@ -1370,7 +1370,8 @@ static inline int fastpath_timer_check(s
if (task_cputime_expired(&group_sample, &sig->cputime_expires))
return 1;
}
- return 0;
+
+ return sig->rlim[RLIMIT_CPU].rlim_cur != RLIM_INFINITY;
}
/*
next prev parent reply other threads:[~2009-03-23 19:39 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-03-19 18:34 2.6.28, limiting cpu time doesn't work Peter Lojkin
2009-03-22 20:14 ` Oleg Nesterov
2009-03-22 22:08 ` Peter Lojkin
2009-03-22 23:11 ` Oleg Nesterov
2009-03-23 16:43 ` Ingo Molnar
2009-03-23 19:34 ` Oleg Nesterov [this message]
2009-03-23 19:45 ` [tip:timers/urgent] posix timers: fix RLIMIT_CPU && fork() Oleg Nesterov
2009-03-24 18:26 ` Oleg Nesterov
2009-03-24 21:05 ` Ingo Molnar
2009-03-24 21:34 ` Oleg Nesterov
2009-03-24 2:43 ` 2.6.28, limiting cpu time doesn't work Peter Lojkin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20090323193411.GA17514@redhat.com \
--to=oleg@redhat.com \
--cc=ia6432@inbox.ru \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=peterz@infradead.org \
--cc=rjw@sisk.pl \
--cc=roland@redhat.com \
--cc=stable@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox