From c61340f374d73fee98e97198156adf86239b11b4 Mon Sep 17 00:00:00 2001 From: Robert Watson Date: Wed, 14 Jul 2004 20:31:05 +0000 Subject: [PATCH] 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. --- sys/netgraph/ng_tty.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/sys/netgraph/ng_tty.c b/sys/netgraph/ng_tty.c index 9e4ecc31b40..bd341da5163 100644 --- a/sys/netgraph/ng_tty.c +++ b/sys/netgraph/ng_tty.c @@ -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))) {