[kbuild] [aa:userfault15 21/28] mm/userfaultfd.c:43 mcopy_atomic_pte() warn: passing the wrong variable to kunmap()
tree: git://git.kernel.org/pub/scm/linux/kernel/git/andrea/aa.git userfault15 head: 86ed496765a4ba93cdfead37329278e489eadc47 commit: df81bb0f6f5f491550c4ea7e90a281dbd2ab [21/28] userfaultfd: mcopy_atomic|mfill_zeropage: UFFDIO_COPY|UFFDIO_ZEROPAGE preparation mm/userfaultfd.c:43 mcopy_atomic_pte() warn: passing the wrong variable to kunmap() mm/userfaultfd.c:86 mcopy_atomic_pte() warn: passing the wrong variable to kunmap() It should be unmapping "page". kmap() and kmap_atomic() are tricky that way. git remote add aa git://git.kernel.org/pub/scm/linux/kernel/git/andrea/aa.git git remote update aa git checkout df81bb0f6f5f491550c4ea7e90a281dbd2ab vim +43 mm/userfaultfd.c df81bb0f Andrea Arcangeli 2015-02-13 37 df81bb0f Andrea Arcangeli 2015-02-13 38page_kaddr = kmap(page); df81bb0f Andrea Arcangeli 2015-02-13 39ret = -EFAULT; df81bb0f Andrea Arcangeli 2015-02-13 40if (copy_from_user(page_kaddr, (const void __user *) src_addr, df81bb0f Andrea Arcangeli 2015-02-13 41 PAGE_SIZE)) df81bb0f Andrea Arcangeli 2015-02-13 42goto out_kunmap_release; df81bb0f Andrea Arcangeli 2015-02-13 @43kunmap(page_kaddr); df81bb0f Andrea Arcangeli 2015-02-13 44 df81bb0f Andrea Arcangeli 2015-02-13 45/* df81bb0f Andrea Arcangeli 2015-02-13 46 * The memory barrier inside __SetPageUptodate makes sure that df81bb0f Andrea Arcangeli 2015-02-13 47 * preceeding stores to the page contents become visible before df81bb0f Andrea Arcangeli 2015-02-13 48 * the set_pte_at() write. df81bb0f Andrea Arcangeli 2015-02-13 49 */ df81bb0f Andrea Arcangeli 2015-02-13 50__SetPageUptodate(page); df81bb0f Andrea Arcangeli 2015-02-13 51 df81bb0f Andrea Arcangeli 2015-02-13 52ret = -ENOMEM; df81bb0f Andrea Arcangeli 2015-02-13 53if (mem_cgroup_try_charge(page, dst_mm, GFP_KERNEL, &memcg)) df81bb0f Andrea Arcangeli 2015-02-13 54goto out_release; df81bb0f Andrea Arcangeli 2015-02-13 55 df81bb0f Andrea Arcangeli 2015-02-13 56_dst_pte = mk_pte(page, dst_vma->vm_page_prot); df81bb0f Andrea Arcangeli 2015-02-13 57if (dst_vma->vm_flags & VM_WRITE) df81bb0f Andrea Arcangeli 2015-02-13 58_dst_pte = pte_mkwrite(pte_mkdirty(_dst_pte)); df81bb0f Andrea Arcangeli 2015-02-13 59 df81bb0f Andrea Arcangeli 2015-02-13 60ret = -EEXIST; df81bb0f Andrea Arcangeli 2015-02-13 61dst_pte = pte_offset_map_lock(dst_mm, dst_pmd, dst_addr, &ptl); df81bb0f Andrea Arcangeli 2015-02-13 62if (!pte_none(*dst_pte)) df81bb0f Andrea Arcangeli 2015-02-13 63goto out_release_uncharge_unlock; df81bb0f Andrea Arcangeli 2015-02-13 64 df81bb0f Andrea Arcangeli 2015-02-13 65inc_mm_counter(dst_mm, MM_ANONPAGES); df81bb0f Andrea Arcangeli 2015-02-13 66page_add_new_anon_rmap(page, dst_vma, dst_addr); df81bb0f Andrea Arcangeli 2015-02-13 67mem_cgroup_commit_charge(page, memcg, false); df81bb0f Andrea Arcangeli 2015-02-13 68 lru_cache_add_active_or_unevictable(page, dst_vma); df81bb0f Andrea Arcangeli 2015-02-13 69 df81bb0f Andrea Arcangeli 2015-02-13 70set_pte_at(dst_mm, dst_addr, dst_pte, _dst_pte); df81bb0f Andrea Arcangeli 2015-02-13 71 df81bb0f Andrea Arcangeli 2015-02-13 72/* No need to invalidate - it was non-present before */ df81bb0f Andrea Arcangeli 2015-02-13 73update_mmu_cache(dst_vma, dst_addr, dst_pte); df81bb0f Andrea Arcangeli 2015-02-13 74 df81bb0f Andrea Arcangeli 2015-02-13 75pte_unmap_unlock(dst_pte, ptl); df81bb0f Andrea Arcangeli 2015-02-13 76ret = 0; df81bb0f Andrea Arcangeli 2015-02-13 77 out: df81bb0f Andrea Arcangeli 2015-02-13 78return ret; df81bb0f Andrea Arcangeli 2015-02-13 79 out_release_uncharge_unlock: df81bb0f Andrea Arcangeli 2015-02-13 80pte_unmap_unlock(dst_pte, ptl); df81bb0f Andrea Arcangeli 2015-02-13 81mem_cgroup_cancel_charge(page, memcg); df81bb0f Andrea Arcangeli 2015-02-13 82 out_release: df81bb0f Andrea Arcangeli 2015-02-13 83page_cache_release(page); df81bb0f Andrea Arcangeli 2015-02-13 84goto out; df81bb0f Andrea Arcangeli 2015-02-13 85 out_kunmap_release: df81bb0f Andrea Arcangeli 2015-02-13 @86kunmap(page_kaddr); df81bb0f Andrea Arcangeli 2015-02-13 87goto out_release; df81bb0f Andrea Arcangeli 2015-02-13 88 } df81bb0f Andrea Arcangeli 2015-02-13 89 --- 0-DAY kernel test infrastructureOpen Source Technology Center http://lists.01.org/mailman/listinfo/kbuild Intel Corporation ___ kbuild mailing list kbuild@lists.01.org https://lists.01.org/mailman/listinfo/kbuild
[kbuild] [aa:userfault15 21/28] mm/userfaultfd.c:43 mcopy_atomic_pte() warn: passing the wrong variable to kunmap()
TO: Andrea Arcangeli tree: git://git.kernel.org/pub/scm/linux/kernel/git/andrea/aa.git userfault15 head: 86ed496765a4ba93cdfead37329278e489eadc47 commit: df81bb0f6f5f491550c4ea7e90a281dbd2ab [21/28] userfaultfd: mcopy_atomic|mfill_zeropage: UFFDIO_COPY|UFFDIO_ZEROPAGE preparation :: branch date: 2 hours ago :: commit date: 2 hours ago mm/userfaultfd.c:43 mcopy_atomic_pte() warn: passing the wrong variable to kunmap() mm/userfaultfd.c:86 mcopy_atomic_pte() warn: passing the wrong variable to kunmap() git remote add aa git://git.kernel.org/pub/scm/linux/kernel/git/andrea/aa.git git remote update aa git checkout df81bb0f6f5f491550c4ea7e90a281dbd2ab vim +43 mm/userfaultfd.c df81bb0f Andrea Arcangeli 2015-02-13 37 df81bb0f Andrea Arcangeli 2015-02-13 38page_kaddr = kmap(page); df81bb0f Andrea Arcangeli 2015-02-13 39ret = -EFAULT; df81bb0f Andrea Arcangeli 2015-02-13 40if (copy_from_user(page_kaddr, (const void __user *) src_addr, df81bb0f Andrea Arcangeli 2015-02-13 41 PAGE_SIZE)) df81bb0f Andrea Arcangeli 2015-02-13 42goto out_kunmap_release; df81bb0f Andrea Arcangeli 2015-02-13 @43kunmap(page_kaddr); df81bb0f Andrea Arcangeli 2015-02-13 44 df81bb0f Andrea Arcangeli 2015-02-13 45/* df81bb0f Andrea Arcangeli 2015-02-13 46 * The memory barrier inside __SetPageUptodate makes sure that df81bb0f Andrea Arcangeli 2015-02-13 47 * preceeding stores to the page contents become visible before df81bb0f Andrea Arcangeli 2015-02-13 48 * the set_pte_at() write. df81bb0f Andrea Arcangeli 2015-02-13 49 */ df81bb0f Andrea Arcangeli 2015-02-13 50__SetPageUptodate(page); df81bb0f Andrea Arcangeli 2015-02-13 51 df81bb0f Andrea Arcangeli 2015-02-13 52ret = -ENOMEM; df81bb0f Andrea Arcangeli 2015-02-13 53if (mem_cgroup_try_charge(page, dst_mm, GFP_KERNEL, &memcg)) df81bb0f Andrea Arcangeli 2015-02-13 54goto out_release; df81bb0f Andrea Arcangeli 2015-02-13 55 df81bb0f Andrea Arcangeli 2015-02-13 56_dst_pte = mk_pte(page, dst_vma->vm_page_prot); df81bb0f Andrea Arcangeli 2015-02-13 57if (dst_vma->vm_flags & VM_WRITE) df81bb0f Andrea Arcangeli 2015-02-13 58_dst_pte = pte_mkwrite(pte_mkdirty(_dst_pte)); df81bb0f Andrea Arcangeli 2015-02-13 59 df81bb0f Andrea Arcangeli 2015-02-13 60ret = -EEXIST; df81bb0f Andrea Arcangeli 2015-02-13 61dst_pte = pte_offset_map_lock(dst_mm, dst_pmd, dst_addr, &ptl); df81bb0f Andrea Arcangeli 2015-02-13 62if (!pte_none(*dst_pte)) df81bb0f Andrea Arcangeli 2015-02-13 63goto out_release_uncharge_unlock; df81bb0f Andrea Arcangeli 2015-02-13 64 df81bb0f Andrea Arcangeli 2015-02-13 65inc_mm_counter(dst_mm, MM_ANONPAGES); df81bb0f Andrea Arcangeli 2015-02-13 66page_add_new_anon_rmap(page, dst_vma, dst_addr); df81bb0f Andrea Arcangeli 2015-02-13 67mem_cgroup_commit_charge(page, memcg, false); df81bb0f Andrea Arcangeli 2015-02-13 68 lru_cache_add_active_or_unevictable(page, dst_vma); df81bb0f Andrea Arcangeli 2015-02-13 69 df81bb0f Andrea Arcangeli 2015-02-13 70set_pte_at(dst_mm, dst_addr, dst_pte, _dst_pte); df81bb0f Andrea Arcangeli 2015-02-13 71 df81bb0f Andrea Arcangeli 2015-02-13 72/* No need to invalidate - it was non-present before */ df81bb0f Andrea Arcangeli 2015-02-13 73update_mmu_cache(dst_vma, dst_addr, dst_pte); df81bb0f Andrea Arcangeli 2015-02-13 74 df81bb0f Andrea Arcangeli 2015-02-13 75pte_unmap_unlock(dst_pte, ptl); df81bb0f Andrea Arcangeli 2015-02-13 76ret = 0; df81bb0f Andrea Arcangeli 2015-02-13 77 out: df81bb0f Andrea Arcangeli 2015-02-13 78return ret; df81bb0f Andrea Arcangeli 2015-02-13 79 out_release_uncharge_unlock: df81bb0f Andrea Arcangeli 2015-02-13 80pte_unmap_unlock(dst_pte, ptl); df81bb0f Andrea Arcangeli 2015-02-13 81mem_cgroup_cancel_charge(page, memcg); df81bb0f Andrea Arcangeli 2015-02-13 82 out_release: df81bb0f Andrea Arcangeli 2015-02-13 83page_cache_release(page); df81bb0f Andrea Arcangeli 2015-02-13 84goto out; df81bb0f Andrea Arcangeli 2015-02-13 85 out_kunmap_release: df81bb0f Andrea Arcangeli 2015-02-13 @86kunmap(page_kaddr); df81bb0f Andrea Arcangeli 2015-02-13 87goto out_release; df81bb0f Andrea Arcangeli 2015-02-13 88 } df81bb0f Andrea Arcangeli 2015-02-13 89 --- 0-DAY kernel test infrastructureOpen Source Technology Center http://lists.01.org/mailman/listinfo/kbuild Intel Corporation ___ kbuild mailing list kbuild@lists.01.org https://lists.01.org/mailman/listinfo/kbuild