On Wed, Feb 27, 2019 at 12:15:56PM -0500, Qian Cai wrote: > After offlined a memory block, kmemleak scan will trigger a crash, as it > encounters a page ext address that has already been freed during memory > offlining. At the beginning in alloc_page_ext(), it calls > kmemleak_alloc(), but it does not call kmemleak_free() in > __free_page_ext(). [...] > diff --git a/mm/page_ext.c b/mm/page_ext.c > index 8c78b8d45117..b68f2a58ea3b 100644 > --- a/mm/page_ext.c > +++ b/mm/page_ext.c > @@ -288,6 +288,7 @@ static void __free_page_ext(unsigned long pfn) > base = get_entry(ms->page_ext, pfn); > free_page_ext(base); > ms->page_ext = NULL; > + kmemleak_free(base); > } The kmemleak_free() call should be placed before free_page_ext() to avoid a small window where the address has been freed but kmemleak not informed. -- Catalin