Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755133Ab2B2UbX (ORCPT ); Wed, 29 Feb 2012 15:31:23 -0500 Received: from mail.linuxfoundation.org ([140.211.169.12]:37993 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754344Ab2B2UbV (ORCPT ); Wed, 29 Feb 2012 15:31:21 -0500 Date: Wed, 29 Feb 2012 12:31:20 -0800 From: Andrew Morton To: Christoph Lameter Cc: "Eric W. Biederman" , Dave Hansen , linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: Re: [RFC][PATCH] fix move/migrate_pages() race on task struct Message-Id: <20120229123120.127e21fd.akpm@linux-foundation.org> In-Reply-To: References: <20120223180740.C4EC4156@kernel> <4F468F09.5050200@linux.vnet.ibm.com> <4F469BC7.50705@linux.vnet.ibm.com> <4F47BF56.6010602@linux.vnet.ibm.com> <4F47C800.4090903@linux.vnet.ibm.com> <87sjhzun47.fsf@xmission.com> <87d390janv.fsf@xmission.com> X-Mailer: Sylpheed 3.0.2 (GTK+ 2.20.1; x86_64-pc-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1467 Lines: 32 On Tue, 28 Feb 2012 13:30:19 -0600 (CST) Christoph Lameter wrote: > Migration functions perform the rcu_read_unlock too early. As a result the > task pointed to may change from under us. > > The following patch extend the period of the rcu_read_lock until after the > permissions checks are done. We also take a refcount so that the task > reference is stable when calling security check functions and performing > cpuset node validation (which takes a mutex). > > The refcount is dropped before actual page migration occurs so there is no > change to the refcounts held during page migration. > > Also move the determination of the mm of the task struct to immediately > before the do_migrate*() calls so that it is clear that we switch from > handling the task during permission checks to the mm for the actual > migration. Since the determination is only done once and we then no longer > use the task_struct we can be sure that we operate on a specific address > space that will not change from under us. What was the user-visible impact of the bug? Please always include info this in bug fix changelogs - it helps me and others to decide which kernel version(s) the patch should be merged into. -- 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/