diff options
| author | swkhack <swkhack@gmail.com> | 2019-06-13 18:56:08 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2019-06-13 23:34:56 -0400 |
| commit | 0874bb49bb21bf24deda853e8bf61b8325e24bcb (patch) | |
| tree | 965fb2ebfe60c6dd4541724ea29c74424e4bede9 | |
| parent | 7a30df49f63ad92318ddf1f7498d1129a77dd4bd (diff) | |
mm/mlock.c: change count_mm_mlocked_page_nr return type
On a 64-bit machine the value of "vma->vm_end - vma->vm_start" may be
negative when using 32 bit ints and the "count >> PAGE_SHIFT"'s result
will be wrong. So change the local variable and return value to
unsigned long to fix the problem.
Link: http://lkml.kernel.org/r/20190513023701.83056-1-swkhack@gmail.com
Fixes: 0cf2f6f6dc60 ("mm: mlock: check against vma for actual mlock() size")
Signed-off-by: swkhack <swkhack@gmail.com>
Acked-by: Michal Hocko <mhocko@suse.com>
Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
| -rw-r--r-- | mm/mlock.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/mm/mlock.c b/mm/mlock.c index cef65bf3964c..a90099da4fb4 100644 --- a/mm/mlock.c +++ b/mm/mlock.c | |||
| @@ -636,11 +636,11 @@ static int apply_vma_lock_flags(unsigned long start, size_t len, | |||
| 636 | * is also counted. | 636 | * is also counted. |
| 637 | * Return value: previously mlocked page counts | 637 | * Return value: previously mlocked page counts |
| 638 | */ | 638 | */ |
| 639 | static int count_mm_mlocked_page_nr(struct mm_struct *mm, | 639 | static unsigned long count_mm_mlocked_page_nr(struct mm_struct *mm, |
| 640 | unsigned long start, size_t len) | 640 | unsigned long start, size_t len) |
| 641 | { | 641 | { |
| 642 | struct vm_area_struct *vma; | 642 | struct vm_area_struct *vma; |
| 643 | int count = 0; | 643 | unsigned long count = 0; |
| 644 | 644 | ||
| 645 | if (mm == NULL) | 645 | if (mm == NULL) |
| 646 | mm = current->mm; | 646 | mm = current->mm; |
