diff options
-rw-r--r-- | sys/compat/pecoff/imgact_pecoff.c | 4 | ||||
-rw-r--r-- | sys/i386/linux/linux_sysvec.c | 2 | ||||
-rw-r--r-- | sys/kern/imgact_aout.c | 2 | ||||
-rw-r--r-- | sys/kern/imgact_elf.c | 2 | ||||
-rw-r--r-- | sys/kern/vfs_vnops.c | 10 | ||||
-rw-r--r-- | sys/sys/vnode.h | 4 |
6 files changed, 13 insertions, 11 deletions
diff --git a/sys/compat/pecoff/imgact_pecoff.c b/sys/compat/pecoff/imgact_pecoff.c index 1049d39..6a91b13 100644 --- a/sys/compat/pecoff/imgact_pecoff.c +++ b/sys/compat/pecoff/imgact_pecoff.c @@ -214,14 +214,14 @@ pecoff_coredump(register struct thread * td, register struct vnode * vp, error = vn_rdwr_inchunks(UIO_WRITE, vp, vm->vm_daddr, (int)ctob(vm->vm_dsize), (off_t)ctob((uarea_pages + kstack_pages)), - UIO_USERSPACE, IO_UNIT, cred, NOCRED, (int *)NULL, td); + UIO_USERSPACE, IO_UNIT, cred, NOCRED, NULL, td); if (error == 0) error = vn_rdwr_inchunks(UIO_WRITE, vp, (caddr_t)trunc_page(USRSTACK - ctob(vm->vm_ssize)), round_page(ctob(vm->vm_ssize)), (off_t)ctob((uarea_pages + kstack_pages)) + ctob(vm->vm_dsize), - UIO_USERSPACE, IO_UNIT, cred, NOCRED, (int *)NULL, td); + UIO_USERSPACE, IO_UNIT, cred, NOCRED, NULL, td); return (error); } diff --git a/sys/i386/linux/linux_sysvec.c b/sys/i386/linux/linux_sysvec.c index 3cc8f55..5972a57 100644 --- a/sys/i386/linux/linux_sysvec.c +++ b/sys/i386/linux/linux_sysvec.c @@ -769,7 +769,7 @@ linux_aout_coredump(struct thread *td, struct vnode *vp, off_t limit) round_page(ctob(vm->vm_ssize)), (off_t)ctob(uarea_pages + kstack_pages) + ctob(vm->vm_dsize), UIO_USERSPACE, - IO_UNIT | IO_DIRECT, cred, NOCRED, (int *) NULL, td); + IO_UNIT | IO_DIRECT, cred, NOCRED, NULL, td); return (error); } /* diff --git a/sys/kern/imgact_aout.c b/sys/kern/imgact_aout.c index 6bad705..803f765 100644 --- a/sys/kern/imgact_aout.c +++ b/sys/kern/imgact_aout.c @@ -307,7 +307,7 @@ aout_coredump(td, vp, limit) ctob(vm->vm_ssize)), round_page(ctob(vm->vm_ssize)), (off_t)ctob(uarea_pages + kstack_pages) + ctob(vm->vm_dsize), UIO_USERSPACE, - IO_UNIT | IO_DIRECT, cred, NOCRED, (int *) NULL, td); + IO_UNIT | IO_DIRECT, cred, NOCRED, NULL, td); return (error); } diff --git a/sys/kern/imgact_elf.c b/sys/kern/imgact_elf.c index e0b27c0..ef52230 100644 --- a/sys/kern/imgact_elf.c +++ b/sys/kern/imgact_elf.c @@ -970,7 +970,7 @@ __elfN(coredump)(td, vp, limit) error = vn_rdwr_inchunks(UIO_WRITE, vp, (caddr_t)(uintptr_t)php->p_vaddr, php->p_filesz, offset, UIO_USERSPACE, - IO_UNIT | IO_DIRECT, cred, NOCRED, (int *)NULL, + IO_UNIT | IO_DIRECT, cred, NOCRED, NULL, curthread); /* XXXKSE */ if (error != 0) break; diff --git a/sys/kern/vfs_vnops.c b/sys/kern/vfs_vnops.c index 4091130..d2438bb 100644 --- a/sys/kern/vfs_vnops.c +++ b/sys/kern/vfs_vnops.c @@ -461,16 +461,17 @@ vn_rdwr_inchunks(rw, vp, base, len, offset, segflg, ioflg, active_cred, enum uio_rw rw; struct vnode *vp; caddr_t base; - int len; + size_t len; off_t offset; enum uio_seg segflg; int ioflg; struct ucred *active_cred; struct ucred *file_cred; - int *aresid; + size_t *aresid; struct thread *td; { int error = 0; + int iaresid; do { int chunk; @@ -487,8 +488,9 @@ vn_rdwr_inchunks(rw, vp, base, len, offset, segflg, ioflg, active_cred, chunk = len; if (rw != UIO_READ && vp->v_type == VREG) bwillwrite(); + iaresid = 0; error = vn_rdwr(rw, vp, base, chunk, offset, segflg, - ioflg, active_cred, file_cred, aresid, td); + ioflg, active_cred, file_cred, &iaresid, td); len -= chunk; /* aresid calc already includes length */ if (error) break; @@ -497,7 +499,7 @@ vn_rdwr_inchunks(rw, vp, base, len, offset, segflg, ioflg, active_cred, uio_yield(); } while (len); if (aresid) - *aresid += len; + *aresid = len + iaresid; return (error); } diff --git a/sys/sys/vnode.h b/sys/sys/vnode.h index 26b3abd..9d5c2db 100644 --- a/sys/sys/vnode.h +++ b/sys/sys/vnode.h @@ -662,8 +662,8 @@ int vn_rdwr(enum uio_rw rw, struct vnode *vp, caddr_t base, struct ucred *active_cred, struct ucred *file_cred, int *aresid, struct thread *td); int vn_rdwr_inchunks(enum uio_rw rw, struct vnode *vp, caddr_t base, - int len, off_t offset, enum uio_seg segflg, int ioflg, - struct ucred *active_cred, struct ucred *file_cred, int *aresid, + size_t len, off_t offset, enum uio_seg segflg, int ioflg, + struct ucred *active_cred, struct ucred *file_cred, size_t *aresid, struct thread *td); int vn_stat(struct vnode *vp, struct stat *sb, struct ucred *active_cred, struct ucred *file_cred, struct thread *td); |