On 07/11/14 10:57, And Dinh wrote:
how does it get page fault? I made sure the output buffer at
the user space is properly allocated with the correct Âsize.
When page fault, do I have no choice but abort? It seems
calling the hypercall again does not solve it.
And nothing guarentees that your userspace process is in context
when Xen is running, or that the kernel hasn't played with the
pagetables behind your back.
You must use the hypercall buffer mechanism to avoid issues like
this. See the hypercall implementations in libxc. In Xen, you must
have a XEN_GUEST_HANDLE() which is an opaque reference to your
buffer, and use copy_{to,from}_guest() rather than {to/from}_user(),
which is generally only safe for kernel addresses.
~Andrew
|