svn commit: r188613 - head/sys/kern
Joe Marcus Clarke
marcus at FreeBSD.org
Sat Feb 14 13:12:25 PST 2009
Author: marcus (doc,ports committer)
Date: Sat Feb 14 21:12:24 2009
New Revision: 188613
URL: http://svn.freebsd.org/changeset/base/188613
Log:
Change two KASSERTS to printfs and simple returns. Stress testing has
revealed that a process' current working directory can be VBAD if the
directory is removed. This can trigger a panic when procstat -f PID is
run.
Tested by: pho
Discovered by: phobot
Reviewed by: kib
Approved by: kib
Modified:
head/sys/kern/kern_descrip.c
Modified: head/sys/kern/kern_descrip.c
==============================================================================
--- head/sys/kern/kern_descrip.c Sat Feb 14 21:08:40 2009 (r188612)
+++ head/sys/kern/kern_descrip.c Sat Feb 14 21:12:24 2009 (r188613)
@@ -2532,7 +2532,12 @@ export_vnode_for_osysctl(struct vnode *v
kif->kf_fd = type;
kif->kf_type = KF_TYPE_VNODE;
/* This function only handles directories. */
- KASSERT(vp->v_type == VDIR, ("export_vnode_for_osysctl: vnode not directory"));
+ if (vp->v_type != VDIR) {
+ printf("export_vnode_for_osysctl: vnode not directory: %d\n",
+ vp->v_type);
+ vrele(vp);
+ return (ENOTDIR);
+ }
kif->kf_vnode_type = KF_VTYPE_VDIR;
/*
@@ -2779,7 +2784,12 @@ export_vnode_for_sysctl(struct vnode *vp
kif->kf_fd = type;
kif->kf_type = KF_TYPE_VNODE;
/* This function only handles directories. */
- KASSERT(vp->v_type == VDIR, ("export_vnode_for_sysctl: vnode not directory"));
+ if (vp->v_type != VDIR) {
+ printf("export_vnode_for_sysctl: vnode not directory: %d\n",
+ vp->v_type);
+ vrele(vp);
+ return (ENOTDIR);
+ }
kif->kf_vnode_type = KF_VTYPE_VDIR;
/*
More information about the svn-src-all
mailing list