__pskb_pull_tail(9)
πΈ NAME πΈ
Okay bestie, welcome to __pskb_pull_tail(9) from the Kernel API Manual β yes, we're in kernel API land, stay close π
The name is literally the job: advance tail of skb header. That's it. That's the whole assignment. β¨
β¨ SYNOPSIS β¨
void * __pskb_pull_tail (struct sk_buff *skb , int delta );
π ARGUMENTS π
skbβ the buffer to reallocate, bestie. That's the one we're working on.deltaβ the number of bytes to advance the tail by. Yes, exactly that many. π₯
π DESCRIPTION π
Okay so this function only makes sense on a fragmented sk_buff β like, if it's not fragmented, this is not the vibe. It expands the header by moving its tail forward and copying the necessary data over from the fragmented part. Very βmake it fitβ energy. π«Ά
β οΈ HUGE caveat, no cap: thesk_buffMUST have a reference count of1. Not2, not βbasically 1,β not βit's fine probably.β1. Periodt. π
If the pull failed, it returns NULL β and sk_buff does not change. If it succeeded, you get the value of the new tail of skb. Slay. π
π¨ Another important one: all the pointers pointing into the skb header may change, and they must be reloaded after you call this function. Do not reuse stale pointers, bestie, I am begging. π
π¦ SEE ALSO π¦
Kernel file ./net/core/skbuff.c β here's the whole iconic friend group:
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),skb_trim(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)
Signed, sealed, delivered from ./net/core, October 2026 β page __pskb_pull_tail(9) out π
β¨π
π¦ 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