* specify it here to highlight that try_alloc_pages()
         * doesn't want to deplete reserves.
         */
-       gfp_t alloc_gfp = __GFP_NOWARN | __GFP_ZERO | __GFP_NOMEMALLOC;
+       gfp_t alloc_gfp = __GFP_NOWARN | __GFP_ZERO | __GFP_NOMEMALLOC
+                       | __GFP_ACCOUNT;
        unsigned int alloc_flags = ALLOC_TRYLOCK;
        struct alloc_context ac = { };
        struct page *page;
 
        /* Unlike regular alloc_pages() there is no __alloc_pages_slowpath(). */
 
+       if (memcg_kmem_online() && page &&
+           unlikely(__memcg_kmem_charge_page(page, alloc_gfp, order) != 0)) {
+               free_pages_nolock(page, order);
+               page = NULL;
+       }
        trace_mm_page_alloc(page, order, alloc_gfp, ac.migratetype);
        kmsan_alloc_page(page, order, alloc_gfp);
        return page;