c
static inline void free_the_page(struct page *page, unsigned int order)
{
    if (pcp_allowed_order(order))        /* Via pcp? */
    {
        // Instead of freeing the page directly, schedule it for freeing
        schedule_page_free(page, order);
    }
}

void schedule_page_free(struct page *page, unsigned int order)
{
    // Schedule the page for freeing, e.g., using a workqueue
    queue_work(..., &free_page_work, page, order);
}

void free_page_work(struct work_struct *work)
{
    struct page *page = ...; // Retrieve the page from the work struct
    unsigned int order = ...; // Retrieve the order from the work struct
    free_unref_page(page, order);
}
