On (24/02/27 03:02), Chengming Zhou wrote: [..] > @@ -978,10 +974,11 @@ static struct zspage *alloc_zspage(struct zs_pool *pool, > pages[i] = page; > } > > - create_page_chain(class, zspage, pages); > init_zspage(class, zspage); > zspage->pool = pool; > zspage->class = class->index; > + /* RCU set_zspage() after zspage initialized. */ > + create_page_chain(class, zspage, pages); So this hasn't been tested, has it? init_zspage() does not like to be invoked before create_page_chain(), because we haven't setup required pointers yet. So when init_zspage() calls get_first_page() it gets NULL zspage->first_page which we then use in is_first_page(first_page)->PagePrivate(page). As far as I can tell.