pskb_put(9)
okay bestie, this is pskb_put(9) from the Kernel API Manual, and it's giving βadd data to the tail of a potentially fragmented bufferβ with zero chill. let's go π
β¨
π NAME π
pskb_put β add data to the tail of a potentially fragmented buffer. no cap, that's the whole name, and it ate.
β¨ SYNOPSIS β¨
void * pskb_put (struct sk_buff *skb , struct sk_buff *tail , int len );
π ARGUMENTS π
skbβ start of the buffer to use. your main character buffer, basically.tailβ tail fragment of the buffer to use. the final-fragment bestie.lenβ amount of data to add. the size of the extra data moment.
π¦ DESCRIPTION π¦
so this function extends the used data area of the potentially fragmented buffer. yes, the whole βfragmentedβ situation is the point β it's not scared of a buffer that's split into pieces. π
real talk: tail must be the last fragment of skb -- or skb itself. like, not a random middle fragment, not your ex, not some other buffer. the last one, or the og. iykyk.
β οΈ if this would exceed the total buffer size, the kernel will panic. not a cute little error, not a vibe check, an actual panic. so maybe don't do that, bestie π
and the payoff? a pointer to the first byte of the extra data is returned. periodt. π«Ά
π SEE ALSO π
Kernel file ./net/core/skbuff.c β plus the whole skb cinematic universe, fr fr:
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),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)
okay that's the whole page, bestie. source/version: ./net/core; date: October 2026; manual page: pskb_put(9). bye, slay, hydrate, and don't overflow the buffer πππ¦
π¦ 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