Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1426604 > unrolled thread
| Started by | Oleg Drokin <green@linuxhacker.ru> |
|---|---|
| First post | 2016-06-20 15:30 +0200 |
| Last post | 2016-06-20 18:10 +0200 |
| Articles | 7 — 4 participants |
Back to article view | Back to linux.kernel
This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by
below is the oldest one visible, not the original post.
Re: NFS/d_splice_alias breakage Oleg Drokin <green@linuxhacker.ru> - 2016-06-20 15:30 +0200
Re: NFS/d_splice_alias breakage Al Viro <viro@ZenIV.linux.org.uk> - 2016-06-20 16:10 +0200
Re: NFS/d_splice_alias breakage Trond Myklebust <trondmy@primarydata.com> - 2016-06-20 17:20 +0200
Re: NFS/d_splice_alias breakage Al Viro <viro@ZenIV.linux.org.uk> - 2016-06-20 17:30 +0200
Re: NFS/d_splice_alias breakage Oleg Drokin <green@linuxhacker.ru> - 2016-06-20 17:50 +0200
Re: NFS/d_splice_alias breakage Trond Myklebust <trondmy@primarydata.com> - 2016-06-20 17:50 +0200
Re: NFS/d_splice_alias breakage Anna Schumaker <Anna.Schumaker@netapp.com> - 2016-06-20 18:10 +0200
| From | Oleg Drokin <green@linuxhacker.ru> |
|---|---|
| Date | 2016-06-20 15:30 +0200 |
| Subject | Re: NFS/d_splice_alias breakage |
| Message-ID | <rM7r4-jP-5@gated-at.bofh.it> |
It looks like this patch was totally forgotten?
I don't see it in neither vfs nor nfs trees and yet it fixes a very easy to cause
crash in nfs code. And I think it's unrelated to the other parallel case too.
On Jun 3, 2016, at 1:56 AM, Al Viro wrote:
> On Fri, Jun 03, 2016 at 12:58:10AM -0400, Oleg Drokin wrote:
>
>> This one cures the insta-crash I was having, and I see no other ill-effects so far.
>
> OK... I can take it through vfs.git, but I think it'd be better off in
> NFS tree. Is everyone OK with something like the following?
>
> make nfs_atomic_open() call d_drop() on all ->open_context() errors.
>
> In "NFSv4: Move dentry instantiation into the NFSv4-specific atomic open code"
> unconditional d_drop() after the ->open_context() had been removed. It had
> been correct for success cases (there ->open_context() itself had been doing
> dcache manipulations), but not for error ones. Only one of those (ENOENT)
> got a compensatory d_drop() added in that commit, but in fact it should've
> been done for all errors. As it is, the case of O_CREAT non-exclusive open
> on a hashed negative dentry racing with e.g. symlink creation from another
> client ended up with ->open_context() getting an error and proceeding to
> call nfs_lookup(). On a hashed dentry, which would've instantly triggered
> BUG_ON() in d_materialise_unique() (or, these days, its equivalent in
> d_splice_alias()).
>
> Cc: stable@vger.kernel.org # v3.10+
> Tested-by: Oleg Drokin <green@linuxhacker.ru>
> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
> ---
> diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c
> index aaf7bd0..6e3a6f4 100644
> --- a/fs/nfs/dir.c
> +++ b/fs/nfs/dir.c
> @@ -1536,9 +1536,9 @@ int nfs_atomic_open(struct inode *dir, struct dentry *dentry,
> err = PTR_ERR(inode);
> trace_nfs_atomic_open_exit(dir, ctx, open_flags, err);
> put_nfs_open_context(ctx);
> + d_drop(dentry);
> switch (err) {
> case -ENOENT:
> - d_drop(dentry);
> d_add(dentry, NULL);
> nfs_set_verifier(dentry, nfs_save_change_attribute(dir));
> break;
[toc] | [next] | [standalone]
| From | Al Viro <viro@ZenIV.linux.org.uk> |
|---|---|
| Date | 2016-06-20 16:10 +0200 |
| Message-ID | <rM83M-OW-9@gated-at.bofh.it> |
| In reply to | #1426604 |
On Mon, Jun 20, 2016 at 09:25:12AM -0400, Oleg Drokin wrote: > It looks like this patch was totally forgotten? > I don't see it in neither vfs nor nfs trees and yet it fixes a very easy to cause > crash in nfs code. And I think it's unrelated to the other parallel case too. I assumed it would go through NFS tree, seeing that it's NFS-specific and has nothing to do with any of the recent VFS changes (oops is triggerable starting from 3.11); I can certainly put it through vfs.git, and there will be changes nearby, but this one should go into -stable as a separate patch.
[toc] | [prev] | [next] | [standalone]
| From | Trond Myklebust <trondmy@primarydata.com> |
|---|---|
| Date | 2016-06-20 17:20 +0200 |
| Message-ID | <rM99w-1sR-23@gated-at.bofh.it> |
| In reply to | #1426638 |
> On Jun 20, 2016, at 10:08, Al Viro <viro@zeniv.linux.org.uk> wrote: > > On Mon, Jun 20, 2016 at 09:25:12AM -0400, Oleg Drokin wrote: >> It looks like this patch was totally forgotten? >> I don't see it in neither vfs nor nfs trees and yet it fixes a very easy to cause >> crash in nfs code. And I think it's unrelated to the other parallel case too. > > I assumed it would go through NFS tree, seeing that it's NFS-specific and > has nothing to do with any of the recent VFS changes (oops is triggerable > starting from 3.11); I can certainly put it through vfs.git, and there > will be changes nearby, but this one should go into -stable as a separate > patch. > I’ll take it through the NFS tree. Cheers Trond
[toc] | [prev] | [next] | [standalone]
| From | Al Viro <viro@ZenIV.linux.org.uk> |
|---|---|
| Date | 2016-06-20 17:30 +0200 |
| Message-ID | <rM9jb-1we-3@gated-at.bofh.it> |
| In reply to | #1426689 |
On Mon, Jun 20, 2016 at 02:54:36PM +0000, Trond Myklebust wrote: > > > On Jun 20, 2016, at 10:08, Al Viro <viro@zeniv.linux.org.uk> wrote: > > > > On Mon, Jun 20, 2016 at 09:25:12AM -0400, Oleg Drokin wrote: > >> It looks like this patch was totally forgotten? > >> I don't see it in neither vfs nor nfs trees and yet it fixes a very easy to cause > >> crash in nfs code. And I think it's unrelated to the other parallel case too. > > > > I assumed it would go through NFS tree, seeing that it's NFS-specific and > > has nothing to do with any of the recent VFS changes (oops is triggerable > > starting from 3.11); I can certainly put it through vfs.git, and there > > will be changes nearby, but this one should go into -stable as a separate > > patch. > > > > I’ll take it through the NFS tree. OK. It's really a -stable fodder, BTW - all you need to trigger that oops is a hashed negative dentry from earlier lookup + symlink created from another client + attempt to open from ours. Gets you d_splice_alias() (or d_materialise_unique() prior to 3.19) with hashed dentry and that triggers BUG_ON, leaving us with the parent directory locked.
[toc] | [prev] | [next] | [standalone]
| From | Oleg Drokin <green@linuxhacker.ru> |
|---|---|
| Date | 2016-06-20 17:50 +0200 |
| Message-ID | <rM9Cx-1EU-1@gated-at.bofh.it> |
| In reply to | #1426638 |
On Jun 20, 2016, at 11:43 AM, Anna Schumaker wrote: > Hi, > > On 06/20/2016 10:08 AM, Al Viro wrote: >> On Mon, Jun 20, 2016 at 09:25:12AM -0400, Oleg Drokin wrote: >>> It looks like this patch was totally forgotten? >>> I don't see it in neither vfs nor nfs trees and yet it fixes a very easy to cause >>> crash in nfs code. And I think it's unrelated to the other parallel case too. >> >> I assumed it would go through NFS tree, seeing that it's NFS-specific and >> has nothing to do with any of the recent VFS changes (oops is triggerable >> starting from 3.11); I can certainly put it through vfs.git, and there >> will be changes nearby, but this one should go into -stable as a separate >> patch. > > I was going to put together an nfs bugfixes pull request for 4.7 this week, so I can include the patch there if this is easy to hit. Yes, it is very easy to hit.
[toc] | [prev] | [next] | [standalone]
| From | Trond Myklebust <trondmy@primarydata.com> |
|---|---|
| Date | 2016-06-20 17:50 +0200 |
| Message-ID | <rM9Cy-1EU-33@gated-at.bofh.it> |
| In reply to | #1426638 |
> On Jun 20, 2016, at 11:43, Anna Schumaker <Anna.Schumaker@netapp.com> wrote: > > Hi, > > On 06/20/2016 10:08 AM, Al Viro wrote: >> On Mon, Jun 20, 2016 at 09:25:12AM -0400, Oleg Drokin wrote: >>> It looks like this patch was totally forgotten? >>> I don't see it in neither vfs nor nfs trees and yet it fixes a very easy to cause >>> crash in nfs code. And I think it's unrelated to the other parallel case too. >> >> I assumed it would go through NFS tree, seeing that it's NFS-specific and >> has nothing to do with any of the recent VFS changes (oops is triggerable >> starting from 3.11); I can certainly put it through vfs.git, and there >> will be changes nearby, but this one should go into -stable as a separate >> patch. > > I was going to put together an nfs bugfixes pull request for 4.7 this week, so I can include the patch there if this is easy to hit. > Hi Anna, Please do, and please keep the Cc: stable… Thanks Trond
[toc] | [prev] | [next] | [standalone]
| From | Anna Schumaker <Anna.Schumaker@netapp.com> |
|---|---|
| Date | 2016-06-20 18:10 +0200 |
| Message-ID | <rM9Cx-1EU-3@gated-at.bofh.it> |
| In reply to | #1426638 |
Hi, On 06/20/2016 10:08 AM, Al Viro wrote: > On Mon, Jun 20, 2016 at 09:25:12AM -0400, Oleg Drokin wrote: >> It looks like this patch was totally forgotten? >> I don't see it in neither vfs nor nfs trees and yet it fixes a very easy to cause >> crash in nfs code. And I think it's unrelated to the other parallel case too. > > I assumed it would go through NFS tree, seeing that it's NFS-specific and > has nothing to do with any of the recent VFS changes (oops is triggerable > starting from 3.11); I can certainly put it through vfs.git, and there > will be changes nearby, but this one should go into -stable as a separate > patch. I was going to put together an nfs bugfixes pull request for 4.7 this week, so I can include the patch there if this is easy to hit. Anna > -- > To unsubscribe from this list: send the line "unsubscribe linux-nfs" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html >
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web