On 10/5/07, Mohammad M Molla <[EMAIL PROTECTED]> wrote:
>
> kill_proc(kthread->thread->pid, SIGKILL, 1);
>
The above is one way of sending a SIGKILL signal - from within the kernel.
> I am trying to kill the thread by sending signal from userspace with "kill
> -p <pid>"
But your way above is from userspace, and therefore it needs a
userspace context to start with.
As I read the implementation of daemonize() (kernel/exit.c):
void daemonize(const char *name, ...)
{
/*
* If we were started as result of loading a module, close all of the
* user space pages. We don't need them, and if we didn't close them
* they would be locked into memory.
*/
exit_mm(current);
So it seems that the above completely removed all the userspace stuff
associated with the current kernel module....but wait....
reparent_to_kthreadd();
}
kthreadd? So this means that the current kernel module should have a
userspace context of kthreadd to run. In my FC7, "ps -ef" will list
a kernel thread named as "kthreadd". So I therefore conclude that
your way of sending a signal should be:
kill -9 PID where PID is the PID of the kthreadd process listed in "ps -ef"?
So if after daemonize(), the userspace becomes kthreadd. But
becoming kthreadd also set all signals to be ignored, as shown below.
First the kthreadd kernel thread is created in rest_init() using
kthread_create(kthreadd()...) API.
And then looking into how kthreadd() is written?
kernel/kthread.c:
int kthreadd(void *unused)
{
struct task_struct *tsk = current;
/* Setup a clean context for our children to inherit. */
set_task_comm(tsk, "kthreadd");
ignore_signals(tsk);
>From above we can see that kthreadd() called ignore_signals():
And inside the kthreadd():
int kthreadd(void *unused)
{
struct task_struct *tsk = current;
/* Setup a clean context for our children to inherit. */
set_task_comm(tsk, "kthreadd");
ignore_signals(tsk);
And ignore_signal() will set ALL signal filter to SIG_IGN, including SIGKILL.
--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to [EMAIL PROTECTED]
Please read the FAQ at http://kernelnewbies.org/FAQ