PERFORCE change 62753 for review
John Baldwin
jhb at FreeBSD.org
Wed Oct 6 08:19:50 PDT 2004
http://perforce.freebsd.org/chv.cgi?CH=62753
Change 62753 by jhb at 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;
More information about the p4-projects
mailing list