aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKonstantin Belousov <kib@FreeBSD.org>2021-09-24 00:14:56 +0000
committerMark Johnston <markj@FreeBSD.org>2022-07-25 20:07:02 +0000
commit7f83d23ecfce15cc83f51aa9d1c4f95c24448ab9 (patch)
tree4514a9f81ea4c56ce66afacb14c56b8efcae0e43
parentcd7c996c4ed94c195e14e33e6173e91e5bbc6f29 (diff)
downloadsrc-7f83d23ecfce15cc83f51aa9d1c4f95c24448ab9.tar.gz
src-7f83d23ecfce15cc83f51aa9d1c4f95c24448ab9.zip
aio_aqueue(): avoid ucred leak on failure path
Approved by: so Security: FreeBSD-SA-22:10.aio PR: 258698 Submitted by: sigsys@gmail.com (cherry picked from commit 45c2c7c484de7747014492b17ff89e323ee66496) (cherry picked from commit 76ed54dda74ffe8c7284cab10a4b30445a8db12f)
-rw-r--r--sys/kern/vfs_aio.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/kern/vfs_aio.c b/sys/kern/vfs_aio.c
index d68301d3d342..ba46a5031410 100644
--- a/sys/kern/vfs_aio.c
+++ b/sys/kern/vfs_aio.c
@@ -1616,7 +1616,7 @@ no_kqueue:
else
error = fo_aio_queue(fp, job);
if (error)
- goto aqueue_fail;
+ goto err4;
AIO_LOCK(ki);
job->jobflags &= ~KAIOCB_QUEUEING;
@@ -1637,6 +1637,8 @@ no_kqueue:
AIO_UNLOCK(ki);
return (0);
+err4:
+ crfree(job->cred);
aqueue_fail:
knlist_delete(&job->klist, curthread, 0);
if (fp)