Showing error 1171

User: Jiri Slaby
Error type: Double Unlock
Error type description: Some lock is unlocked twice unintentionally in a sequence
File location: kernel/signal.c
Line in file: 1882
Project: Linux Kernel
Project version: 2.6.28
Tools: Stanse (1.2)
Entered: 2012-04-30 10:52:00 UTC


Source:

1852                        continue;
1853                }
1854
1855                spin_unlock_irq(&sighand->siglock);
1856
1857                /*
1858                 * Anything else is fatal, maybe with a core dump.
1859                 */
1860                current->flags |= PF_SIGNALED;
1861
1862                if (sig_kernel_coredump(signr)) {
1863                        if (print_fatal_signals)
1864                                print_fatal_signal(regs, info->si_signo);
1865                        /*
1866                         * If it was able to dump core, this kills all
1867                         * other threads in the group and synchronizes with
1868                         * their demise.  If we lost the race with another
1869                         * thread getting here, it set group_exit_code
1870                         * first and our do_group_exit call below will use
1871                         * that value and ignore the one we pass it.
1872                         */
1873                        do_coredump(info->si_signo, info->si_signo, regs);
1874                }
1875
1876                /*
1877                 * Death signals, no core dump.
1878                 */
1879                do_group_exit(info->si_signo);
1880                /* NOTREACHED */
1881        }
1882        spin_unlock_irq(&sighand->siglock);
1883        return signr;
1884}
1885
1886void exit_signals(struct task_struct *tsk)
1887{
1888        int group_stop = 0;
1889        struct task_struct *t;
1890
1891        if (thread_group_empty(tsk) || signal_group_exit(tsk->signal)) {
1892                tsk->flags |= PF_EXITING;
Show full sources