NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: kern/50664: "cd .." over NFS/ZFS can panic kernel
The following reply was made to PR kern/50664; it has been noted by GNATS.
From: "J. Hannken-Illjes" <hannken%eis.cs.tu-bs.de@localhost>
To: Brian Marcotte <marcotte%panix.com@localhost>
Cc: gnats-bugs%NetBSD.org@localhost
Subject: Re: kern/50664: "cd .." over NFS/ZFS can panic kernel
Date: Mon, 18 Jan 2016 12:46:51 +0100
> This isn't working yet. I put a printf in there as well, and it's not
> printing my message before the panic. Also, if DIAGNOSTIC is included,
> it still stops at "KASSERT(dvp !=3D *vpp);=E2=80=9D.
This is the second lookup, reading from name cache.
What prints this diff?
--- nfs_vnops.c 12 Aug 2012 12:59:48 -0000 1.293.4.1
+++ nfs_vnops.c 18 Jan 2016 11:45:53 -0000
@@ -946,8 +946,9 @@ dorpc:
* because it should be done while dvp is locked (unlocking
* dvp is different for each case).
*/
=20
+printf("lookup \"%.*s\"\n", cnp->cn_namelen, cnp->cn_nameptr);
if (NFS_CMPFH(np, fhp, fhsize)) {
/*
* as we handle "." lookup locally, this should be
* a broken server.
@@ -960,8 +961,9 @@ dorpc:
nfsm_postop_attr(dvp, attrflag, 0);
} else
#endif
nfsm_loadattr(newvp, (struct vattr *)0, 0);
+printf("dvp %p newvp %p DOT\n", dvp, newvp);
} else if (flags & ISDOTDOT) {
/*
* ".." lookup
*/
@@ -980,8 +982,9 @@ dorpc:
nfsm_postop_attr(dvp, attrflag, 0);
} else
#endif
nfsm_loadattr(newvp, (struct vattr *)0, 0);
+printf("dvp %p newvp %p DOTDOT\n", dvp, newvp);
} else {
/*
* Other lookups.
*/
@@ -997,8 +1000,9 @@ dorpc:
nfsm_postop_attr(dvp, attrflag, 0);
} else
#endif
nfsm_loadattr(newvp, (struct vattr *)0, 0);
+printf("dvp %p newvp %p OTHER\n", dvp, newvp);
}
if (cnp->cn_nameiop !=3D DELETE || !(flags & ISLASTCN)) {
nfs_cache_enter(dvp, newvp, cnp);
}
--
J. Hannken-Illjes - hannken%eis.cs.tu-bs.de@localhost - TU Braunschweig (Germany)
Home |
Main Index |
Thread Index |
Old Index