__consume_stateless_skb(9)
π
__consume_stateless_skb β Kernel API Manual β¨
okay bestie, welcome to the __consume_stateless_skb(9) glow-up π«Ά this is the Kernel API Manual's page for it, and no cap, it's a tiny one β but it's lowkey important, so let's get into it πΈ
π NAME
__consume_stateless_skb β free an skbuff, assuming it is stateless πβ¨
Like, the whole personality of this function is "this skb is stateless, so just free it already," periodt.
π¦ SYNOPSIS
void __consume_stateless_skb (struct sk_buff *skb );
that's it. that's the whole signature. iconic behavior honestly π
πΈ ARGUMENTS
skbβ buffer to free ποΈβ¨ (yes queen, that's the one you're releasing)
π DESCRIPTION
So it's alike consume_skb, but β and this is the main character detail β this variant assumes that this is the last skb reference and that all the head states have already been dropped.
Read that again and let it sink in, bestie: it assumes. It's not out here double-checking your vibes, it's not doing a vibe check on the head states, it just trusts you. So you better actually have dropped those head states and actually have the last reference, or it's giving "consequences" ππ₯ No cap, this is a "you must be this sure" situation.
π SEE ALSO
bestie the friend group is HUGE, look at this list, the skb family is literally everywhere π
β also shoutout to the kernel file ./net/core/skbuff.c π§
drop_reasons_register_subsys(9)drop_reasons_unregister_subsys(9)skb_panic(9)napi_skb_cache_get_bulk(9)__build_skb(9)build_skb_around(9)__napi_build_skb(9)napi_build_skb(9)__alloc_skb(9)__netdev_alloc_skb(9)napi_alloc_skb(9)skb_pp_cow_data(9)skb_pp_frag_ref(9)__kfree_skb(9)sk_skb_reason_drop(9)skb_tx_error(9)consume_skb(9)napi_consume_skb(9)alloc_skb_for_msg(9)skb_morph(9)skb_copy_ubufs(9)skb_clone(9)skb_copy(9)__pskb_copy_fclone(9)pskb_expand_head(9)skb_expand_head(9)skb_copy_expand(9)__skb_pad(9)pskb_put(9)skb_put(9)skb_push(9)skb_pull(9)skb_pull_data(9)skb_trim(9)__pskb_pull_tail(9)skb_copy_bits(9)skb_store_bits(9)skb_zerocopy(9)skb_dequeue(9)skb_dequeue_tail(9)skb_queue_purge_reason(9)skb_rbtree_purge(9)skb_queue_head(9)skb_queue_tail(9)skb_unlink(9)skb_append(9)skb_split(9)skb_shift(9)skb_prepare_seq_read(9)skb_seq_read(9)skb_abort_seq_read(9)skb_copy_seq_read(9)skb_find_text(9)skb_pull_rcsum(9)skb_segment(9)skb_to_sgvec(9)skb_cow_data(9)skb_clone_sk(9)skb_partial_csum_set(9)skb_checksum_setup(9)skb_checksum_maybe_trim(9)skb_checksum_trimmed(9)skb_try_coalesce(9)skb_scrub_packet(9)skb_eth_pop(9)skb_eth_push(9)skb_mpls_push(9)skb_mpls_pop(9)skb_mpls_update_lse(9)skb_mpls_dec_ttl(9)alloc_skb_with_frags(9)skb_condense(9)__skb_ext_alloc(9)__skb_ext_set(9)skb_ext_add(9)skb_attempt_defer_free(9)skb_splice_from_iter(9)
π«Ά friendly reminder: this variant assumes it's the last skb reference and that all head states are already dropped. Please don't make it regret trusting you π
πΈ okay that's the whole page, hope it slayed for you! this one lives over in ./net/core, dated October 2026, and it's brought to you by the Kernel API Manual β mwah, go free those stateless skbs responsibly ππβ¨
π¦ 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