diff options
Diffstat (limited to 'mm')
-rw-r--r-- | mm/backing-dev.c | 4 | ||||
-rw-r--r-- | mm/filemap_xip.c | 2 | ||||
-rw-r--r-- | mm/mmap.c | 4 | ||||
-rw-r--r-- | mm/slab.c | 1 | ||||
-rw-r--r-- | mm/slob.c | 1 | ||||
-rw-r--r-- | mm/slub.c | 6 |
6 files changed, 14 insertions, 4 deletions
diff --git a/mm/backing-dev.c b/mm/backing-dev.c index b0ceb29da4c7..e8644b1e5527 100644 --- a/mm/backing-dev.c +++ b/mm/backing-dev.c | |||
@@ -7,7 +7,7 @@ | |||
7 | 7 | ||
8 | int bdi_init(struct backing_dev_info *bdi) | 8 | int bdi_init(struct backing_dev_info *bdi) |
9 | { | 9 | { |
10 | int i, j; | 10 | int i; |
11 | int err; | 11 | int err; |
12 | 12 | ||
13 | for (i = 0; i < NR_BDI_STAT_ITEMS; i++) { | 13 | for (i = 0; i < NR_BDI_STAT_ITEMS; i++) { |
@@ -21,7 +21,7 @@ int bdi_init(struct backing_dev_info *bdi) | |||
21 | 21 | ||
22 | if (err) { | 22 | if (err) { |
23 | err: | 23 | err: |
24 | for (j = 0; j < i; j++) | 24 | while (i--) |
25 | percpu_counter_destroy(&bdi->bdi_stat[i]); | 25 | percpu_counter_destroy(&bdi->bdi_stat[i]); |
26 | } | 26 | } |
27 | 27 | ||
diff --git a/mm/filemap_xip.c b/mm/filemap_xip.c index 32132f3cd641..e233fff61b4b 100644 --- a/mm/filemap_xip.c +++ b/mm/filemap_xip.c | |||
@@ -314,7 +314,7 @@ __xip_file_write(struct file *filp, const char __user *buf, | |||
314 | fault_in_pages_readable(buf, bytes); | 314 | fault_in_pages_readable(buf, bytes); |
315 | kaddr = kmap_atomic(page, KM_USER0); | 315 | kaddr = kmap_atomic(page, KM_USER0); |
316 | copied = bytes - | 316 | copied = bytes - |
317 | __copy_from_user_inatomic_nocache(kaddr, buf, bytes); | 317 | __copy_from_user_inatomic_nocache(kaddr + offset, buf, bytes); |
318 | kunmap_atomic(kaddr, KM_USER0); | 318 | kunmap_atomic(kaddr, KM_USER0); |
319 | flush_dcache_page(page); | 319 | flush_dcache_page(page); |
320 | 320 | ||
@@ -1934,6 +1934,10 @@ unsigned long do_brk(unsigned long addr, unsigned long len) | |||
1934 | if (is_hugepage_only_range(mm, addr, len)) | 1934 | if (is_hugepage_only_range(mm, addr, len)) |
1935 | return -EINVAL; | 1935 | return -EINVAL; |
1936 | 1936 | ||
1937 | error = security_file_mmap(0, 0, 0, 0, addr, 1); | ||
1938 | if (error) | ||
1939 | return error; | ||
1940 | |||
1937 | flags = VM_DATA_DEFAULT_FLAGS | VM_ACCOUNT | mm->def_flags; | 1941 | flags = VM_DATA_DEFAULT_FLAGS | VM_ACCOUNT | mm->def_flags; |
1938 | 1942 | ||
1939 | error = arch_mmap_check(addr, len, flags); | 1943 | error = arch_mmap_check(addr, len, flags); |
@@ -4475,3 +4475,4 @@ size_t ksize(const void *objp) | |||
4475 | 4475 | ||
4476 | return obj_size(virt_to_cache(objp)); | 4476 | return obj_size(virt_to_cache(objp)); |
4477 | } | 4477 | } |
4478 | EXPORT_SYMBOL(ksize); | ||
@@ -495,6 +495,7 @@ size_t ksize(const void *block) | |||
495 | else | 495 | else |
496 | return sp->page.private; | 496 | return sp->page.private; |
497 | } | 497 | } |
498 | EXPORT_SYMBOL(ksize); | ||
498 | 499 | ||
499 | struct kmem_cache { | 500 | struct kmem_cache { |
500 | unsigned int size, align; | 501 | unsigned int size, align; |
@@ -2558,8 +2558,12 @@ size_t ksize(const void *object) | |||
2558 | if (unlikely(object == ZERO_SIZE_PTR)) | 2558 | if (unlikely(object == ZERO_SIZE_PTR)) |
2559 | return 0; | 2559 | return 0; |
2560 | 2560 | ||
2561 | page = get_object_page(object); | 2561 | page = virt_to_head_page(object); |
2562 | BUG_ON(!page); | 2562 | BUG_ON(!page); |
2563 | |||
2564 | if (unlikely(!PageSlab(page))) | ||
2565 | return PAGE_SIZE << compound_order(page); | ||
2566 | |||
2563 | s = page->slab; | 2567 | s = page->slab; |
2564 | BUG_ON(!s); | 2568 | BUG_ON(!s); |
2565 | 2569 | ||