From: Oleg Nesterov <oleg@redhat.com>
To: linux-tip-commits@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, hpa@zytor.com, mingo@redhat.com,
peterz@infradead.org, ia6432@inbox.ru, roland@redhat.com,
tglx@linutronix.de, oleg@redhat.com, mingo@elte.hu
Subject: [tip:timers/urgent] posix timers: fix RLIMIT_CPU && fork()
Date: Mon, 23 Mar 2009 19:45:57 GMT [thread overview]
Message-ID: <tip-37bebc70d7ad4144c571d74500db3bb26ec0c0eb@git.kernel.org> (raw)
In-Reply-To: <20090323193411.GA17514@redhat.com>
Commit-ID: 37bebc70d7ad4144c571d74500db3bb26ec0c0eb
Gitweb: http://git.kernel.org/tip/37bebc70d7ad4144c571d74500db3bb26ec0c0eb
Author: Oleg Nesterov <oleg@redhat.com>
AuthorDate: Mon, 23 Mar 2009 20:34:11 +0100
Committer: Ingo Molnar <mingo@elte.hu>
CommitDate: Mon, 23 Mar 2009 20:43:35 +0100
posix timers: fix RLIMIT_CPU && fork()
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>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Roland McGrath <roland@redhat.com>
Cc: <stable@kernel.org> [for 2.6.29.x]
LKML-Reference: <20090323193411.GA17514@redhat.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
---
kernel/posix-cpu-timers.c | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/kernel/posix-cpu-timers.c b/kernel/posix-cpu-timers.c
index e976e50..8e5d9a6 100644
--- a/kernel/posix-cpu-timers.c
+++ b/kernel/posix-cpu-timers.c
@@ -1370,7 +1370,8 @@ static inline int fastpath_timer_check(struct task_struct *tsk)
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:46 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 ` [PATCH, for 2.6.29] BUG 12911: fix RLIMIT_CPU && fork() Oleg Nesterov
2009-03-23 19:45 ` Oleg Nesterov [this message]
2009-03-24 18:26 ` [tip:timers/urgent] posix timers: " 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=tip-37bebc70d7ad4144c571d74500db3bb26ec0c0eb@git.kernel.org \
--to=oleg@redhat.com \
--cc=hpa@zytor.com \
--cc=ia6432@inbox.ru \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tip-commits@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=roland@redhat.com \
--cc=tglx@linutronix.de \
/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