From: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
To: Fengguang Wu <fengguang.wu@intel.com>
Cc: kbuild-all@01.org, Johannes Weiner <hannes@cmpxchg.org>,
Andrew Morton <akpm@linux-foundation.org>,
Linux Memory Management List <linux-mm@kvack.org>
Subject: [PATCH] fs/proc/task_mmu.c: assume non-NULL vma in pagemap_hugetlb() (Re: [mmotm:master 97/220] fs/proc/task_mmu.c:1042 pagemap_hugetlb() error: we previously assumed 'vma' could be null (see line 1037))
Date: Fri, 14 Feb 2014 10:09:58 -0500 [thread overview]
Message-ID: <52fe31e1.ca0ac20a.5647.5e12SMTPIN_ADDED_BROKEN@mx.google.com> (raw)
In-Reply-To: <20140214130450.GA14755@localhost>
Hi Fengguang,
On Fri, Feb 14, 2014 at 09:04:50PM +0800, Fengguang Wu wrote:
...
> FYI, there are new smatch warnings show up in
>
> tree: git://git.cmpxchg.org/linux-mmotm.git master
> head: 0363f94bc1c9b81f23ee7d2446331eb288568ea7
> commit: 81272031cc2831a3d1abb3c681f1188aa36a1454 [97/220] pagewalk: remove argument hmask from hugetlb_entry()
>
> fs/proc/task_mmu.c:1042 pagemap_hugetlb() error: we previously assumed 'vma' could be null (see line 1037)
>
> vim +/vma +1042 fs/proc/task_mmu.c
>
> d9104d1c Cyrill Gorcunov 2013-09-11 1031 int flags2;
> 16fbdce6 Konstantin Khlebnikov 2012-05-10 1032 pagemap_entry_t pme;
> 81272031 Naoya Horiguchi 2014-02-13 1033 unsigned long hmask;
> 5dc37642 Naoya Horiguchi 2009-12-14 1034
> d9104d1c Cyrill Gorcunov 2013-09-11 1035 WARN_ON_ONCE(!vma);
> d9104d1c Cyrill Gorcunov 2013-09-11 1036
> d9104d1c Cyrill Gorcunov 2013-09-11 @1037 if (vma && (vma->vm_flags & VM_SOFTDIRTY))
> d9104d1c Cyrill Gorcunov 2013-09-11 1038 flags2 = __PM_SOFT_DIRTY;
> d9104d1c Cyrill Gorcunov 2013-09-11 1039 else
> d9104d1c Cyrill Gorcunov 2013-09-11 1040 flags2 = 0;
> d9104d1c Cyrill Gorcunov 2013-09-11 1041
> 21a2f342 Naoya Horiguchi 2014-02-13 @1042 hmask = huge_page_mask(hstate_vma(vma));
> 5dc37642 Naoya Horiguchi 2009-12-14 1043 for (; addr != end; addr += PAGE_SIZE) {
> 116354d1 Naoya Horiguchi 2010-04-06 1044 int offset = (addr & ~hmask) >> PAGE_SHIFT;
> d9104d1c Cyrill Gorcunov 2013-09-11 1045 huge_pte_to_pagemap_entry(&pme, pm, *pte, offset, flags2);
Thanks for reporting, here is a patch.
We never have NULL vma in pagemap_hugetlb(), I added the BUG_ON check.
Thanks,
Naoya Horiguchi
---
From: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Date: Fri, 14 Feb 2014 09:35:06 -0500
Subject: [PATCH] fs/proc/task_mmu.c: assume non-NULL vma in pagemap_hugetlb()
Fengguang reported smatch error about potential NULL pointer access.
In updated page table walker, we never run ->hugetlb_entry() callback
on the address without vma. This is because __walk_page_range() checks
it in advance. So we can assume non-NULL vma in pagemap_hugetlb().
Reported-by: Fengguang Wu <fengguang.wu@intel.com>
Signed-off-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
---
fs/proc/task_mmu.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c
index f819d0d4a0e8..69aed7192254 100644
--- a/fs/proc/task_mmu.c
+++ b/fs/proc/task_mmu.c
@@ -1032,9 +1032,9 @@ static int pagemap_hugetlb(pte_t *pte, unsigned long addr, unsigned long end,
pagemap_entry_t pme;
unsigned long hmask;
- WARN_ON_ONCE(!vma);
+ BUG_ON(!vma);
- if (vma && (vma->vm_flags & VM_SOFTDIRTY))
+ if (vma->vm_flags & VM_SOFTDIRTY)
flags2 = __PM_SOFT_DIRTY;
else
flags2 = 0;
--
1.8.5.3
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2014-02-14 15:10 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <52fdd350.dwn4aII31EyWlDq9%fengguang.wu@intel.com>
2014-02-14 13:04 ` [mmotm:master 97/220] fs/proc/task_mmu.c:1042 pagemap_hugetlb() error: we previously assumed 'vma' could be null (see line 1037) Fengguang Wu
2014-02-14 15:09 ` Naoya Horiguchi [this message]
[not found] ` <52fe31de.89cfe00a.338f.ffff9a19SMTPIN_ADDED_BROKEN@mx.google.com>
2014-02-18 20:44 ` [PATCH] fs/proc/task_mmu.c: assume non-NULL vma in pagemap_hugetlb() (Re: [mmotm:master 97/220] fs/proc/task_mmu.c:1042 pagemap_hugetlb() error: we previously assumed 'vma' could be null (see line 1037)) Andrew Morton
2014-02-18 21:01 ` Naoya Horiguchi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=52fe31e1.ca0ac20a.5647.5e12SMTPIN_ADDED_BROKEN@mx.google.com \
--to=n-horiguchi@ah.jp.nec.com \
--cc=akpm@linux-foundation.org \
--cc=fengguang.wu@intel.com \
--cc=hannes@cmpxchg.org \
--cc=kbuild-all@01.org \
--cc=linux-mm@kvack.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox