svn commit: r236822 - head/sys/kern
Pawel Jakub Dawidek
pjd at FreeBSD.org
Sat Jun 9 18:50:33 UTC 2012
Author: pjd
Date: Sat Jun 9 18:50:32 2012
New Revision: 236822
URL: http://svn.freebsd.org/changeset/base/236822
Log:
There is no need to drop the FILEDESC lock around malloc(M_WAITOK) anymore, as
we now use sx lock for filedesc structure protection.
Reviewed by: kib
MFC after: 1 month
Modified:
head/sys/kern/kern_descrip.c
Modified: head/sys/kern/kern_descrip.c
==============================================================================
--- head/sys/kern/kern_descrip.c Sat Jun 9 18:48:06 2012 (r236821)
+++ head/sys/kern/kern_descrip.c Sat Jun 9 18:50:32 2012 (r236822)
@@ -1428,9 +1428,7 @@ out:
}
/*
- * Grow the file table to accomodate (at least) nfd descriptors. This may
- * block and drop the filedesc lock, but it will reacquire it before
- * returning.
+ * Grow the file table to accomodate (at least) nfd descriptors.
*/
static void
fdgrowtable(struct filedesc *fdp, int nfd)
@@ -1456,7 +1454,6 @@ fdgrowtable(struct filedesc *fdp, int nf
return;
/* allocate a new table and (if required) new bitmaps */
- FILEDESC_XUNLOCK(fdp);
ntable = malloc((nnfiles * OFILESIZE) + sizeof(struct freetable),
M_FILEDESC, M_ZERO | M_WAITOK);
nfileflags = (char *)&ntable[nnfiles];
@@ -1465,20 +1462,7 @@ fdgrowtable(struct filedesc *fdp, int nf
M_FILEDESC, M_ZERO | M_WAITOK);
else
nmap = NULL;
- FILEDESC_XLOCK(fdp);
- /*
- * We now have new tables ready to go. Since we dropped the
- * filedesc lock to call malloc(), watch out for a race.
- */
- onfiles = fdp->fd_nfiles;
- if (onfiles >= nnfiles) {
- /* we lost the race, but that's OK */
- free(ntable, M_FILEDESC);
- if (nmap != NULL)
- free(nmap, M_FILEDESC);
- return;
- }
bcopy(fdp->fd_ofiles, ntable, onfiles * sizeof(*ntable));
bcopy(fdp->fd_ofileflags, nfileflags, onfiles);
otable = fdp->fd_ofiles;
More information about the svn-src-all
mailing list