Module Name: src Committed By: hannken Date: Tue Jun 27 08:40:53 UTC 2017
Modified Files: src/sys/miscfs/genfs: genfs_io.c Log Message: Add missing check for dead or dying vnode to the entry of genfs_getpages(). To generate a diff of this commit: cvs rdiff -u -r1.69 -r1.70 src/sys/miscfs/genfs/genfs_io.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/miscfs/genfs/genfs_io.c diff -u src/sys/miscfs/genfs/genfs_io.c:1.69 src/sys/miscfs/genfs/genfs_io.c:1.70 --- src/sys/miscfs/genfs/genfs_io.c:1.69 Sun Jun 4 08:05:42 2017 +++ src/sys/miscfs/genfs/genfs_io.c Tue Jun 27 08:40:53 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: genfs_io.c,v 1.69 2017/06/04 08:05:42 hannken Exp $ */ +/* $NetBSD: genfs_io.c,v 1.70 2017/06/27 08:40:53 hannken Exp $ */ /* * Copyright (c) 1982, 1986, 1989, 1993 @@ -31,7 +31,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: genfs_io.c,v 1.69 2017/06/04 08:05:42 hannken Exp $"); +__KERNEL_RCSID(0, "$NetBSD: genfs_io.c,v 1.70 2017/06/27 08:40:53 hannken Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -139,6 +139,13 @@ genfs_getpages(void *v) KASSERT(vp->v_type == VREG || vp->v_type == VDIR || vp->v_type == VLNK || vp->v_type == VBLK); + error = vdead_check(vp, VDEAD_NOWAIT); + if (error) { + if ((flags & PGO_LOCKED) == 0) + mutex_exit(uobj->vmobjlock); + return error; + } + startover: error = 0; const voff_t origvsize = vp->v_size;