[PATCH] zsmalloc: fix linking bug in init_zspage

From: zhouxianrong
Date: Thu Aug 09 2018 - 10:07:07 EST


The last partial object in last subpage of zspage should not be linked
in allocation list.

Signed-off-by: zhouxianrong <zhouxianrong@xxxxxxx>
---
mm/zsmalloc.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/mm/zsmalloc.c b/mm/zsmalloc.c
index 8d87e973a4f5..24dd8da0aa59 100644
--- a/mm/zsmalloc.c
+++ b/mm/zsmalloc.c
@@ -1040,6 +1040,8 @@ static void init_zspage(struct size_class *class, struct zspage *zspage)
* Reset OBJ_TAG_BITS bit to last link to tell
* whether it's allocated object or not.
*/
+ if (off > PAGE_SIZE)
+ link -= class->size / sizeof(*link);
link->next = -1UL << OBJ_TAG_BITS;
}
kunmap_atomic(vaddr);
--
2.13.6