Showing error 1169

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: 1833
Project: Linux Kernel
Project version: 2.6.28
Tools: Stanse (1.2)
Entered: 2012-04-30 10:52:00 UTC


Source:

1803                                ka->sa.sa_handler = SIG_DFL;
1804
1805                        break; /* will return non-zero "signr" value */
1806                }
1807
1808                /*
1809                 * Now we are doing the default action for this signal.
1810                 */
1811                if (sig_kernel_ignore(signr)) /* Default is nothing. */
1812                        continue;
1813
1814                /*
1815                 * Global init gets no signals it doesn't want.
1816                 */
1817                if (unlikely(signal->flags & SIGNAL_UNKILLABLE) &&
1818                    !signal_group_exit(signal))
1819                        continue;
1820
1821                if (sig_kernel_stop(signr)) {
1822                        /*
1823                         * The default action is to stop all threads in
1824                         * the thread group.  The job control signals
1825                         * do nothing in an orphaned pgrp, but SIGSTOP
1826                         * always works.  Note that siglock needs to be
1827                         * dropped during the call to is_orphaned_pgrp()
1828                         * because of lock ordering with tasklist_lock.
1829                         * This allows an intervening SIGCONT to be posted.
1830                         * We need to check for that and bail out if necessary.
1831                         */
1832                        if (signr != SIGSTOP) {
1833                                spin_unlock_irq(&sighand->siglock);
1834
1835                                /* signals can be posted during this window */
1836
1837                                if (is_current_pgrp_orphaned())
1838                                        goto relock;
1839
1840                                spin_lock_irq(&sighand->siglock);
1841                        }
1842
1843                        if (likely(do_signal_stop(info->si_signo))) {
Show full sources