Hello Friends,
Thanks to your help I have found the task structure of the target process
(denote it as TASK) and its group leader (TASK->tgid)
Now I did the following:
struct siginfo info;
..
info.si_signo = SIGTERM;
info.si_code = SI_QUEUE;
info.si_errno = 0; /* no recovery */
status = send_sig_info(SIGTERM, &info, task);
The result: both the host and the guest hang!
Can I use the kill function directly : kill (TASK->tgid, SIGTERM) ? This
function is a user-space one...
Best Regards,
the team
On Thu 06 Mar 13:28 2014 Paolo Bonzini wrote:
> Il 06/03/2014 11:31, Alexander Binun ha scritto:
> > Then - more questions :
> > 1. How can I access the Qemu process (relevant to a given VM) from
> > within in the kernel context (being in a kernel module) ?
>
> The struct pid for the VCPU is in the "pid" field of struct kvm_vcpu.
>
> From there if needed you can get the task (with pid_task) and the
> task's thread group leader (the task's group_leader), and send a signal
> to it.
>
> > 2. Should I uninitialize some internal structures for the VM being
> > killed ?
>
> No, it will happen automatically. When QEMU is terminated, the VM's
> file descriptor is closed and this frees all internal structures.
>
> > 3. My module detects malicious activities at a VCPU. How can one get the
> > VM owning this VCPU ?
>
> Field "kvm" in struct kvm_vcpu points to the struct kvm for the VM.
>
> Paolo
>