Tidy up some loose ends that bde pointed out. caddr_t bad, ok?

Move fill_kinfo_proc to before we copy the results instead of after
the copy and too late.

There is still more to do here.
This commit is contained in:
Peter Wemm 2002-09-07 22:31:44 +00:00
parent 1ed8cb4870
commit a9f9df5daf
3 changed files with 23 additions and 25 deletions

View File

@ -172,7 +172,7 @@ pecoff_coredump(register struct thread * td, register struct vnode * vp,
register struct ucred *cred = td->td_ucred;
struct proc *p = td->td_proc;
register struct vmspace *vm = p->p_vmspace;
caddr_t tempuser;
char *tempuser;
int error;
#ifdef PECOFF_DEBUG
struct vm_map *map;
@ -187,15 +187,14 @@ pecoff_coredump(register struct thread * td, register struct vnode * vp,
M_WAITOK | M_ZERO);
if (tempuser == NULL)
return (ENOMEM);
bcopy(p->p_uarea, tempuser, sizeof(struct user));
bcopy(td->td_frame,
tempuser + ctob(uarea_pages) +
((caddr_t) td->td_frame - (caddr_t) td->td_kstack),
sizeof(struct trapframe));
PROC_LOCK(p);
fill_kinfo_proc(p, &p->p_uarea->u_kproc);
PROC_UNLOCK(p);
bcopy(p->p_uarea, tempuser, sizeof(struct user));
bcopy(td->td_frame,
tempuser + ctob(uarea_pages) +
((caddr_t)td->td_frame - (caddr_t)td->td_kstack),
sizeof(struct trapframe));
#if PECOFF_DEBUG
fill_regs(td, &regs);
printf("EIP%x\n", regs.r_eip);
@ -205,7 +204,7 @@ pecoff_coredump(register struct thread * td, register struct vnode * vp,
ent = &map->header;
printf("%p %p %p\n", ent, ent->prev, ent->next);
#endif
error = vn_rdwr(UIO_WRITE, vp, (caddr_t) tempuser,
error = vn_rdwr(UIO_WRITE, vp, (caddr_t)tempuser,
ctob(uarea_pages + kstack_pages),
(off_t)0, UIO_SYSSPACE, IO_UNIT, cred, NOCRED,
(int *)NULL, td);

View File

@ -30,7 +30,6 @@
/* XXX we use functions that might not exist. */
#include "opt_compat.h"
#include "opt_kstack_pages.h"
#ifndef COMPAT_43
#error "Unable to compile Linux-emulator due to missing COMPAT_43 option!"
@ -732,7 +731,7 @@ linux_aout_coredump(struct thread *td, struct vnode *vp, off_t limit)
struct proc *p = td->td_proc;
struct ucred *cred = td->td_ucred;
struct vmspace *vm = p->p_vmspace;
caddr_t tempuser;
char *tempuser;
int error;
if (ctob((uarea_pages + kstack_pages) +
@ -742,15 +741,15 @@ linux_aout_coredump(struct thread *td, struct vnode *vp, off_t limit)
M_WAITOK | M_ZERO);
if (tempuser == NULL)
return (ENOMEM);
bcopy(p->p_uarea, tempuser, sizeof(struct user));
bcopy(td->td_frame,
tempuser + ctob(uarea_pages) +
((caddr_t) td->td_frame - (caddr_t) td->td_kstack),
sizeof(struct trapframe));
PROC_LOCK(p);
fill_kinfo_proc(p, &p->p_uarea->u_kproc);
PROC_UNLOCK(p);
error = vn_rdwr(UIO_WRITE, vp, (caddr_t) tempuser,
bcopy(p->p_uarea, tempuser, sizeof(struct user));
bcopy(td->td_frame,
tempuser + ctob(uarea_pages) +
((caddr_t)td->td_frame - (caddr_t)td->td_kstack),
sizeof(struct trapframe));
error = vn_rdwr(UIO_WRITE, vp, (caddr_t)tempuser,
ctob(uarea_pages + kstack_pages),
(off_t)0, UIO_SYSSPACE, IO_UNIT, cred, NOCRED,
(int *)NULL, td);
@ -762,7 +761,7 @@ linux_aout_coredump(struct thread *td, struct vnode *vp, off_t limit)
IO_UNIT | IO_DIRECT, cred, NOCRED, (int *) NULL, td);
if (error == 0)
error = vn_rdwr_inchunks(UIO_WRITE, vp,
(caddr_t) trunc_page(USRSTACK - ctob(vm->vm_ssize)),
(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,

View File

@ -272,7 +272,7 @@ aout_coredump(td, vp, limit)
struct proc *p = td->td_proc;
register struct ucred *cred = td->td_ucred;
register struct vmspace *vm = p->p_vmspace;
caddr_t tempuser;
char *tempuser;
int error;
if (ctob((uarea_pages + kstack_pages)
@ -282,15 +282,15 @@ aout_coredump(td, vp, limit)
M_WAITOK | M_ZERO);
if (tempuser == NULL)
return (ENOMEM);
bcopy(p->p_uarea, tempuser, sizeof(struct user));
bcopy(td->td_frame,
tempuser + ctob(uarea_pages) +
((caddr_t) td->td_frame - (caddr_t) td->td_kstack),
sizeof(struct trapframe));
PROC_LOCK(p);
fill_kinfo_proc(p, &p->p_uarea->u_kproc);
PROC_UNLOCK(p);
error = vn_rdwr(UIO_WRITE, vp, (caddr_t) tempuser,
bcopy(p->p_uarea, tempuser, sizeof(struct user));
bcopy(td->td_frame,
tempuser + ctob(uarea_pages) +
((caddr_t)td->td_frame - (caddr_t)td->td_kstack),
sizeof(struct trapframe));
error = vn_rdwr(UIO_WRITE, vp, (caddr_t)tempuser,
ctob(uarea_pages + kstack_pages),
(off_t)0, UIO_SYSSPACE, IO_UNIT, cred, NOCRED,
(int *)NULL, td);
@ -302,7 +302,7 @@ aout_coredump(td, vp, limit)
IO_UNIT | IO_DIRECT, cred, NOCRED, (int *) NULL, td);
if (error == 0)
error = vn_rdwr_inchunks(UIO_WRITE, vp,
(caddr_t) trunc_page(USRSTACK - ctob(vm->vm_ssize)),
(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,