Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 13 Dec 2020 00:04:30 +0000 (UTC)
From:      Alan Somers <asomers@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r368600 - projects/aio_writev/sys/kern
Message-ID:  <202012130004.0BD04UkV085397@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: asomers
Date: Sun Dec 13 00:04:30 2020
New Revision: 368600
URL: https://svnweb.freebsd.org/changeset/base/368600

Log:
  aio_writev: don't corrupt the AIO proc's td_ucred on error

Modified:
  projects/aio_writev/sys/kern/vfs_aio.c

Modified: projects/aio_writev/sys/kern/vfs_aio.c
==============================================================================
--- projects/aio_writev/sys/kern/vfs_aio.c	Sat Dec 12 23:59:05 2020	(r368599)
+++ projects/aio_writev/sys/kern/vfs_aio.c	Sun Dec 13 00:04:30 2020	(r368600)
@@ -779,10 +779,8 @@ aio_process_rw(struct kaiocb *job)
 	if (job->uaiocb.aio_lio_opcode == LIO_WRITEV) {
 		error = copyinuio(job->uaiocb.aio_iov, job->uaiocb.aio_iovcnt,
 		    &auiop);
-		if (error) {
-			aio_complete(job, -1, error);
-			return;
-		}
+		if (error)
+			goto out;
 	} else {
 		aiov.iov_base = (void *)(uintptr_t)cb->aio_buf;
 		aiov.iov_len = cb->aio_nbytes;
@@ -839,9 +837,10 @@ aio_process_rw(struct kaiocb *job)
 	}
 
 	cnt -= auiop->uio_resid;
-	td->td_ucred = td_savedcred;
 	if (job->uaiocb.aio_lio_opcode == LIO_WRITEV)
 		free(auiop, M_IOV);
+out:
+	td->td_ucred = td_savedcred;
 	if (error)
 		aio_complete(job, -1, error);
 	else



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202012130004.0BD04UkV085397>