Add a mutex ng_tty_mtx to protect the global variable ngt_unit. Note

that the locking of globals here isn't complete, and there's also a
locking issue relating to calling into and out of the tty code.
This commit is contained in:
Robert Watson 2004-07-14 20:31:05 +00:00
parent 489264ddae
commit c61340f374
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=132163

View File

@ -166,10 +166,18 @@ static struct ng_type typestruct = {
};
NETGRAPH_INIT(tty, &typestruct);
/*
* XXXRW: ngt_unit is protected by ng_tty_mtx. ngt_ldisc is constant once
* ng_tty is initialized. ngt_nodeop_ok is untouched, and might want to be a
* sleep lock in the future?
*/
static int ngt_unit;
static int ngt_nodeop_ok; /* OK to create/remove node */
static int ngt_ldisc;
static struct mtx ng_tty_mtx;
MTX_SYSINIT(ng_tty, &ng_tty_mtx, "ng_tty", MTX_DEF);
/******************************************************************
LINE DISCIPLINE METHODS
******************************************************************/
@ -214,7 +222,9 @@ ngt_open(struct cdev *dev, struct tty *tp)
FREE(sc, M_NETGRAPH);
goto done;
}
mtx_lock(&ng_tty_mtx);
snprintf(name, sizeof(name), "%s%d", typestruct.name, ngt_unit++);
mtx_unlock(&ng_tty_mtx);
/* Assign node its name */
if ((error = ng_name_node(sc->node, name))) {