From mboxrd@z Thu Jan 1 00:00:00 1970 From: npiggin@suse.de Subject: [2.6.27.stable][patch 6/6] NFS: Close page_mkwrite() races Date: Tue, 12 May 2009 16:23:52 +1000 Message-ID: <20090512070750.379544453@suse.de> References: <20090512062346.554974013@suse.de> Cc: linux-fsdevel@vger.kernel.org, linux-mm@vger.kernel.org To: stable@kernel.org Return-path: Received: from cantor2.suse.de ([195.135.220.15]:59790 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756486AbZELHRW (ORCPT ); Tue, 12 May 2009 03:17:22 -0400 Content-Disposition: inline; filename=7fdf523067666b0eaff330f362401ee50ce187c4 Sender: linux-fsdevel-owner@vger.kernel.org List-ID: NFS: Close page_mkwrite() races Follow up to Nick Piggin's patches to ensure that nfs_vm_page_mkwrite returns with the page lock held, and sets the VM_FAULT_LOCKED flag. See http://bugzilla.kernel.org/show_bug.cgi?id=12913 Signed-off-by: Trond Myklebust Signed-off-by: Linus Torvalds --- fs/nfs/file.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) Index: linux-2.6/fs/nfs/file.c =================================================================== --- linux-2.6.orig/fs/nfs/file.c +++ linux-2.6/fs/nfs/file.c @@ -478,10 +478,10 @@ static int nfs_vm_page_mkwrite(struct vm ret = nfs_updatepage(filp, page, 0, pagelen); out_unlock: + if (!ret) + return VM_FAULT_LOCKED; unlock_page(page); - if (ret) - ret = VM_FAULT_SIGBUS; - return ret; + return VM_FAULT_SIGBUS; } static struct vm_operations_struct nfs_file_vm_ops = {