From owner-p4-projects@FreeBSD.ORG Mon Jul 17 20:30:12 2006 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 802AC16A4E0; Mon, 17 Jul 2006 20:30:12 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 5CE3016A4DE for ; Mon, 17 Jul 2006 20:30:12 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id E9B9943D4C for ; Mon, 17 Jul 2006 20:30:11 +0000 (GMT) (envelope-from jhb@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id k6HKUB88041262 for ; Mon, 17 Jul 2006 20:30:11 GMT (envelope-from jhb@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id k6HKUBW6041259 for perforce@freebsd.org; Mon, 17 Jul 2006 20:30:11 GMT (envelope-from jhb@freebsd.org) Date: Mon, 17 Jul 2006 20:30:11 GMT Message-Id: <200607172030.k6HKUBW6041259@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jhb@freebsd.org using -f From: John Baldwin To: Perforce Change Reviews Cc: Subject: PERFORCE change 101798 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 17 Jul 2006 20:30:12 -0000 http://perforce.freebsd.org/chv.cgi?CH=101798 Change 101798 by jhb@jhb_mutex on 2006/07/17 20:29:26 - No lock needed for td_dupfd. - Initialize svr4_head in MOD_LOAD catch svr4_socket up. (Why is this function even in this file and not streams.c?) Affected files ... .. //depot/projects/smpng/sys/compat/svr4/svr4_socket.c#10 edit .. //depot/projects/smpng/sys/dev/streams/streams.c#25 edit Differences ... ==== //depot/projects/smpng/sys/compat/svr4/svr4_socket.c#10 (text+ko) ==== @@ -75,17 +75,6 @@ struct svr4_sockcache_entry *e; void *cookie = ((struct socket *)fp->f_data)->so_emuldata; - if (svr4_str_initialized != 2) { - if (atomic_cmpset_acq_int(&svr4_str_initialized, 0, 1)) { - DPRINTF(("svr4_find_socket: uninitialized [%p,%d,%d]\n", - td, dev, ino)); - TAILQ_INIT(&svr4_head); - atomic_store_rel_int(&svr4_str_initialized, 2); - } - return NULL; - } - - DPRINTF(("svr4_find_socket: [%p,%d,%d]: ", td, dev, ino)); TAILQ_FOREACH(e, &svr4_head, entries) if (e->p == td->td_proc && e->dev == dev && e->ino == ino) { ==== //depot/projects/smpng/sys/dev/streams/streams.c#25 (text+ko) ==== @@ -68,7 +68,7 @@ static int svr4_ptm_alloc(struct thread *); static d_open_t streamsopen; -struct svr4_sockcache_head svr4_head = TAILQ_HEAD_INITIALIZER(svr4_head); +struct svr4_sockcache_head svr4_head; /* * Device minor numbers @@ -86,8 +86,8 @@ dev_unix_ord_stream = 40 }; -static struct cdev *dt_ptm, *dt_arp, *dt_icmp, *dt_ip, *dt_tcp, *dt_udp, *dt_rawip, - *dt_unix_dgram, *dt_unix_stream, *dt_unix_ord_stream; +static struct cdev *dt_ptm, *dt_arp, *dt_icmp, *dt_ip, *dt_tcp, *dt_udp, + *dt_rawip, *dt_unix_dgram, *dt_unix_stream, *dt_unix_ord_stream; static struct fileops svr4_netops = { .fo_read = soo_read, @@ -119,7 +119,7 @@ { switch (type) { case MOD_LOAD: - /* XXX should make sure it isn't already loaded first */ + TAILQ_INIT(&svr4_head); dt_ptm = make_dev(&streams_cdevsw, dev_ptm, 0, 0, 0666, "ptm"); dt_arp = make_dev(&streams_cdevsw, dev_arp, 0, 0, 0666, @@ -274,9 +274,7 @@ (void)svr4_stream_get(fp); fdrop(fp, td); - PROC_LOCK(p); td->td_dupfd = fd; - PROC_UNLOCK(p); return ENXIO; } @@ -318,9 +316,7 @@ case ENXIO: return error; case 0: - PROC_LOCK(p); td->td_dupfd = td->td_retval[0]; - PROC_UNLOCK(p); return ENXIO; default: if (ttynumbers[++n] == '\0') {