Go to file
Andrei Vagin 5a519c8fe4 fs/pipe: use kvcalloc to allocate a pipe_buffer array
Right now, kcalloc is used to allocate a pipe_buffer array.  The size of
the pipe_buffer struct is 40 bytes.  kcalloc allows allocating reliably
chunks with sizes less or equal to PAGE_ALLOC_COSTLY_ORDER (3).  It
means that the maximum pipe size is 3.2MB in this case.

In CRIU, we use pipes to dump processes memory.  CRIU freezes a target
process, injects a parasite code into it and then this code splices
memory into pipes.  If a maximum pipe size is small, we need to do many
iterations or create many pipes.

kvcalloc attempt to allocate physically contiguous memory, but upon
failure, fall back to non-contiguous (vmalloc) allocation and so it
isn't limited by PAGE_ALLOC_COSTLY_ORDER.

The maximum pipe size for non-root users is limited by the
/proc/sys/fs/pipe-max-size sysctl that is 1MB by default, so only the
root user will be able to trigger vmalloc allocations.

Link: https://lkml.kernel.org/r/20220104171058.22580-1-avagin@gmail.com
Signed-off-by: Andrei Vagin <avagin@gmail.com>
Reviewed-by: Dmitry Safonov <0x7f454c46@gmail.com>
Cc: Alexander Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2022-03-23 19:00:34 -07:00
arch Fix for the SLS mitigation, which makes a "SETcc/RET" pair grow to 2022-03-20 09:46:52 -07:00
block block: release rq qos structures for queue without disk 2022-03-14 14:05:41 -06:00
certs
crypto
Documentation Documentation/sparse: add hints about __CHECKER__ 2022-03-23 19:00:33 -07:00
drivers Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2022-03-20 09:27:52 -07:00
fs fs/pipe: use kvcalloc to allocate a pipe_buffer array 2022-03-23 19:00:34 -07:00
include init.h: improve __setup and early_param documentation 2022-03-23 19:00:34 -07:00
init init/main.c: return 1 from handled __setup() functions 2022-03-23 19:00:34 -07:00
ipc
kernel kernel/ksysfs.c: use helper macro __ATTR_RW 2022-03-23 19:00:33 -07:00
lib lib: bitmap: fix many kernel-doc warnings 2022-03-23 19:00:33 -07:00
LICENSES
mm mm: swap: get rid of livelock in swapin readahead 2022-03-17 11:02:13 -07:00
net net: dsa: Add missing of_node_put() in dsa_port_parse_of 2022-03-17 13:13:27 +01:00
samples
scripts checkpatch: use python3 to find codespell dictionary 2022-03-23 19:00:34 -07:00
security
sound
tools linux/types.h: remove unnecessary __bitwise__ 2022-03-23 19:00:33 -07:00
usr
virt
.clang-format
.cocciconfig
.get_maintainer.ignore
.gitattributes
.gitignore
.mailmap MAINTAINERS: Update Jisheng's email address 2022-03-08 17:30:32 +01:00
COPYING
CREDITS
Kbuild
Kconfig
MAINTAINERS Add Paolo Abeni to networking maintainers 2022-03-15 12:16:10 -07:00
Makefile Linux 5.17 2022-03-20 13:14:17 -07: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.