Showing error 1229

User: Jiri Slaby
Error type: Leaving function in locked state
Error type description: Some lock is not unlocked on all paths of a function, so it is leaked
File location: arch/x86/kernel/efi_64.c
Line in file: 87
Project: Linux Kernel
Project version: 2.6.28
Tools: Stanse (1.2)
Entered: 2012-05-21 20:30:05 UTC


Source:

 57
 58static void __init early_runtime_code_mapping_set_exec(int executable)
 59{
 60        efi_memory_desc_t *md;
 61        void *p;
 62
 63        if (!(__supported_pte_mask & _PAGE_NX))
 64                return;
 65
 66        /* Make EFI runtime service code area executable */
 67        for (p = memmap.map; p < memmap.map_end; p += memmap.desc_size) {
 68                md = p;
 69                if (md->type == EFI_RUNTIME_SERVICES_CODE) {
 70                        unsigned long end;
 71                        end = md->phys_addr + (md->num_pages << EFI_PAGE_SHIFT);
 72                        early_mapping_set_exec(md->phys_addr, end, executable);
 73                }
 74        }
 75}
 76
 77void __init efi_call_phys_prelog(void)
 78{
 79        unsigned long vaddress;
 80
 81        early_runtime_code_mapping_set_exec(1);
 82        local_irq_save(efi_flags);
 83        vaddress = (unsigned long)__va(0x0UL);
 84        save_pgd = *pgd_offset_k(0x0UL);
 85        set_pgd(pgd_offset_k(0x0UL), *pgd_offset_k(vaddress));
 86        __flush_tlb_all();
 87}
 88
 89void __init efi_call_phys_epilog(void)
 90{
 91        /*
 92         * After the lock is released, the original page table is restored.
 93         */
 94        set_pgd(pgd_offset_k(0x0UL), save_pgd);
 95        __flush_tlb_all();
 96        local_irq_restore(efi_flags);
 97        early_runtime_code_mapping_set_exec(0);
Show full sources