cvs commit: src/sys/kern kern_proc.c
John Baldwin
jhb at freebsd.org
Wed Sep 20 08:43:15 PDT 2006
On Tuesday 19 September 2006 19:29, Martin Blapp wrote:
>
> Hi,
>
> > Will you be able to revert 1.258 of tty.c now and still be safe from panics?
>
> I guess so. I don't see another place which could be dangerous for us beside
> enterpgrp(). I don't understand the code there 100%.
>
> sys/kern/kern_proc.c: line 308
>
> if (sess != NULL) {
> ^^^^^^
> Why only if a session already exists ? Could you explain that to me ?
> Anyway, we may need here Giant too. What do you think ?
This is because the callers pre-allocate session and process group objects
and then enterpgrp() initializes them and glues them together IIRC.
> /*
> * new session
> */
> mtx_init(&sess->s_mtx, "session", NULL, MTX_DEF);
> PROC_LOCK(p);
> p->p_flag &= ~P_CONTROLT;
> PROC_UNLOCK(p);
> PGRP_LOCK(pgrp);
> sess->s_leader = p;
> sess->s_sid = p->p_pid;
> sess->s_count = 1;
> sess->s_ttyvp = NULL;
> sess->s_ttyp = NULL;
>
>
> But I don't think we should revert v. 1.258 because the locks will
> be needed later. After NEED_GIANT has gone (from tty code) we will need the
> same lock at the same place again to avoid races. There are some places more where we
> need the locks then. I propose to keep rev. 1.258 (maybe not to MFC it) or to
> add a comment instead.
Well, I'd rather use whatever lock we end up using for t_session instead
of assuming it's going to be proctree_lock, so I'd like to leave t_session
only under Giant for now until we really know what we are doing.
--
John Baldwin
More information about the cvs-src
mailing list