From owner-svn-src-all@FreeBSD.ORG Sun Sep 23 17:42:39 2012 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id B9FD61065675; Sun, 23 Sep 2012 17:42:39 +0000 (UTC) (envelope-from alc@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A5D378FC08; Sun, 23 Sep 2012 17:42:39 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q8NHgdqO045513; Sun, 23 Sep 2012 17:42:39 GMT (envelope-from alc@svn.freebsd.org) Received: (from alc@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q8NHgdDl045511; Sun, 23 Sep 2012 17:42:39 GMT (envelope-from alc@svn.freebsd.org) Message-Id: <201209231742.q8NHgdDl045511@svn.freebsd.org> From: Alan Cox Date: Sun, 23 Sep 2012 17:42:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r240862 - head/sys/vm X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 Sep 2012 17:42:39 -0000 Author: alc Date: Sun Sep 23 17:42:39 2012 New Revision: 240862 URL: http://svn.freebsd.org/changeset/base/240862 Log: Address a race condition that was introduced in r238212. Unless the page queues lock is acquired before the page lock is released, there is no guarantee that the page will still be in that same page queue when vm_page_requeue() is called. Reported by: pho In collaboration with: kib MFC after: 3 days Modified: head/sys/vm/vm_pageout.c Modified: head/sys/vm/vm_pageout.c ============================================================================== --- head/sys/vm/vm_pageout.c Sun Sep 23 17:36:01 2012 (r240861) +++ head/sys/vm/vm_pageout.c Sun Sep 23 17:42:39 2012 (r240862) @@ -1125,9 +1125,9 @@ vm_pageout_scan(int pass) * Those objects are in a "rundown" state. */ if (!swap_pageouts_ok || (object->flags & OBJ_DEAD)) { + vm_page_lock_queues(); vm_page_unlock(m); VM_OBJECT_UNLOCK(object); - vm_page_lock_queues(); queues_locked = TRUE; vm_page_requeue(m); goto relock_queues;