svn commit: r187715 - head/sys/fs/fifofs
Konstantin Belousov
kib at FreeBSD.org
Mon Jan 26 06:21:01 PST 2009
Author: kib
Date: Mon Jan 26 14:21:00 2009
New Revision: 187715
URL: http://svn.freebsd.org/changeset/base/187715
Log:
The kernel may do unbalanced calls to fifo_close() for fifo vnode,
without corresponding number of fifo_open(). This causes assertion
failure in fifo_close() due to vp->v_fifoinfo being NULL for kernel
with INVARIANTS, or NULL pointer dereference otherwise. In fact, we may
ignore excess calls to fifo_close() without bad consequences.
Turn KASSERT() into the return, and print warning for now.
Tested by: pho
Reviewed by: rwatson
MFC after: 2 weeks
Modified:
head/sys/fs/fifofs/fifo_vnops.c
Modified: head/sys/fs/fifofs/fifo_vnops.c
==============================================================================
--- head/sys/fs/fifofs/fifo_vnops.c Mon Jan 26 14:12:12 2009 (r187714)
+++ head/sys/fs/fifofs/fifo_vnops.c Mon Jan 26 14:21:00 2009 (r187715)
@@ -423,7 +423,10 @@ fifo_close(ap)
struct fifoinfo *fip = vp->v_fifoinfo;
ASSERT_VOP_LOCKED(vp, "fifo_close");
- KASSERT(fip != NULL, ("fifo_close: no v_fifoinfo"));
+ if (fip == NULL) {
+ printf("fifo_close: no v_fifoinfo %p\n", vp);
+ return (0);
+ }
if (ap->a_fflag & FREAD) {
fip->fi_readers--;
if (fip->fi_readers == 0)
More information about the svn-src-head
mailing list