• O
    posix-timers: fix RLIMIT_CPU && setitimer(CPUCLOCK_PROF) · 8f2e5865
    Oleg Nesterov 提交于
    update_rlimit_cpu() tries to optimize out set_process_cpu_timer() in case
    when we already have CPUCLOCK_PROF timer which should expire first. But it
    uses cputime_lt() instead of cputime_gt().
    
    Test case:
    
    	int main(void)
    	{
    		struct itimerval it = {
    			.it_value = { .tv_sec = 1000 },
    		};
    
    		assert(!setitimer(ITIMER_PROF, &it, NULL));
    
    		struct rlimit rl = {
    			.rlim_cur = 1,
    			.rlim_max = 1,
    		};
    
    		assert(!setrlimit(RLIMIT_CPU, &rl));
    
    		for (;;)
    			;
    
    		return 0;
    	}
    
    Without this patch, the task is not killed as RLIMIT_CPU demands.
    Signed-off-by: NOleg Nesterov <oleg@redhat.com>
    Acked-by: NPeter Zijlstra <peterz@infradead.org>
    Cc: Peter Lojkin <ia6432@inbox.ru>
    Cc: Roland McGrath <roland@redhat.com>
    Cc: stable@kernel.org
    LKML-Reference: <20090327000610.GA10108@redhat.com>
    Signed-off-by: NIngo Molnar <mingo@elte.hu>
    8f2e5865
posix-cpu-timers.c 45.1 KB