From owner-p4-projects@FreeBSD.ORG Wed Oct 6 15:19:49 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 469B516A4D0; Wed, 6 Oct 2004 15:19:49 +0000 (GMT) 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 229E216A4CE for ; Wed, 6 Oct 2004 15:19:49 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 17F7343D1D for ; Wed, 6 Oct 2004 15:19:49 +0000 (GMT) (envelope-from jhb@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id i96FJmdx042405 for ; Wed, 6 Oct 2004 15:19:48 GMT (envelope-from jhb@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id i96FJmIp042402 for perforce@freebsd.org; Wed, 6 Oct 2004 15:19:48 GMT (envelope-from jhb@freebsd.org) Date: Wed, 6 Oct 2004 15:19:48 GMT Message-Id: <200410061519.i96FJmIp042402@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 Subject: PERFORCE change 62753 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 06 Oct 2004 15:19:50 -0000 http://perforce.freebsd.org/chv.cgi?CH=62753 Change 62753 by jhb@jhb_slimer on 2004/10/06 15:18:56 Add some KASSERT()'s to help catch the use after free bug in the file desc code that sparc64 machines keep tripping. Affected files ... .. //depot/projects/smpng/sys/kern/kern_descrip.c#67 edit Differences ... ==== //depot/projects/smpng/sys/kern/kern_descrip.c#67 (text+ko) ==== @@ -179,6 +179,7 @@ FILEDESC_LOCK_ASSERT(fdp, MA_OWNED); KASSERT(!fdisused(fdp, fd), ("fd already used")); + KASSERT(fdp->fd_map[NDSLOT(fd)] != 0xdeadc0de, ("writing to free'd map")); fdp->fd_map[NDSLOT(fd)] |= NDBIT(fd); if (fd > fdp->fd_lastfile) fdp->fd_lastfile = fd; @@ -197,6 +198,7 @@ ("fd is already unused")); KASSERT(fdp->fd_ofiles[fd] == NULL, ("fd is still in use")); + KASSERT(fdp->fd_map[NDSLOT(fd)] != 0xdeadc0de, ("writing to free'd map")); fdp->fd_map[NDSLOT(fd)] &= ~NDBIT(fd); if (fd < fdp->fd_freefile) fdp->fd_freefile = fd; @@ -389,6 +391,7 @@ case F_SETFD: /* mtx_assert(&Giant, MA_NOTOWNED); */ + KASSERT(*pop != 0xdeadc0de, ("writing to free'd flags")); *pop = (*pop &~ UF_EXCLOSE) | (arg & FD_CLOEXEC ? UF_EXCLOSE : 0); FILEDESC_UNLOCK(fdp); @@ -681,6 +684,7 @@ * Duplicate the source descriptor */ fdp->fd_ofiles[new] = fp; + KASSERT(fdp->fd_ofileflags[old] != 0xdeadc0de, ("reading/writing free'd file flags")); fdp->fd_ofileflags[new] = fdp->fd_ofileflags[old] &~ UF_EXCLOSE; if (new > fdp->fd_lastfile) fdp->fd_lastfile = new;