summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2017-06-26 12:17:04 +0000
committerkib <kib@FreeBSD.org>2017-06-26 12:17:04 +0000
commit02ba73c8a2361d69d4c4d14dd7775238eff35417 (patch)
tree44631199fbd7975420ff4bc2ebda25a93ab23277
parent2b4694df373f6f85f9cf848288ed9cf7136e51c0 (diff)
downloadFreeBSD-src-02ba73c8a2361d69d4c4d14dd7775238eff35417.zip
FreeBSD-src-02ba73c8a2361d69d4c4d14dd7775238eff35417.tar.gz
MFC r320108:
Allow negative aio_offset only for the read and write LIO ops on device nodes. Approved by: re (marius)
-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 1e01ccd..3c5ca1f 100644
--- a/sys/kern/vfs_aio.c
+++ b/sys/kern/vfs_aio.c
@@ -1550,7 +1550,9 @@ aio_aqueue(struct thread *td, struct aiocb *ujob, struct aioliojob *lj,
goto aqueue_fail;
}
- if (opcode != LIO_SYNC && job->uaiocb.aio_offset == -1LL) {
+ if ((opcode == LIO_READ || opcode == LIO_WRITE) &&
+ job->uaiocb.aio_offset < 0 &&
+ (fp->f_vnode == NULL || fp->f_vnode->v_type != VCHR)) {
error = EINVAL;
goto aqueue_fail;
}
OpenPOWER on IntegriCloud