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
This commit is contained in:
Mike Silbersack 2005-01-17 07:56:28 +00:00
parent a866e17077
commit 6792415119
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=140369

View File

@ -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);
}