[kbuild] [aa:userfault15 21/28] mm/userfaultfd.c:43 mcopy_atomic_pte() warn: passing the wrong variable to kunmap()

2015-02-18 Thread Dan Carpenter
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()

2015-02-17 Thread kbuild test robot
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