Module Name: src Committed By: rmind Date: Sat May 17 23:30:25 UTC 2014
Modified Files: src/sys/miscfs/fifofs: fifo_vnops.c Log Message: fifo_open: assign v_fifoinfo once initialised; add an assert while here. To generate a diff of this commit: cvs rdiff -u -r1.74 -r1.75 src/sys/miscfs/fifofs/fifo_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/miscfs/fifofs/fifo_vnops.c diff -u src/sys/miscfs/fifofs/fifo_vnops.c:1.74 src/sys/miscfs/fifofs/fifo_vnops.c:1.75 --- src/sys/miscfs/fifofs/fifo_vnops.c:1.74 Fri Feb 7 15:29:22 2014 +++ src/sys/miscfs/fifofs/fifo_vnops.c Sat May 17 23:30:24 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: fifo_vnops.c,v 1.74 2014/02/07 15:29:22 hannken Exp $ */ +/* $NetBSD: fifo_vnops.c,v 1.75 2014/05/17 23:30:24 rmind Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -58,7 +58,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: fifo_vnops.c,v 1.74 2014/02/07 15:29:22 hannken Exp $"); +__KERNEL_RCSID(0, "$NetBSD: fifo_vnops.c,v 1.75 2014/05/17 23:30:24 rmind Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -116,7 +116,6 @@ fifo_lookup(void *v) * Open called to set up a new instance of a fifo or * to find an active instance of a fifo. */ -/* ARGSUSED */ static int fifo_open(void *v) { @@ -132,14 +131,13 @@ fifo_open(void *v) int error; vp = ap->a_vp; + KASSERT(VOP_ISLOCKED(vp)); if ((fip = vp->v_fifoinfo) == NULL) { fip = kmem_alloc(sizeof(*fip), KM_SLEEP); - vp->v_fifoinfo = fip; error = socreate(AF_LOCAL, &rso, SOCK_STREAM, 0, l, NULL); if (error != 0) { kmem_free(fip, sizeof(*fip)); - vp->v_fifoinfo = NULL; return (error); } fip->fi_readsock = rso; @@ -147,7 +145,6 @@ fifo_open(void *v) if (error != 0) { (void)soclose(rso); kmem_free(fip, sizeof(*fip)); - vp->v_fifoinfo = NULL; return (error); } fip->fi_writesock = wso; @@ -157,7 +154,6 @@ fifo_open(void *v) (void)soclose(wso); (void)soclose(rso); kmem_free(fip, sizeof(*fip)); - vp->v_fifoinfo = NULL; return (error); } fip->fi_readers = 0; @@ -166,6 +162,7 @@ fifo_open(void *v) rso->so_state |= SS_CANTSENDMORE; cv_init(&fip->fi_rcv, "fiford"); cv_init(&fip->fi_wcv, "fifowr"); + vp->v_fifoinfo = fip; } else { wso = fip->fi_writesock; rso = fip->fi_readsock;