skb_cow_head(9)
π
skb_cow_head(9) Β· straight out of the Kernel API Manual
okay so bestie, sit down, hydrate, and let me tell you about skb_cow_head β a whole entire manpage from the Kernel API Manual and honestly? she's lowkey iconic. π¦
πΈ NAME
skb_cow_head β it's skb_cow but the only thing it makes writable is the head. that's it. that's the vibe check. β¨
β¨ SYNOPSIS
int skb_cow_head (struct sk_buff *skb , unsigned int headroom );
(yeah the spacing is exactly like that, don't @ me, it's copy-paste from the source and we respect the source π)
π ARGUMENTS
skbβ the buffer to cow π (yes, "cow" as in copy-on-write, not the mooing kind, but honestly the mooing kind is more fun)headroomβ the headroom you need. like, how much space you're asking for. the required amount. no cap.
π¦ DESCRIPTION
so this function is literally identical to skb_cow β same girl, same energy β except for one tiny little glow-up: instead of doing the skb_cloned check, it does the skb_header_cloned check instead. π«Ά
like, that's the whole difference. that's the plot twist. skb_cloned β‘οΈ skb_header_cloned. periodt.
π‘ and when should you use her? when you only need to push on some header and you do not need to modify the data. that's the moment. that's her main character energy. if you're out here trying to change the actual data, she's not the one β she's strictly header-pushing business. π
π SEE ALSO
first things first, the actual file where she lives, bestie:
Kernel file ./include/linux/skbuff.h
and now, the extended friend group π«Ά β every single one of these, no skips, no shuffle:
skb checksums(9)skb_frag_size(9)skb_frag_size_set(9)skb_frag_size_add(9)skb_frag_size_sub(9)skb_frag_must_loop(9)skb_frag_foreach_page(9)struct skb_shared_hwtstamps(9)dataref and headerless skbs(9)Basic sk_buff geometry(9)struct sk_buff(9)skb_pfmemalloc(9)skb_dst(9)skb_dstref_steal(9)skb_dstref_restore(9)skb_dst_set(9)skb_dst_set_noref(9)skb_dst_is_noref(9)skb_napi_id(9)skb_unref(9)kfree_skb(9)alloc_skb(9)skb_fclone_busy(9)alloc_skb_fclone(9)skb_pad(9)skb_queue_empty(9)skb_queue_empty_lockless(9)skb_queue_is_last(9)skb_queue_is_first(9)skb_queue_next(9)skb_queue_prev(9)skb_get(9)skb_cloned(9)skb_header_cloned(9)__skb_header_release(9)skb_shared(9)skb_share_check(9)skb_unshare(9)skb_peek(9)__skb_peek(9)skb_peek_next(9)skb_peek_tail(9)skb_queue_len(9)skb_queue_len_lockless(9)__skb_queue_head_init(9)skb_queue_splice(9)skb_queue_splice_init(9)skb_queue_splice_tail(9)skb_queue_splice_tail_init(9)__skb_queue_after(9)__skb_queue_head(9)__skb_queue_tail(9)__skb_dequeue(9)__skb_dequeue_tail(9)skb_len_add(9)__skb_fill_netmem_desc(9)skb_fill_page_desc(9)skb_fill_page_desc_noacc(9)skb_headroom(9)skb_tailroom(9)skb_availroom(9)skb_reserve(9)skb_tailroom_reserve(9)skb_reset_transport_header_careful(9)skb_set_transport_header_careful(9)pskb_trim_unique(9)skb_orphan(9)skb_orphan_frags(9)__skb_queue_purge_reason(9)netdev_alloc_frag(9)netdev_alloc_skb(9)__dev_alloc_pages(9)__dev_alloc_page(9)dev_page_is_reusable(9)skb_propagate_pfmemalloc(9)skb_frag_off(9)skb_frag_off_add(9)skb_frag_off_set(9)skb_frag_off_copy(9)skb_frag_net_iov(9)skb_frag_page(9)skb_frag_netmem(9)skb_frag_address(9)skb_frag_address_safe(9)skb_frag_phys(9)skb_frag_page_copy(9)__skb_frag_dma_map(9)skb_clone_writable(9)skb_cow(9)skb_padto(9)__skb_put_padto(9)skb_put_padto(9)skb_linearize(9)skb_has_shared_frag(9)skb_linearize_cow(9)skb_postpull_rcsum(9)skb_postpush_rcsum(9)skb_push_rcsum(9)pskb_trim_rcsum(9)skb_needs_linearize(9)skb_get_timestamp(9)skb_data_move(9)skb_postpull_data_move(9)skb_postpush_data_move(9)skb_complete_tx_timestamp(9)skb_tstamp_tx(9)skb_tx_timestamp(9)skb_complete_wifi_ack(9)skb_checksum_complete(9)struct skb_ext(9)skb_checksum_none_assert(9)skb_head_is_locked(9)
and that's the whole page, bestie β go forth and push headers responsibly π
signing off from ./include/linux, dated October 2026 β mwah, ily, read your skb docs ππβ¨
π¦ 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