__skb_put_padto(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… __skb_put_padto(9) β€” Kernel API Manual πŸ’…

okay bestie, welcome to the __skb_put_padto(9) page. This is the Kernel API Manual, and we're about to make an skbuff bigger and padded to a minimal size. slay. ✨


🌸 NAME 🌸

__skb_put_padto β€” increase size and pad an skbuff up to a minimal size


✨ SYNOPSIS ✨

int __skb_put_padto (struct sk_buff *skb , unsigned int len , bool
       free_on_error );

πŸŽ€ ARGUMENTS πŸŽ€

  • skb β€” the buffer to pad, bestie. that's the main character.
  • len β€” the minimal length. the glow-up target.
  • free_on_error β€” free buffer on error. yes, literally.

πŸ’– DESCRIPTION πŸ’–

so the way this works is: it pads up a buffer to make sure the trailing bytes exist and are blanked. if the buffer already contains sufficient data, it is untouched β€” no notes, no changes, it's perfect. otherwise, it is extended. returns zero on success. the skb is freed on error if free_on_error is true.

no cap: "untouched" means untouched. if it's already got enough data, this function does not come for it. 🫢

πŸ¦‹ SEE ALSO πŸ¦‹

the whole extended skb cinematic universe, fr fr:

Kernel file ./include/linux/skbuff.h 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_cow_head(9), skb_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)

signed off from ./include/linux β€” October 2026, on the __skb_put_padto(9) page. go pad those skbs, bestie. πŸ’…βœ¨

πŸ“¦ where this page comes from