skb_copy_ubufs(9)
πΈ skb_copy_ubufs(9) πΈ
okay so welcome to the Kernel API Manual, bestie β this page is skb_copy_ubufs(9), and it's giving βcopy userspace skb frags buffers to kernelβ energy. π
π NAME π
skb_copy_ubufs β copy userspace skb frags buffers to kernel. no cap, that's the whole vibe.
β¨ SYNOPSIS β¨
int skb_copy_ubufs (struct sk_buff *skb , gfp_t gfp_mask );
π«Ά ARGUMENTS π«Ά
skbβ the skb to modify. main character behavior, honestly.gfp_maskβ allocation priority. yes queen, tell the allocator what's up.
π₯ DESCRIPTION π₯
okay so listen. This must be called on an skb with SKBFL_ZEROCOPY_ENABLE. It will copy all frags into kernel and drop the reference to userspace pages. literally moving the frags into kernel's house and letting go of those userspace page refs. π¦
If this function is called from an interrupt, gfp_mask must be GFP_ATOMIC. not optional, not a suggestion, fr fr. π
Returns 0 on success or a negative error code on failure to allocate kernel memory to copy to. so if the kernel can't get memory for the copy, you get a negative error code β rude, but fair. π
π SEE ALSO π
Kernel file ./net/core/skbuff.c β and the whole squad, all (9):
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_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),
__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)
Source: ./net/core Β· page/version: skb_copy_ubufs(9) Β· dated October 2026. mwah, study up bestie π
π¦ 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