diff options
author | kib <kib@FreeBSD.org> | 2017-06-26 12:17:04 +0000 |
---|---|---|
committer | kib <kib@FreeBSD.org> | 2017-06-26 12:17:04 +0000 |
commit | 02ba73c8a2361d69d4c4d14dd7775238eff35417 (patch) | |
tree | 44631199fbd7975420ff4bc2ebda25a93ab23277 | |
parent | 2b4694df373f6f85f9cf848288ed9cf7136e51c0 (diff) | |
download | FreeBSD-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.c | 4 |
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; } |