System hangs referring unfreed fasync_struct
Issue
- System hung with waiting for lock in sigio function in mpt.
void send_sigio(struct fown_struct *fown, int fd, int band)
{
struct task_struct *p;
int pid;
read_lock(&fown->lock); <<<
pid = fown->pid;
if (!pid)
goto out_unlock_fown;
read_lock(&tasklist_lock);
if (pid > 0) {
p = find_task_by_pid(pid);
if (p) {
send_sigio_to_task(p, fown, fd, band);
}
} else {
do_each_task_pid(-pid, PIDTYPE_PGID, p) {
send_sigio_to_task(p, fown, fd, band);
} while_each_task_pid(-pid, PIDTYPE_PGID, p);
}
read_unlock(&tasklist_lock);
out_unlock_fown:
read_unlock(&fown->lock);
}
Environment
- Red Hat Enterprise Linux 5 Update 4
- Architecture: x86_64
- Kernel Version: kernel-2.6.18-164.el5
- mptctl driver
Subscriber exclusive content
A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.