Linux kernel source tree
Go to file
Vlastimil Babka c33196c942 slab: use struct freelist_counters as parameters in relevant functions
In functions such as [__]slab_update_freelist() and
__slab_update_freelist_fast/slow() we pass old and new freelist and
counters as 4 separate parameters. The underlying
__update_freelist_fast() then constructs struct freelist_counters
variables for passing the full freelist+counter combinations to cmpxchg
double.

In most cases we actually start with struct freelist_counters variables,
but then pass the individual fields, only to construct new struct
freelist_counters variables. While it's all inlined and thus should be
efficient, we can simplify this code.

Thus replace the 4 parameters for individual fields with two pointers to
struct freelist_counters wherever applicable. __update_freelist_fast()
can then pass them directly to try_cmpxchg_freelist().

The code is also more obvious as the pattern becomes unified such that
we set up "old" and "new" struct freelist_counters variables upfront as
we fully need them to be, and simply call [__]slab_update_freelist() on
them.  Previously some of the "new" values would be hidden among the
many parameters and thus make it harder to figure out what the code
does.

Reviewed-by: Harry Yoo <harry.yoo@oracle.com>
Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
2025-11-13 10:13:57 +01:00
Documentation RTC for 6.18 2025-10-11 11:56:47 -07:00
LICENSES LICENSES: Replace the obsolete address of the FSF in the GFDL-1.2 2025-07-24 11:15:39 +02:00
arch kbuild: Add '-fms-extensions' to areas with dedicated CFLAGS 2025-10-30 21:26:28 -04:00
block block-6.18-20251009 2025-10-10 10:37:13 -07:00
certs sign-file,extract-cert: use pkcs11 provider for OPENSSL MAJOR >= 3 2024-09-20 19:52:48 +03:00
crypto This push contains the following changes: 2025-10-10 08:56:16 -07:00
drivers kbuild: Add '-fms-extensions' to areas with dedicated CFLAGS 2025-10-30 21:26:28 -04:00
fs jfs: Rename _inline to avoid conflict with clang's '-fms-extensions' 2025-10-29 16:22:21 -07:00
include Revert "i2c: boardinfo: Annotate code used in init phase only" 2025-10-11 23:57:33 +02:00
init printk changes for 6.18 2025-10-04 11:13:11 -07:00
io_uring io_uring/zcrx: increment fallback loop src offset 2025-10-08 07:26:14 -06:00
ipc namespace-6.18-rc1 2025-09-29 11:20:29 -07:00
kernel tracing fixes for v6.18: 2025-10-11 16:06:04 -07:00
lib lib/test_kho: use kho_preserve_vmalloc instead of storing addresses in fdt 2025-10-07 13:48:56 -07:00
mm slab: use struct freelist_counters as parameters in relevant functions 2025-11-13 10:13:57 +01:00
net bpf-fixes 2025-10-11 10:31:38 -07:00
rust 7 hotfixes. All 7 are cc:stable and all 7 are for MM. 2025-10-11 10:14:55 -07:00
samples Char/Misc/IIO/Binder changes for 6.18-rc1 2025-10-04 16:26:32 -07:00
scripts Kbuild: enable -fms-extensions 2025-10-29 16:23:47 -07:00
security integrity-v6.18 2025-10-05 10:48:33 -07:00
sound sound fixes for 6.18-rc1 2025-10-10 09:55:19 -07:00
tools - Remove a bunch of asm implementing condition flags testing in KVM's 2025-10-11 11:19:16 -07:00
usr gen_init_cpio: Ignore fsync() returning EINVAL on pipes 2025-10-07 09:53:05 -07:00
virt hyperv-next for v6.18 2025-10-07 08:40:15 -07:00
.clang-format memblock: drop for_each_free_mem_pfn_range_in_zone_from() 2025-09-14 08:49:03 +03:00
.clippy.toml rust: clean Rust 1.88.0's warning about `clippy::disallowed_macros` configuration 2025-05-07 00:11:47 +02:00
.cocciconfig
.editorconfig .editorconfig: remove trim_trailing_whitespace option 2024-06-13 16:47:52 +02:00
.get_maintainer.ignore MAINTAINERS: remove Alyssa Rosenzweig 2025-09-18 21:17:31 +02:00
.gitattributes .gitattributes: set diff driver for Rust source code files 2023-05-31 17:48:25 +02:00
.gitignore .gitignore: ignore compile_commands.json globally 2025-08-12 15:53:55 -07:00
.mailmap MAINTAINERS, .mailmap: update Umang's email address 2025-10-07 13:48:55 -07:00
.pylintrc tools: docs: parse-headers.py: move it from sphinx dir 2025-08-29 15:54:42 -06:00
.rustfmt.toml rust: add `.rustfmt.toml` 2022-09-28 09:02:20 +02:00
COPYING
CREDITS USB/Thunderbolt changes for 6.18-rc1 2025-10-04 16:07:08 -07:00
Kbuild sched: Make migrate_{en,dis}able() inline 2025-09-25 09:57:16 +02:00
Kconfig io_uring: Rename KConfig to Kconfig 2025-02-19 14:53:27 -07:00
MAINTAINERS Just one series here - Mike Rappoport has taught KEXEC handover to 2025-10-11 10:27:52 -07:00
Makefile Kbuild: enable -fms-extensions 2025-10-29 16:23:47 -07:00
README README: Fix spelling 2024-03-18 03:36:32 -06: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 reStructuredText 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.