Showing error 1696

User: Jiri Slaby
Error type: Double Unlock
Error type description: Some lock is unlocked twice unintentionally in a sequence
File location: arch/x86/mm/fault.c
Line in file: 777
Project: Linux Kernel
Project version: 2.6.28
Tools: Smatch (1.59)
Entered: 2013-09-10 15:16:58 UTC


Source:

747                tsk->maj_flt++;
748        else
749                tsk->min_flt++;
750
751#ifdef CONFIG_X86_32
752        /*
753         * Did it hit the DOS screen memory VA from vm86 mode?
754         */
755        if (v8086_mode(regs)) {
756                unsigned long bit = (address - 0xA0000) >> PAGE_SHIFT;
757                if (bit < 32)
758                        tsk->thread.screen_bitmap |= 1 << bit;
759        }
760#endif
761        up_read(&mm->mmap_sem);
762        return;
763
764/*
765 * Something tried to access memory that isn't in our memory map..
766 * Fix it, but check if it's kernel or user first..
767 */
768bad_area:
769        up_read(&mm->mmap_sem);
770
771bad_area_nosemaphore:
772        /* User mode accesses just cause a SIGSEGV */
773        if (error_code & PF_USER) {
774                /*
775                 * It's possible to have interrupts off here.
776                 */
777                local_irq_enable();
778
779                /*
780                 * Valid to do another page fault here because this one came
781                 * from user space.
782                 */
783                if (is_prefetch(regs, address, error_code))
784                        return;
785
786                if (is_errata100(regs, address))
787                        return;
Show full sources