__pskb_copy_fclone(9)
π NAME π
welcome to the __pskb_copy_fclone(9) page from the Kernel API Manual, bestie β and yes, this function's whole job is literally __pskb_copy_fclone β create copy of an sk_buff with private head. periodt π
β¨
β¨ SYNOPSIS β¨
okay so the signature is giving:
struct sk_buff * __pskb_copy_fclone (struct sk_buff *skb , int headroom
, gfp_t gfp_mask , bool fclone );
π ARGUMENTS π
skbβ buffer to copy. the main character we're duplicating πheadroomβ headroom of new skb. yes, that's the actual parameter name, no cap.gfp_maskβ allocation priority. the vibe check for memory allocation β¨fcloneβ iftrue, allocate the copy of the skb from the fclone cache instead of the head cache; it is recommended to set this totruefor the cases where the copy will likely be cloned. iykyk π«Ά
π¦ DESCRIPTION π¦
okay so listen: this one makes a copy of both an sk_buff and part of its data, located in header. Fragmented data remain shared. it's the move for when the caller wishes to modify only header of sk_buff and needs private copy of the header to alter. no big dramatic full copy energy β just the header getting its own little private space π
Returns NULL on failure or the pointer to the buffer on success. and the returned buffer has a reference count of 1. iconic, honestly π
π SEE ALSO π
Kernel file: ./net/core/skbuff.c
the whole skb-adjacent crew is linked below β every single one, no skipping, 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_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)
mwah π that's the whole page, bestie β source path ./net/core, version/date October 2026, and page __pskb_copy_fclone(9). bye π«Άβ¨
π¦ 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