aboutsummaryrefslogtreecommitdiff
path: root/sys/kern/kern_descrip.c
diff options
context:
space:
mode:
authorAlfred Perlstein <alfred@FreeBSD.org>2002-02-01 19:19:54 +0000
committerAlfred Perlstein <alfred@FreeBSD.org>2002-02-01 19:19:54 +0000
commit2b39743941004635e56bb11606fe8cdeec70afce (patch)
tree635009af09bc818e07f437d6a56351ec5feeefdc /sys/kern/kern_descrip.c
parentfcce64f0cf767fc25c2e8e6a36e95053e797d594 (diff)
downloadsrc-2b39743941004635e56bb11606fe8cdeec70afce.tar.gz
src-2b39743941004635e56bb11606fe8cdeec70afce.zip
Avoid lock order reversal filedesc/Giant when calling FREE() in fdalloc
by unlocking the filedesc before calling FREE(). Submitted by: bde
Notes
Notes: svn path=/head/; revision=90088
Diffstat (limited to 'sys/kern/kern_descrip.c')
-rw-r--r--sys/kern/kern_descrip.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/kern/kern_descrip.c b/sys/kern/kern_descrip.c
index 531b67f5dad8..7628d5aeef9a 100644
--- a/sys/kern/kern_descrip.c
+++ b/sys/kern/kern_descrip.c
@@ -956,9 +956,11 @@ fdalloc(td, want, result)
fdp->fd_nfiles = nfiles;
fdexpand++;
if (oldofile != NULL) {
+ FILEDESC_UNLOCK(fdp);
mtx_lock(&Giant);
FREE(oldofile, M_FILEDESC);
mtx_unlock(&Giant);
+ FILEDESC_LOCK(fdp);
}
}
return (0);