Re: [PATCH 14/20] VFS/namei: add 'inode' arg to put_link().

2015-04-18 Thread Al Viro
On Fri, Apr 17, 2015 at 08:09:10PM +0100, Al Viro wrote: > On Fri, Apr 17, 2015 at 05:25:36PM +0100, Al Viro wrote: > > On Mon, Mar 23, 2015 at 01:37:40PM +1100, NeilBrown wrote: > > > @@ -1669,13 +1669,14 @@ static inline int nested_symlink(struct path > > > *path, struct nameidata *nd) > > >

Re: [PATCH 14/20] VFS/namei: add 'inode' arg to put_link().

2015-04-18 Thread Al Viro
On Fri, Apr 17, 2015 at 08:09:10PM +0100, Al Viro wrote: On Fri, Apr 17, 2015 at 05:25:36PM +0100, Al Viro wrote: On Mon, Mar 23, 2015 at 01:37:40PM +1100, NeilBrown wrote: @@ -1669,13 +1669,14 @@ static inline int nested_symlink(struct path *path, struct nameidata *nd) do {

Re: [PATCH 14/20] VFS/namei: add 'inode' arg to put_link().

2015-04-17 Thread Al Viro
On Fri, Apr 17, 2015 at 05:25:36PM +0100, Al Viro wrote: > On Mon, Mar 23, 2015 at 01:37:40PM +1100, NeilBrown wrote: > > @@ -1669,13 +1669,14 @@ static inline int nested_symlink(struct path *path, > > struct nameidata *nd) > > > > do { > > struct path link = *path; > > +

Re: [PATCH 14/20] VFS/namei: add 'inode' arg to put_link().

2015-04-17 Thread Al Viro
On Mon, Mar 23, 2015 at 01:37:40PM +1100, NeilBrown wrote: > @@ -1669,13 +1669,14 @@ static inline int nested_symlink(struct path *path, > struct nameidata *nd) > > do { > struct path link = *path; > + struct inode *inode = link.dentry->d_inode; >

Re: [PATCH 14/20] VFS/namei: add 'inode' arg to put_link().

2015-04-17 Thread Al Viro
On Mon, Mar 23, 2015 at 01:37:40PM +1100, NeilBrown wrote: @@ -1669,13 +1669,14 @@ static inline int nested_symlink(struct path *path, struct nameidata *nd) do { struct path link = *path; + struct inode *inode = link.dentry-d_inode; void

Re: [PATCH 14/20] VFS/namei: add 'inode' arg to put_link().

2015-04-17 Thread Al Viro
On Fri, Apr 17, 2015 at 05:25:36PM +0100, Al Viro wrote: On Mon, Mar 23, 2015 at 01:37:40PM +1100, NeilBrown wrote: @@ -1669,13 +1669,14 @@ static inline int nested_symlink(struct path *path, struct nameidata *nd) do { struct path link = *path; + struct

[PATCH 14/20] VFS/namei: add 'inode' arg to put_link().

2015-03-22 Thread NeilBrown
When symlinks are followed in RCU-walk, dentry->d_inode may have changed between the call to ->follow_link and the call to ->put_link. So we need to preserve the inode used in the first instance, and use it to find the correct put_link. Note that this means that when RCU-walk is permitted in

[PATCH 14/20] VFS/namei: add 'inode' arg to put_link().

2015-03-22 Thread NeilBrown
When symlinks are followed in RCU-walk, dentry-d_inode may have changed between the call to -follow_link and the call to -put_link. So we need to preserve the inode used in the first instance, and use it to find the correct put_link. Note that this means that when RCU-walk is permitted in