NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: kern/46221: Kernel panic in NFS server code
The following reply was made to PR kern/46221; it has been noted by GNATS.
From: Matthias Scheler <tron%zhadum.org.uk@localhost>
To: "J. Hannken-Illjes" <hannken%eis.cs.tu-bs.de@localhost>
Cc: NetBSD GNATS <gnats-bugs%NetBSD.org@localhost>
Subject: Re: kern/46221: Kernel panic in NFS server code
Date: Wed, 21 Mar 2012 15:08:27 +0000
On Wed, Mar 21, 2012 at 03:44:28PM +0100, J. Hannken-Illjes wrote:
> <snip>
> >
> > Manual Bouyer has looked at this crash. The kernel paniced here:
> >
> > ip = VTOI(nvp);
> > --> if (ip->i_mode == 0 || ip->i_gen != ufhp->ufid_gen) {
> > vput(nvp);
> > *vpp = NULLVP;
> > return (ESTALE);
> > }
> >
> > I guess that an extra check whether "ip" is NULL would prevent the
> > panic. But I'm not sure whether that is the correct fix.
>
> Please change this to
>
> ip = VTOI(nvp);
> + if (ip == NULL) {
> + vprintf("NULL IP", nvp);
> + panic("NULL IP");
> + }
> if (...
>
> so on the next crash we know more about the state of the vnode/inode.
I've already changed it like this:
Index: sys/ufs/ufs/ufs_vfsops.c
===================================================================
RCS file: /cvsroot/src/sys/ufs/ufs/ufs_vfsops.c,v
retrieving revision 1.50
diff -u -r1.50 ufs_vfsops.c
--- sys/ufs/ufs/ufs_vfsops.c 1 Feb 2012 05:34:43 -0000 1.50
+++ sys/ufs/ufs/ufs_vfsops.c 21 Mar 2012 15:07:49 -0000
@@ -223,7 +223,11 @@
return (error);
}
ip = VTOI(nvp);
- if (ip->i_mode == 0 || ip->i_gen != ufhp->ufid_gen) {
+ if (ip == NULL || ip->i_mode == 0 || ip->i_gen != ufhp->ufid_gen) {
+ if (ip == NULL) {
+ aprint_normal("ufs_fhtovp: ip == NULL on vp %p\n",
+ nvp);
+ }
vput(nvp);
*vpp = NULLVP;
return (ESTALE);
I'll check whether I get some of these kernel messages.
> If you are able to debug the core dump you could `print *nvp' here.
Kernel core dumps have never worked for me under NetBSD/amd64.
Kind regards
--
Matthias Scheler http://zhadum.org.uk/
Home |
Main Index |
Thread Index |
Old Index