mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-02-23 21:11:51 -05:00
mm, bpf: Use memcg in try_alloc_pages().
Unconditionally use __GFP_ACCOUNT in try_alloc_pages(). The caller is responsible to setup memcg correctly. All BPF memory accounting is memcg based. Acked-by: Vlastimil Babka <vbabka@suse.cz> Acked-by: Shakeel Butt <shakeel.butt@linux.dev> Signed-off-by: Alexei Starovoitov <ast@kernel.org> Link: https://lore.kernel.org/r/20250222024427.30294-6-alexei.starovoitov@gmail.com Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:
@@ -7190,7 +7190,8 @@ struct page *try_alloc_pages_noprof(int nid, unsigned int order)
|
||||
* 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;
|
||||
@@ -7234,6 +7235,11 @@ struct page *try_alloc_pages_noprof(int nid, unsigned int order)
|
||||
|
||||
/* 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;
|
||||
|
||||
Reference in New Issue
Block a user