folio_put_refs(9)
π folio_put_refs(9) β like, the Kernel API Manual page you didn't know you needed π
okay bestie, buckle up, because we're talking about folio_put_refs from the Kernel API Manual and honestly? she's giving "quietly important" and I'm obsessed. π¦
β¨ NAME β¨
folio_put_refs β Reduce the reference count on a folio. that's it. that's the whole job. π
πΈ SYNOPSIS πΈ
void folio_put_refs (struct folio *folio , int refs );
literally the whole signature, no notes, slay. β¨
π ARGUMENTS π
folioβ The folio. yes bestie, that's the entire description. she's a main character with no backstory. πrefsβ The amount to subtract from the folio's reference count. so like, how many refs we're dropping in one go, no cap. π
π₯ DESCRIPTION π₯
so here's the tea: 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. like, instantly, no grace period, no warning text, nothing. π
β οΈ Do not access the memory or thestruct folioafter callingfolio_put_refsunless you can be sure that these weren't the last references. fr fr, if you touch it after and it was the last ref, that's on you, bestie. π
π CONTEXT π
- May be called in process or interrupt context, but not in NMI context. ngl, NMI is where she draws the line. π
- May be called while holding a spinlock. yes she's flexible like that, we love a versatile icon. π«Ά
π SEE ALSO π
Kernel file ./include/linux/mm.h, plus this whole entire friend group right here (yes, all of them, I'm not skipping a single one, that's disrespectful):
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(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)
π okay that's the page!! this cutie lives in ./include/linux and the version is dated October 2026 β so like, future icon behaviour, we love to see it. go forth and drop your refs responsibly, 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