diff options
author | Hui Zhu <zhuhui@xiaomi.com> | 2015-11-07 01:29:26 +0100 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-11-07 02:50:42 +0100 |
commit | 12a7bfad58cd604616dd5205efa6dc2be6f299eb (patch) | |
tree | 29228fe2c4440e1d95eeb64a8c19ef889f9bf744 /block | |
parent | zsmalloc: add comments for ->inuse to zspage (diff) | |
download | linux-12a7bfad58cd604616dd5205efa6dc2be6f299eb.tar.xz linux-12a7bfad58cd604616dd5205efa6dc2be6f299eb.zip |
zsmalloc: fix obj_to_head use page_private(page) as value but not pointer
In obj_malloc():
if (!class->huge)
/* record handle in the header of allocated chunk */
link->handle = handle;
else
/* record handle in first_page->private */
set_page_private(first_page, handle);
In the hugepage we save handle to private directly.
But in obj_to_head():
if (class->huge) {
VM_BUG_ON(!is_first_page(page));
return *(unsigned long *)page_private(page);
} else
return *(unsigned long *)obj;
It is used as a pointer.
The reason why there is no problem until now is huge-class page is born
with ZS_FULL so it can't be migrated. However, we need this patch for
future work: "VM-aware zsmalloced page migration" to reduce external
fragmentation.
Signed-off-by: Hui Zhu <zhuhui@xiaomi.com>
Acked-by: Minchan Kim <minchan@kernel.org>
Cc: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'block')
0 files changed, 0 insertions, 0 deletions