Article 5KQY1 pid_task() causes kernel panic, linux kernel 5.4

pid_task() causes kernel panic, linux kernel 5.4

by
pranami.nits
from LinuxQuestions.org on (#5KQY1)
Hi All,

I am trying to send a signal from the kernel space to the user space.
I have the below function and I am seeing a kernel panic.

[ 5230.132362] Kernel panic - not syncing: stack-protector: Kernel stack is corrupted in: prog_irq_handler+0x1d4/0x2cc [prog_mon]
[ 5230.146795] ---[ end Kernel panic - not syncing: stack-protector: Kernel stack is corrupted in: prog_irq_handler+0x1d4/0x2cc

Upon debugging some more, I found that the source of the panic is from the below function:
t = pid_task(find_pid_ns(id, &init_pid_ns), PIDTYPE_PID);
Referencing the value of "t" seems to cause an exception, resulting in a kernel panic.

Is there any known issue with the kernel 5.4 wrt the pid_task().
Any help will be appreciated.

Full code below:

send_signal(int val, int id, int sig)
{
struct kernel_siginfo info;
struct task_struct *t;
int ret;

ret = 0;

if ((id > 0) && (sig > 0)) {
memset(&info, 0, sizeof(struct siginfo));
info.si_signo = sig;

/* Using SI_KERNEL here results in real_time data not getting delivered to the user space signal handler */
info.si_code = SI_QUEUE;

/* Real time signals may have 32 bits of data */
info.si_int = val;
info._sifields._rt._sigval.sival_int = val;
info.si_errno = 0;

rcu_read_lock();
t = pid_task(find_pid_ns(id, &init_pid_ns), PIDTYPE_PID);
if(t == NULL) {
printk(KERN_ERR "%s: Invalid user handler PID %d\n", module_name, id);
rcu_read_unlock();
return -ENODEV;
}
ret = send_sig_info(sig, &info, t);
rcu_read_unlock();

if (ret < 0)
printk(KERN_INFO "%s: Failed to signal with data %d to user space\n", module_name, val);
}

return ret
}latest?d=yIl2AUoC8zA latest?i=of_lU1rG4dw:AmdxPdX33ZY:F7zBnMy latest?i=of_lU1rG4dw:AmdxPdX33ZY:V_sGLiP latest?d=qj6IDK7rITs latest?i=of_lU1rG4dw:AmdxPdX33ZY:gIN9vFwof_lU1rG4dw
External Content
Source RSS or Atom Feed
Feed Location https://feeds.feedburner.com/linuxquestions/latest
Feed Title LinuxQuestions.org
Feed Link https://www.linuxquestions.org/questions/
Reply 0 comments