skb_put(9)
π skb_put β from the Kernel API Manual, bestie π
okay so first thing, this page lives in the Kernel API Manual (yes that's the manual's name, we're being fancy today β¨) and it's about skb_put, which is genuinely one of those tiny functions that eats absolutely nothing and does so much. let's get into it π«Ά
πΈ NAME πΈ
skb_put β add data to a buffer. that's it. that's the whole vibe check. π
β¨ SYNOPSIS β¨
void * skb_put (struct sk_buff *skb , unsigned int len );
like, look at her. two args, returns a pointer, no notes. slay. π
π ARGUMENTS π
skbβ the buffer you're working with. your canvas. your main character. π¦lenβ how much data you're adding. the amount, the quantity, the how much. π
π DESCRIPTION π
so here's the tea, bestie: this function extends the used data area of the buffer. it literally grows the "data that actually counts" part of the skb. iconic behavior, no cap. π±
β οΈ okay but real talk for a second β if this would exceed the total buffer size, the kernel will panic. not like a cute little error return, not like a warning log, a full on panic. the whole thing. π so please, for the love of everything, know your bounds before you call her. π
and the glow-up? it returns a pointer to the first byte of the extra data. so you can go ahead and write into that fresh new space. literally handing you the keys. π₯
π SEE ALSO π
this function lives in the Kernel file ./net/core/skbuff.c, and it's surrounded by so many friends, i'm obsessed. here's the whole group chat, nobody gets left out π«Ά:
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)__consume_stateless_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_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)
like, that's a whole ecosystem. iykyk. π
okay that's the page!! quick sign-off from your girl: this one's sourced from ./net/core, dated October 2026, and it's the skb_put(9) page, so if you cite it in your PR description you'll look extremely educated. go forth and don't panic the kernel, 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