From owner-p4-projects@FreeBSD.ORG Sun Feb 13 12:55:56 2011 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 704D71065698; Sun, 13 Feb 2011 12:55:56 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1A52C1065695 for ; Sun, 13 Feb 2011 12:55:56 +0000 (UTC) (envelope-from trasz@freebsd.org) Received: from skunkworks.freebsd.org (skunkworks.freebsd.org [IPv6:2001:4f8:fff6::2d]) by mx1.freebsd.org (Postfix) with ESMTP id 064F98FC2B for ; Sun, 13 Feb 2011 12:55:56 +0000 (UTC) Received: from skunkworks.freebsd.org (localhost [127.0.0.1]) by skunkworks.freebsd.org (8.14.4/8.14.4) with ESMTP id p1DCtttD049736 for ; Sun, 13 Feb 2011 12:55:55 GMT (envelope-from trasz@freebsd.org) Received: (from perforce@localhost) by skunkworks.freebsd.org (8.14.4/8.14.4/Submit) id p1DCtt0E049733 for perforce@freebsd.org; Sun, 13 Feb 2011 12:55:55 GMT (envelope-from trasz@freebsd.org) Date: Sun, 13 Feb 2011 12:55:55 GMT Message-Id: <201102131255.p1DCtt0E049733@skunkworks.freebsd.org> X-Authentication-Warning: skunkworks.freebsd.org: perforce set sender to trasz@freebsd.org using -f From: Edward Tomasz Napierala To: Perforce Change Reviews Precedence: bulk Cc: Subject: PERFORCE change 188776 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 13 Feb 2011 12:55:56 -0000 http://p4web.freebsd.org/@@188776?ac=10 Change 188776 by trasz@trasz_victim on 2011/02/13 12:55:32 When iterating over processes, we need to make sure the process structure is fully initialized, i.e. if p_state == PRS_NORMAL. Otherwise we may panic due to e.g. NULL thread lock pointer. Affected files ... .. //depot/projects/soc2009/trasz_limits/sys/kern/kern_container.c#74 edit .. //depot/projects/soc2009/trasz_limits/sys/vm/vm_pageout.c#27 edit Differences ... ==== //depot/projects/soc2009/trasz_limits/sys/kern/kern_container.c#74 (text+ko) ==== @@ -735,6 +735,8 @@ NULL); FOREACH_PROC_IN_SYSTEM(p) { + if (p->p_state != PRS_NORMAL) + continue; if (p->p_flag & P_SYSTEM) continue; ==== //depot/projects/soc2009/trasz_limits/sys/vm/vm_pageout.c#27 (text+ko) ==== @@ -1284,6 +1284,10 @@ if (PROC_TRYLOCK(p) == 0) continue; + if (p->p_state != PRS_NORMAL) { + PROC_UNLOCK(p); + continue; + } /* * If this is a system, protected or killed process, skip it. */ @@ -1662,6 +1666,10 @@ * looked at this process, skip it. */ PROC_LOCK(p); + if (p->p_state != PRS_NORMAL) { + PROC_UNLOCK(p); + continue; + } if (p->p_flag & (P_INEXEC | P_SYSTEM | P_WEXIT)) { PROC_UNLOCK(p); continue;