该问题可能是由于内存分配不足导致的。可以使用以下代码示例来避免此问题:
unsigned long flags; raw_spin_lock_irqsave(&zone->lock, flags); page = __alloc_pages(gfp_mask, order, zonelist); if (unlikely(page && PageTransCompound(page))) { __split_huge_page(page); page = NULL; } raw_spin_unlock_irqrestore(&zone->lock, flags);
在上述代码中,使用了__alloc_pages()函数来分配页面,如果返回的页面被标记为“PageTransCompound”,则调用“__split_huge_page()”函数将其分裂为多个页面。这样就可以避免alloc_pages()函数返回分裂内核大页面(THP)的问题。