io_uring/memmap: compound allocation larger than accounted region

From: Ali Ahmet Memis

Date: Thu Aug 06 2026 - 11:46:02 EST


io_mem_alloc_compound() allocates get_order(size) pages, while
io_create_region() accounts reg->size >> PAGE_SHIFT. For a ring with 4096 SQ
entries and the default CQ size that is 64 pages allocated against 37
accounted.

Is that intentional? memcg charges the full allocation, so only RLIMIT_MEMLOCK
undercounts, and the gap is bounded by 2x. I did not want to send a patch for
something that may well be a deliberate trade for the single folio.

Thanks,
Ali