From 6792415119128935cb048e442fac7197cd75d903 Mon Sep 17 00:00:00 2001 From: Mike Silbersack Date: Mon, 17 Jan 2005 07:56:28 +0000 Subject: [PATCH] Rearrange the kninit calls for both directions of a pipe so that they both happen before pipe backing allocation occurs. Previously, a pipe memory shortage would cause a panic due to a KNOTE call on an uninitialized si_note. Reported by: Peter Holm MFC after: 1 week --- sys/kern/sys_pipe.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sys/kern/sys_pipe.c b/sys/kern/sys_pipe.c index 7833f20c240..267670cd0b1 100644 --- a/sys/kern/sys_pipe.c +++ b/sys/kern/sys_pipe.c @@ -351,6 +351,9 @@ pipe(td, uap) rpipe = &pp->pp_rpipe; wpipe = &pp->pp_wpipe; + knlist_init(&rpipe->pipe_sel.si_note, PIPE_MTX(rpipe)); + knlist_init(&wpipe->pipe_sel.si_note, PIPE_MTX(wpipe)); + /* Only the forward direction pipe is backed by default */ if (pipe_create(rpipe, 1) || pipe_create(wpipe, 0)) { pipeclose(rpipe); @@ -565,7 +568,6 @@ pipe_create(pipe, backing) /* If we're not backing this pipe, no need to do anything. */ error = 0; } - knlist_init(&pipe->pipe_sel.si_note, PIPE_MTX(pipe)); return (error); }