Showing error 901

User: Jiri Slaby
Error type: Double Lock
Error type description: Some lock is locked twice unintentionally in a sequence
File location: mm/memory.c
Line in file: 567
Project: Linux Kernel
Project version: 2.6.28
Tools: Undetermined 1
Entered: 2012-02-27 21:22:42 UTC


Source:

 537        /*
 538         * If it's a shared mapping, mark it clean in
 539         * the child
 540         */
 541        if (vm_flags & VM_SHARED)
 542                pte = pte_mkclean(pte);
 543        pte = pte_mkold(pte);
 544
 545        page = vm_normal_page(vma, addr, pte);
 546        if (page) {
 547                get_page(page);
 548                page_dup_rmap(page, vma, addr);
 549                rss[!!PageAnon(page)]++;
 550        }
 551
 552out_set_pte:
 553        set_pte_at(dst_mm, addr, dst_pte, pte);
 554}
 555
 556static int copy_pte_range(struct mm_struct *dst_mm, struct mm_struct *src_mm,
 557                pmd_t *dst_pmd, pmd_t *src_pmd, struct vm_area_struct *vma,
 558                unsigned long addr, unsigned long end)
 559{
 560        pte_t *src_pte, *dst_pte;
 561        spinlock_t *src_ptl, *dst_ptl;
 562        int progress = 0;
 563        int rss[2];
 564
 565again:
 566        rss[1] = rss[0] = 0;
 567        dst_pte = pte_alloc_map_lock(dst_mm, dst_pmd, addr, &dst_ptl);
 568        if (!dst_pte)
 569                return -ENOMEM;
 570        src_pte = pte_offset_map_nested(src_pmd, addr);
 571        src_ptl = pte_lockptr(src_mm, src_pmd);
 572        spin_lock_nested(src_ptl, SINGLE_DEPTH_NESTING);
 573        arch_enter_lazy_mmu_mode();
 574
 575        do {
 576                /*
 577                 * We are holding two locks at this point - either of them
Show full sources