| From mgorman@suse.de Tue Jan 7 09:52:24 2014 |
| From: Mel Gorman <mgorman@suse.de> |
| Date: Tue, 7 Jan 2014 14:00:43 +0000 |
| Subject: sched: numa: skip inaccessible VMAs |
| To: gregkh@linuxfoundation.org |
| Cc: athorlton@sgi.com, riel@redhat.com, chegu_vinod@hp.com, Mel Gorman <mgorman@suse.de>, stable@vger.kernel.org |
| Message-ID: <1389103248-17617-9-git-send-email-mgorman@suse.de> |
| |
| From: Mel Gorman <mgorman@suse.de> |
| |
| commit 3c67f474558748b604e247d92b55dfe89654c81d upstream. |
| |
| Inaccessible VMA should not be trapping NUMA hint faults. Skip them. |
| |
| Signed-off-by: Mel Gorman <mgorman@suse.de> |
| Reviewed-by: Rik van Riel <riel@redhat.com> |
| Cc: Alex Thorlton <athorlton@sgi.com> |
| Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
| Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| kernel/sched/fair.c | 7 +++++++ |
| 1 file changed, 7 insertions(+) |
| |
| --- a/kernel/sched/fair.c |
| +++ b/kernel/sched/fair.c |
| @@ -974,6 +974,13 @@ void task_numa_work(struct callback_head |
| if (vma->vm_end - vma->vm_start < HPAGE_SIZE) |
| continue; |
| |
| + /* |
| + * Skip inaccessible VMAs to avoid any confusion between |
| + * PROT_NONE and NUMA hinting ptes |
| + */ |
| + if (!(vma->vm_flags & (VM_READ | VM_EXEC | VM_WRITE))) |
| + continue; |
| + |
| do { |
| start = max(start, vma->vm_start); |
| end = ALIGN(start + (pages << PAGE_SHIFT), HPAGE_SIZE); |