No description
  • C 98.2%
  • Assembly 1%
  • Makefile 0.3%
  • Shell 0.2%
  • Python 0.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Jason A. Donenfeld aa350dbe3a net: introduce skb_list_walk_safe for skb segment walking
commit dcfea72e79b0aa7a057c8f6024169d86a1bbc84b upstream.

As part of the continual effort to remove direct usage of skb->next and
skb->prev, this patch adds a helper for iterating through the
singly-linked variant of skb lists, which are used for lists of GSO
packet. The name "skb_list_..." has been chosen to match the existing
function, "kfree_skb_list, which also operates on these singly-linked
lists, and the "..._walk_safe" part is the same idiom as elsewhere in
the kernel.

This patch removes the helper from wireguard and puts it into
linux/skbuff.h, while making it a bit more robust for general usage. In
particular, parenthesis are added around the macro argument usage, and it
now accounts for trying to iterate through an already-null skb pointer,
which will simply run the iteration zero times. This latter enhancement
means it can be used to replace both do { ... } while and while (...)
open-coded idioms.

This should take care of these three possible usages, which match all
current methods of iterations.

skb_list_walk_safe(segs, skb, next) { ... }
skb_list_walk_safe(skb, skb, next) { ... }
skb_list_walk_safe(segs, skb, segs) { ... }

Gcc appears to generate efficient code for each of these.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
[ Just the skbuff.h changes for backporting - gregkh]
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-01-23 15:57:57 +01:00
arch ARM: picoxcell: fix missing interrupt-parent properties 2021-01-19 18:26:16 +01:00
block bfq: Fix computation of shallow depth 2021-01-19 18:26:15 +01:00
certs
crypto crypto: asym_tpm: correct zero out potential secrets 2021-01-12 20:16:17 +01:00
Documentation x86/CPU/AMD: Save AMD NodeId as cpu_die_id 2020-12-30 11:51:47 +01:00
drivers netxen_nic: fix MSI/MSI-x interrupts 2021-01-23 15:57:57 +01:00
fs nfsd4: readdirplus shouldn't return parent of export 2021-01-23 15:57:56 +01:00
include net: introduce skb_list_walk_safe for skb segment walking 2021-01-23 15:57:57 +01:00
init exec: Transform exec_update_mutex into a rw_semaphore 2021-01-09 13:44:55 +01:00
ipc
kernel bpf: Fix helper bpf_map_peek_elem_proto pointing to wrong callback 2021-01-23 15:57:56 +01:00
lib lib/raid6: Let $(UNROLL) rules work with macOS userland 2021-01-19 18:26:15 +01:00
LICENSES
mm mm, slub: consider rest of partial list if acquire_slab() fails 2021-01-19 18:26:18 +01:00
net udp: Prevent reuseport_select_sock from reading uninitialized socks 2021-01-23 15:57:56 +01:00
samples samples: bpf: Fix lwt_len_hist reusing previous BPF map 2020-12-30 11:51:12 +01:00
scripts depmod: handle the case of /sbin/depmod without /sbin in PATH 2021-01-12 20:16:10 +01:00
security dump_common_audit_data(): fix racy accesses to ->d_name 2021-01-19 18:26:16 +01:00
sound ALSA: firewire-tascam: Fix integer overflow in midi_port_work() 2021-01-19 18:26:19 +01:00
tools perf intel-pt: Fix 'CPU too large' error 2021-01-19 18:26:16 +01:00
usr
virt kvm: check tlbs_dirty directly 2021-01-12 20:16:22 +01:00
.clang-format
.cocciconfig
.get_maintainer.ignore
.gitattributes
.gitignore
.mailmap
COPYING
CREDITS
Kbuild
Kconfig
MAINTAINERS
Makefile Linux 5.4.91 2021-01-19 18:26:19 +01:00
README

Linux kernel
============

There are several guides for kernel developers and users. These guides can
be rendered in a number of formats, like HTML and PDF. Please read
Documentation/admin-guide/README.rst first.

In order to build the documentation, use ``make htmldocs`` or
``make pdfdocs``.  The formatted documentation can also be read online at:

    https://www.kernel.org/doc/html/latest/

There are various text files in the Documentation/ subdirectory,
several of them using the Restructured Text markup notation.

Please read the Documentation/process/changes.rst file, as it contains the
requirements for building and running the kernel, and information about
the problems which may result by upgrading your kernel.