From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S270482AbTGNBWq (ORCPT ); Sun, 13 Jul 2003 21:22:46 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S270484AbTGNBWq (ORCPT ); Sun, 13 Jul 2003 21:22:46 -0400 Received: from note.orchestra.cse.unsw.EDU.AU ([129.94.242.24]:62681 "HELO note.orchestra.cse.unsw.EDU.AU") by vger.kernel.org with SMTP id S270482AbTGNBWo (ORCPT ); Sun, 13 Jul 2003 21:22:44 -0400 From: Neil Brown To: Linus Torvalds Date: Mon, 14 Jul 2003 11:37:27 +1000 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: <16146.2391.214514.872743@gargle.gargle.HOWL> cc: linux-kernel@vger.kernel.org Subject: [PATCH] Fix two bugs with process limits (RLIMIT_NPROC) X-Mailer: VM 7.16 under Emacs 21.3.2 X-face: [Gw_3E*Gng}4rRrKRYotwlE?.2|**#s9Duser->processes) >= p->rlim[RLIMIT_NPROC].rlim_cur) { - if (!capable(CAP_SYS_ADMIN) && !capable(CAP_SYS_RESOURCE)) + if (!capable(CAP_SYS_ADMIN) && !capable(CAP_SYS_RESOURCE) + && p->user != &root_user) goto bad_fork_free; } diff ./kernel/sys.c~current~ ./kernel/sys.c --- ./kernel/sys.c~current~ 2003-07-14 09:06:11.000000000 +1000 +++ ./kernel/sys.c 2003-07-14 09:06:11.000000000 +1000 @@ -601,6 +601,14 @@ static int set_user(uid_t new_ruid, int new_user = alloc_uid(new_ruid); if (!new_user) return -EAGAIN; + + if (atomic_read(&new_user->processes) >= current->rlim[RLIMIT_NPROC].rlim_cur + && new_user != &root_user + ) { + free_uid(new_user); + return -EAGAIN; + } + switch_uid(new_user); if(dumpclear)