From mboxrd@z Thu Jan 1 00:00:00 1970 From: Al Viro Subject: Re: [PATCH v3 109/110] namei: handle absolute symlinks without dropping out of RCU mode Date: Fri, 15 May 2015 06:11:00 +0100 Message-ID: <20150515051100.GB1127@ZenIV.linux.org.uk> References: <20150511180650.GA4147@ZenIV.linux.org.uk> <1431367690-5223-109-git-send-email-viro@ZenIV.linux.org.uk> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: Neil Brown , Christoph Hellwig , linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org To: Linus Torvalds Return-path: Received: from zeniv.linux.org.uk ([195.92.253.2]:54023 "EHLO ZenIV.linux.org.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751890AbbEOFLC (ORCPT ); Fri, 15 May 2015 01:11:02 -0400 Content-Disposition: inline In-Reply-To: <1431367690-5223-109-git-send-email-viro@ZenIV.linux.org.uk> Sender: linux-fsdevel-owner@vger.kernel.org List-ID: On Mon, May 11, 2015 at 07:08:09PM +0100, Al Viro wrote: > @@ -499,7 +499,7 @@ struct nameidata { > struct path root; > struct inode *inode; /* path.dentry.d_inode */ > unsigned int flags; > - unsigned seq, m_seq; > + unsigned seq, m_seq, root_seq; > int last_type; > unsigned depth; > int total_link_count; > @@ -780,14 +780,14 @@ static __always_inline void set_root(struct nameidata *nd) > static __always_inline unsigned set_root_rcu(struct nameidata *nd) > { > struct fs_struct *fs = current->fs; > - unsigned seq, res; > + unsigned seq; > > do { > seq = read_seqcount_begin(&fs->seq); > nd->root = fs->root; > - res = __read_seqcount_begin(&nd->root.dentry->d_seq); > + nd->root_seq = __read_seqcount_begin(&nd->root.dentry->d_seq); nd->root_seq is also needed in LOOKUP_ROOT | LOOKUP_RCU case. Fixed and folded.