folio_put(9)
β¨ NAME β¨ β folio_put(9) from the Kernel API Manual β¨
okay so bestie, this is folio_put(9), and its whole job is literally to decrement the reference count on a folio. That's the vibe. That's the mission. π
πΈ SYNOPSIS πΈ
void folio_put (struct folio *folio );
π ARGUMENTS π
folioβ the folio. That's it. She's simple, she's iconic, she's the only argument. π«Ά
π¦ DESCRIPTION π¦
okay so hear me out: if the folio's reference count reaches zero, the memory will be released back to the page allocator and may be used by another allocation immediately. Do not access the memory or the struct folio after calling folio_put unless you can be sure that it wasn't the last reference. like, fr fr, do not touch it after. That is the warning, bestie. π
β CONTEXT β
May be called in process or interrupt context, but not in NMI context. May be called while holding a spinlock. So: process context? slay. interrupt context? slay. NMI context? absolutely not, bestie. spinlock held? also fine. π
π SEE ALSO π
Kernel file ./include/linux/mm.h β and then a whole friend group of references, all here, no cap: folio_page_idx(9), vma_flag_t(9), fault_flag_allow_retry_first(9), vma_kernel_pagesize(9), folio_order(9), folio_reset_order(9), folio_mapcount(9), folio_mapped(9), thp_order(9), thp_size(9), folio_get(9), folio_put_refs(9), folios_put(9), vma_flags_is_cow_mapping(9), vma_is_cow_mapping(9), vma_desc_is_cow_mapping(9), folio_pfn(9), folio_mk_pte(9), folio_mk_pmd(9), folio_mk_pud(9), folio_maybe_dma_pinned(9), is_zero_page(9), is_zero_folio(9), folio_nr_pages(9), folio_next(9), folio_shift(9), folio_size(9), folio_maybe_mapped_shared(9), folio_expected_ref_count(9), zap_vma(9), ptdesc_address(9), ptdesc_set_kernel(9), ptdesc_clear_kernel(9), ptdesc_test_kernel(9), pagetable_alloc(9), pagetable_free(9), vma_lookup(9), vma_start_pgoff(9), vma_end_pgoff(9), vma_last_pgoff(9), vma_start_anon_pgoff(9), vma_end_anon_pgoff(9), vma_last_anon_pgoff(9), mmap_action_remap(9), mmap_action_remap_full(9), mmap_action_ioremap(9), mmap_action_ioremap_full(9), mmap_action_simple_ioremap(9), mmap_action_map_kernel_pages(9), mmap_action_map_kernel_pages_full(9), range_is_subset(9), range_in_vma(9), range_in_vma_desc(9), clear_pages(9).
xoxo, this page came from source/version ./include/linux, dated October 2026 β folio_put(9) out, bestie ππ
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms