From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751221AbdBFIT2 (ORCPT ); Mon, 6 Feb 2017 03:19:28 -0500 Received: from verein.lst.de ([213.95.11.211]:33156 "EHLO newverein.lst.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750937AbdBFIT1 (ORCPT ); Mon, 6 Feb 2017 03:19:27 -0500 Date: Mon, 6 Feb 2017 09:19:24 +0100 From: Christoph Hellwig To: Dave Jones , Linus Torvalds , Linux Kernel Mailing List , Christoph Hellwig Subject: Re: Linux 4.10-rc7 Message-ID: <20170206081924.GA21703@lst.de> References: <20170206060032.f7ktrvogksxl4ppy@codemonkey.org.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20170206060032.f7ktrvogksxl4ppy@codemonkey.org.uk> User-Agent: Mutt/1.5.17 (2007-11-01) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Feb 06, 2017 at 01:00:32AM -0500, Dave Jones wrote: > This one smells funny to me. Double mnt_want_write, no idea why lockdep isn't reporting that for me. Fix below: diff --git a/fs/nfsd/vfs.c b/fs/nfsd/vfs.c index ca13236dbb1f..a974368026a1 100644 --- a/fs/nfsd/vfs.c +++ b/fs/nfsd/vfs.c @@ -359,11 +359,6 @@ nfsd_setattr(struct svc_rqst *rqstp, struct svc_fh *fhp, struct iattr *iap, err = fh_verify(rqstp, fhp, ftype, accmode); if (err) return err; - if (get_write_count) { - host_err = fh_want_write(fhp); - if (host_err) - goto out_host_err; - } dentry = fhp->fh_dentry; inode = d_inode(dentry); @@ -416,6 +411,12 @@ nfsd_setattr(struct svc_rqst *rqstp, struct svc_fh *fhp, struct iattr *iap, iap->ia_valid |= ATTR_CTIME; + if (get_write_count) { + host_err = fh_want_write(fhp); + if (host_err) + goto out_host_err; + } + fh_lock(fhp); host_err = notify_change(dentry, iap, NULL); fh_unlock(fhp);