diff options
Diffstat (limited to 'mm/slob.c')
-rw-r--r-- | mm/slob.c | 4 |
1 files changed, 3 insertions, 1 deletions
@@ -403,10 +403,11 @@ static void slob_free(void *block, int size) | |||
403 | /* Go directly to page allocator. Do not pass slob allocator */ | 403 | /* Go directly to page allocator. Do not pass slob allocator */ |
404 | if (slob_page_free(sp)) | 404 | if (slob_page_free(sp)) |
405 | clear_slob_page_free(sp); | 405 | clear_slob_page_free(sp); |
406 | spin_unlock_irqrestore(&slob_lock, flags); | ||
406 | clear_slob_page(sp); | 407 | clear_slob_page(sp); |
407 | free_slob_page(sp); | 408 | free_slob_page(sp); |
408 | free_page((unsigned long)b); | 409 | free_page((unsigned long)b); |
409 | goto out; | 410 | return; |
410 | } | 411 | } |
411 | 412 | ||
412 | if (!slob_page_free(sp)) { | 413 | if (!slob_page_free(sp)) { |
@@ -531,6 +532,7 @@ size_t ksize(const void *block) | |||
531 | } else | 532 | } else |
532 | return sp->page.private; | 533 | return sp->page.private; |
533 | } | 534 | } |
535 | EXPORT_SYMBOL(ksize); | ||
534 | 536 | ||
535 | struct kmem_cache { | 537 | struct kmem_cache { |
536 | unsigned int size, align; | 538 | unsigned int size, align; |