skb_trim(9)
πββοΈ skb_trim(9) β bestie edition
okay so this is a page from the Kernel API Manual (skb_trim(9), if you're keeping track π) and it's honestly so short it's giving minimal effort in the best way. let's get into it β¨
π NAME π
skb_trim β remove end from a buffer
likeβ¦ you're literally just yeeting stuff off the tail of a buffer. that's the whole thing. slay π
β¨ SYNOPSIS β¨
void skb_trim (struct sk_buff *skb , unsigned int len );
void return, two args, no drama. we love a function that doesn't overcomplicate things π«Ά
π ARGUMENTS π
skbβ the buffer you're altering. this is your main character right here πlenβ the new length you want it to be π
πΈ DESCRIPTION πΈ
so the vibe is: you cut the length of a buffer down by removing data from the tail. think of it like trimming your split ends β you're only touching the end, nothing else moves π¦
if the buffer is already under the length specified, it is not modified. no cap, nothing happens, it just stays exactly as it is. the function is not about to grow your buffer for you, that's not her job π ββοΈ
π¨ important caveat bestie: the skb must be linear. that's not a suggestion, that's the rule. keep that in mind or things get weird π
π₯ SEE ALSO π₯
Kernel file ./net/core/skbuff.c β and like, every skb function that has ever existed, apparently. this list ate and left no crumbs:
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_put(9)skb_push(9)skb_pull(9)skb_pull_data(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)
iykyk π
π«Ά that's the whole page. tiny function, enormous SEE ALSO, extremely on brand for kernel docs ngl.
and finally, the cute lil sign-off: this one lives in ./net/core, it's dated October 2026, and yes β it's still skb_trim(9) at the end, same as at the top. periodt πβ
π¦ 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