From 4b678e04930d6248327ab59cfa63e69a2261627a Mon Sep 17 00:00:00 2001 From: Andrew Morton Date: Fri, 24 Mar 2006 03:18:35 -0800 Subject: [PATCH] --- yaml --- r: 23468 b: refs/heads/master c: e0661111e5441995f7a69dc4336c9f131cb9bc58 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/kernel/sys.c | 13 ++++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index a152db046615..107081a4aa07 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: ec9e16bacdba1da1ee15dd162384e22df5c87e09 +refs/heads/master: e0661111e5441995f7a69dc4336c9f131cb9bc58 diff --git a/trunk/kernel/sys.c b/trunk/kernel/sys.c index 9bdf94f3ae29..9e157e0240d4 100644 --- a/trunk/kernel/sys.c +++ b/trunk/kernel/sys.c @@ -1661,8 +1661,19 @@ asmlinkage long sys_setrlimit(unsigned int resource, struct rlimit __user *rlim) it_prof_secs = cputime_to_secs(current->signal->it_prof_expires); if (it_prof_secs == 0 || new_rlim.rlim_cur <= it_prof_secs) { - cputime_t cputime = secs_to_cputime(new_rlim.rlim_cur); + unsigned long rlim_cur = new_rlim.rlim_cur; + cputime_t cputime; + if (rlim_cur == 0) { + /* + * The caller is asking for an immediate RLIMIT_CPU + * expiry. But we use the zero value to mean "it was + * never set". So let's cheat and make it one second + * instead + */ + rlim_cur = 1; + } + cputime = secs_to_cputime(rlim_cur); read_lock(&tasklist_lock); spin_lock_irq(¤t->sighand->siglock); set_process_cpu_timer(current, CPUCLOCK_PROF, &cputime, NULL);