On Fri, Nov 14, 2014 at 02:44:15PM +0300, kbuild test robot wrote: > [ You would have to enable transparent huge page tables on a 32 bit > system to trigger this bug and I don't think that's possible. It is. We have THP on 32-bit x86. > I don't think Smatch will complain about this if you have the cross > function database turned on because it knows the value of size in that > case. But most people don't build the database so it might be worth > silencing this bug? Should I even bother sending these email for > non-bugs? Let me know. -dan ] > > tree: git://git.cmpxchg.org/linux-mmotm.git master > head: e668fb4c5c5e6de5b9432bd36d83b3a0b4ce78e8 > commit: be7c8db9daa43935912bc8c898ecea99b32d805b [120/306] mm: fix huge zero page accounting in smaps report > > fs/proc/task_mmu.c:474 smaps_account() warn: should 'size << 12' be a 64 bit type? This should fix the issue. diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c index 8fd00743bd4d..de80a887d98e 100644 --- a/fs/proc/task_mmu.c +++ b/fs/proc/task_mmu.c @@ -464,17 +464,16 @@ static void smaps_account(struct mem_size_stats *mss, struct page *page, mss->shared_dirty += size; else mss->shared_clean += size; - mss->pss += (size << PSS_SHIFT) / mapcount; + mss->pss += ((u64)size << PSS_SHIFT) / mapcount; } else { if (dirty || PageDirty(page)) mss->private_dirty += size; else mss->private_clean += size; - mss->pss += (size << PSS_SHIFT); + mss->pss += (u64)size << PSS_SHIFT; } } - static void smaps_pte_entry(pte_t *pte, unsigned long addr, struct mm_walk *walk) { -- Kirill A. Shutemov -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>