Re: [PATCH resend] slub: Add back check for free nonslab objects

From: Kefeng Wang
Date: Sun Sep 26 2021 - 23:07:15 EST

On 2021/9/27 10:42, Matthew Wilcox wrote:
On Mon, Sep 27, 2021 at 10:15:38AM +0800, Kefeng Wang wrote:
Commit ("0937502af7c9 slub: Add check for kfree() of non slab objects.")
add the ability, which should be needed in any configs to catch the
invalid free, they even could be potential issue, eg, memory corruption,
use after free and double-free, so replace VM_BUG_ON_PAGE to WARN_ON, and
add dump_page() to help use to debug the issue.
Is dump_page() really the best way to catch such a thing? I would have
thought that printing the address of 'object' would be more helpful.

With no vmcore, dump_page() do help us to find a memory corruption issue.

We could add 'object ' address print too.

@@ -3522,7 +3522,8 @@ static inline void free_nonslab_page(struct page *page, void *object)
unsigned int order = compound_order(page);
- VM_BUG_ON_PAGE(!PageCompound(page), page);
+ if (WARN_ON(!PageCompound(page)))
+ dump_page(page, "invalid free nonslab page");