Re: [PATCH v2] mm/slub: Avoid list corruption when removing a slab from the full list

From: yuan.gao
Date: Tue Oct 08 2024 - 15:27:21 EST


On 24/10/08 11:17AM, Vlastimil Babka wrote:
> On 10/7/24 18:40, Christoph Lameter (Ampere) wrote:
> >
> > list_del() in remove_partial() sets poison values for next/prev so there
> > should no list
> > corruption but a failure showing the poison values.
>
> Yeah that's what is reported, but there's still a mention of list corruption:
>
> [ 4277.385669] list_del corruption, ffffea00044b3e50->next is LIST_POISON1 (dead000000000100)
>
> > static inline void list_del(struct list_head *entry)
> > {
> > __list_del_entry(entry);
> > entry->next = LIST_POISON1;
> > entry->prev = LIST_POISON2;
> > }
> >
>

Actually, if panic_on_oops=0, kernel will hang on my x86 system. The
task(kworker here) that triggers the bug dies in the #ud trap handler.

Thanks