diff options
author | Mikolaj Golub <trociny@FreeBSD.org> | 2013-07-01 03:27:14 +0000 |
---|---|---|
committer | Mikolaj Golub <trociny@FreeBSD.org> | 2013-07-01 03:27:14 +0000 |
commit | 9e89077c6547ada9a34cc4a248efded303ae52d4 (patch) | |
tree | dc9455a1ebc5faddceb1116aa45104d799131514 /sys/kern/kern_descrip.c | |
parent | eee4072f130f15dc6e10561f3a44960ce7faf473 (diff) | |
download | src-9e89077c6547ada9a34cc4a248efded303ae52d4.tar.gz src-9e89077c6547ada9a34cc4a248efded303ae52d4.zip |
Plug up the lock lock leakage when exporting to a short buffer.
Reported by: Alexander Leidinger
Submitted by: mjg
MFC after: 1 week
Notes
Notes:
svn path=/head/; revision=252436
Diffstat (limited to 'sys/kern/kern_descrip.c')
-rw-r--r-- | sys/kern/kern_descrip.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/kern/kern_descrip.c b/sys/kern/kern_descrip.c index e760fe57a074..fb264ba39358 100644 --- a/sys/kern/kern_descrip.c +++ b/sys/kern/kern_descrip.c @@ -3272,6 +3272,8 @@ export_fd_to_sb(void *data, int type, int fd, int fflags, int refcnt, if (efbuf->remainder < kif->kf_structsize) { /* Terminate export. */ efbuf->remainder = 0; + if (efbuf->fdp != NULL && !locked) + FILEDESC_SLOCK(efbuf->fdp); return (0); } efbuf->remainder -= kif->kf_structsize; |