diff options
Diffstat (limited to 'mm/mlock.c')
-rw-r--r-- | mm/mlock.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/mm/mlock.c b/mm/mlock.c index 028ec482fdd4..cbe9e0581b75 100644 --- a/mm/mlock.c +++ b/mm/mlock.c | |||
@@ -311,7 +311,10 @@ long mlock_vma_pages_range(struct vm_area_struct *vma, | |||
311 | is_vm_hugetlb_page(vma) || | 311 | is_vm_hugetlb_page(vma) || |
312 | vma == get_gate_vma(current))) { | 312 | vma == get_gate_vma(current))) { |
313 | 313 | ||
314 | return __mlock_vma_pages_range(vma, start, end, 1); | 314 | __mlock_vma_pages_range(vma, start, end, 1); |
315 | |||
316 | /* Hide errors from mmap() and other callers */ | ||
317 | return 0; | ||
315 | } | 318 | } |
316 | 319 | ||
317 | /* | 320 | /* |
@@ -657,7 +660,7 @@ void *alloc_locked_buffer(size_t size) | |||
657 | return buffer; | 660 | return buffer; |
658 | } | 661 | } |
659 | 662 | ||
660 | void free_locked_buffer(void *buffer, size_t size) | 663 | void release_locked_buffer(void *buffer, size_t size) |
661 | { | 664 | { |
662 | unsigned long pgsz = PAGE_ALIGN(size) >> PAGE_SHIFT; | 665 | unsigned long pgsz = PAGE_ALIGN(size) >> PAGE_SHIFT; |
663 | 666 | ||
@@ -667,6 +670,11 @@ void free_locked_buffer(void *buffer, size_t size) | |||
667 | current->mm->locked_vm -= pgsz; | 670 | current->mm->locked_vm -= pgsz; |
668 | 671 | ||
669 | up_write(¤t->mm->mmap_sem); | 672 | up_write(¤t->mm->mmap_sem); |
673 | } | ||
674 | |||
675 | void free_locked_buffer(void *buffer, size_t size) | ||
676 | { | ||
677 | release_locked_buffer(buffer, size); | ||
670 | 678 | ||
671 | kfree(buffer); | 679 | kfree(buffer); |
672 | } | 680 | } |