Date: Fri, 22 Dec 2017 15:02:57 +0000
From: "Kamil Rytarowski" <[email protected]>
Message-ID: <[email protected]>
| ptrace: Partially undo PT_{READ,WRITE}_{I,D} and unbreak these commands
|
| The refactored code did not work and was generating EFAULT.
The only difference I see between the two (aside from an
#if defined(__HAVE_RAS)
which exists in the current version and is missing in the previous)
is that the earlier one is missing
UIO_SETUP_SYSSPACE(&uio);
and consequently is not initialising uio->uio_vmspace (or not
the same way, or properly) - the refactored code does
uio.uio_vmspace = *vm;
where vm is the final (6th) param to ptrace_doic() which it calls as
if ((error = ptrace_doio(l, t, lt, &piod, addr, &vm)) != 0)
where vm was declared as
struct vmspace *vm;
but is not otherwise initialised - fix this and the refactored code
would probably work.
kre