From 5d4ae2c813e24965c237a0d532286e3ed117457a Mon Sep 17 00:00:00 2001 From: Mikulas Patocka Date: Sun, 4 Mar 2012 19:52:03 -0500 Subject: [PATCH] --- yaml --- r: 288287 b: refs/heads/master c: 83cd904d271ba960c53f3adbb037f3486518f1e6 h: refs/heads/master i: 288285: ddc08898e7501aab4a93c62f64cf253b469bfb0f 288283: e39cef90712c46a6b3fcb7ba3905e27e623e2546 288279: 29a86d9df1a1fd03faf2b972ea10d5166de25b69 288271: c5d63173d9c30c083fc44a5ce7818a522e1e4f35 288255: 5852ec89ed1ae6f0d75518d954fe38328e63f157 v: v3 --- [refs] | 2 +- trunk/mm/mmap.c | 12 ++++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index c8c53decc9ba..30d6b5f7bd99 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 52abb700e16a9aa4cbc03f3d7f80206cbbc80680 +refs/heads/master: 83cd904d271ba960c53f3adbb037f3486518f1e6 diff --git a/trunk/mm/mmap.c b/trunk/mm/mmap.c index 09ce2cae07ca..da15a79b1441 100644 --- a/trunk/mm/mmap.c +++ b/trunk/mm/mmap.c @@ -1608,7 +1608,6 @@ EXPORT_SYMBOL(find_vma); /* * Same as find_vma, but also return a pointer to the previous VMA in *pprev. - * Note: pprev is set to NULL when return value is NULL. */ struct vm_area_struct * find_vma_prev(struct mm_struct *mm, unsigned long addr, @@ -1617,7 +1616,16 @@ find_vma_prev(struct mm_struct *mm, unsigned long addr, struct vm_area_struct *vma; vma = find_vma(mm, addr); - *pprev = vma ? vma->vm_prev : NULL; + if (vma) { + *pprev = vma->vm_prev; + } else { + struct rb_node *rb_node = mm->mm_rb.rb_node; + *pprev = NULL; + while (rb_node) { + *pprev = rb_entry(rb_node, struct vm_area_struct, vm_rb); + rb_node = rb_node->rb_right; + } + } return vma; }