skb_copy_ubufs(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

🌸 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