lkml.org 
[lkml]   [2006]   [Apr]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[patch 17/22] RLIMIT_CPU: fix handling of a zero limit
    -stable review patch.  If anyone has any objections, please let us know.

    ------------------

    At present the kernel doesn't honour an attempt to set RLIMIT_CPU to zero
    seconds. But the spec says it should, and that's what 2.4.x does.

    Fixing this for real would involve some complexity (such as adding a new
    it-has-been-set flag to the task_struct, and testing that everwhere, instead
    of overloading the value of it_prof_expires).

    Given that a 2.4 kernel won't actually send the signal until one second has
    expired anyway, let's just handle this case by treating the caller's
    zero-seconds as one second.

    Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Cc: Ulrich Weigand <uweigand@de.ibm.com>
    Cc: Cliff Wickman <cpw@sgi.com>
    Acked-by: Ingo Molnar <mingo@elte.hu>
    Signed-off-by: Andrew Morton <akpm@osdl.org>
    Signed-off-by: Linus Torvalds <torvalds@osdl.org>

    ---

    kernel/sys.c | 14 +++++++++++++-
    1 file changed, 13 insertions(+), 1 deletion(-)

    e0661111e5441995f7a69dc4336c9f131cb9bc58
    --- linux-2.6.16.5.orig/kernel/sys.c
    +++ linux-2.6.16.5/kernel/sys.c
    @@ -1657,7 +1657,19 @@ asmlinkage long sys_setrlimit(unsigned i
    (cputime_eq(current->signal->it_prof_expires, cputime_zero) ||
    new_rlim.rlim_cur <= cputime_to_secs(
    current->signal->it_prof_expires))) {
    - 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(&current->sighand->siglock);
    set_process_cpu_timer(current, CPUCLOCK_PROF,
    --
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2006-04-14 01:15    [W:3.000 / U:0.100 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site