Module Name: src Committed By: jmmv Date: Sun Nov 22 17:09:58 UTC 2009
Modified Files: src/sys/fs/tmpfs: tmpfs_vnops.c Log Message: Fix panic when trying to delete a directory entry (hi yamt!) by not attempting to release a pnbuf that does not exist. I.e. fixes "mkdir a ; unlink a/.". And actually, this was caught by the automated tests. To generate a diff of this commit: cvs rdiff -u -r1.64 -r1.65 src/sys/fs/tmpfs/tmpfs_vnops.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/fs/tmpfs/tmpfs_vnops.c diff -u src/sys/fs/tmpfs/tmpfs_vnops.c:1.64 src/sys/fs/tmpfs/tmpfs_vnops.c:1.65 --- src/sys/fs/tmpfs/tmpfs_vnops.c:1.64 Sat Oct 17 22:20:56 2009 +++ src/sys/fs/tmpfs/tmpfs_vnops.c Sun Nov 22 17:09:58 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: tmpfs_vnops.c,v 1.64 2009/10/17 22:20:56 njoly Exp $ */ +/* $NetBSD: tmpfs_vnops.c,v 1.65 2009/11/22 17:09:58 jmmv Exp $ */ /* * Copyright (c) 2005, 2006, 2007 The NetBSD Foundation, Inc. @@ -35,7 +35,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: tmpfs_vnops.c,v 1.64 2009/10/17 22:20:56 njoly Exp $"); +__KERNEL_RCSID(0, "$NetBSD: tmpfs_vnops.c,v 1.65 2009/11/22 17:09:58 jmmv Exp $"); #include <sys/param.h> #include <sys/dirent.h> @@ -728,7 +728,10 @@ vrele(dvp); else vput(dvp); - PNBUF_PUT(cnp->cn_pnbuf); + if (cnp->cn_flags & HASBUF) { + PNBUF_PUT(cnp->cn_pnbuf); + cnp->cn_flags &= ~HASBUF; + } return error; }