No description
Find a file
Alistair Popple 28e016f00c filemap: Fix serialization adding transparent huge pages to page cache
[ Upstream commit 00fa15e0d5 ]

Commit 793917d997 ("mm/readahead: Add large folio readahead")
introduced support for using large folios for filebacked pages if the
filesystem supports it.

page_cache_ra_order() was introduced to allocate and add these large
folios to the page cache. However adding pages to the page cache should
be serialized against truncation and hole punching by taking
invalidate_lock. Not doing so can lead to data races resulting in stale
data getting added to the page cache and marked up-to-date. See commit
730633f0b7 ("mm: Protect operations adding pages to page cache with
invalidate_lock") for more details.

This issue was found by inspection but a testcase revealed it was
possible to observe in practice on XFS. Fix this by taking
invalidate_lock in page_cache_ra_order(), to mirror what is done for the
non-thp case in page_cache_ra_unbounded().

Signed-off-by: Alistair Popple <apopple@nvidia.com>
Fixes: 793917d997 ("mm/readahead: Add large folio readahead")
Reviewed-by: Jan Kara <jack@suse.cz>
Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2022-06-29 09:04:35 +02:00
arch s390/cpumf: Handle events cycles and instructions identical 2022-06-29 09:04:35 +02:00
block block: pop cached rq before potentially blocking rq_qos_throttle() 2022-06-29 09:04:33 +02:00
certs certs/blacklist_hashes.c: fix const confusion in certs blacklist 2022-06-22 14:28:03 +02:00
crypto crypto: memneq - move into lib/ 2022-06-22 14:28:06 +02:00
Documentation dt-bindings: nvmem: sfp: Add clock properties 2022-06-25 15:29:47 +02:00
drivers gpio: winbond: Fix error code in winbond_gpio_get() 2022-06-29 09:04:35 +02:00
fs io_uring: fail links when poll fails 2022-06-29 09:04:34 +02:00
include sock: redo the psock vs ULP protection check 2022-06-29 09:04:35 +02:00
init gcc-12: disable '-Warray-bounds' universally for now 2022-06-22 14:27:55 +02:00
ipc ipc/mqueue: use get_tree_nodev() in mqueue_get_tree() 2022-06-09 10:30:30 +02:00
kernel rethook: Reject getting a rethook if RCU is not watching 2022-06-29 09:04:30 +02:00
lib crypto: memneq - move into lib/ 2022-06-22 14:28:06 +02:00
LICENSES LICENSES/LGPL-2.1: Add LGPL-2.1-or-later as valid identifiers 2021-12-16 14:33:10 +01:00
mm filemap: Fix serialization adding transparent huge pages to page cache 2022-06-29 09:04:35 +02:00
net sock: redo the psock vs ULP protection check 2022-06-29 09:04:35 +02:00
samples samples/landlock: Format with clang-format 2022-06-09 10:30:46 +02:00
scripts faddr2line: Fix overlapping text section failures, the sequel 2022-06-22 14:28:03 +02:00
security selinux: free contexts previously transferred in selinux_add_opt() 2022-06-22 14:28:10 +02:00
sound ALSA: hda/realtek: Add quirk for Clevo NS50PU 2022-06-29 09:04:25 +02:00
tools selftests: netfilter: correct PKTGEN_SCRIPT_PATHS in nft_concat_range.sh 2022-06-29 09:04:32 +02:00
usr Kbuild updates for v5.18 2022-03-31 11:59:03 -07:00
virt KVM: Free new dirty bitmap if creating a new memslot fails 2022-05-20 13:02:05 -04:00
.clang-format genirq/msi: Make interrupt allocation less convoluted 2021-12-16 22:22:20 +01:00
.cocciconfig
.get_maintainer.ignore Opt out of scripts/get_maintainer.pl 2019-05-16 10:53:40 -07:00
.gitattributes .gitattributes: use 'dts' diff driver for dts files 2019-12-04 19:44:11 -08:00
.gitignore .gitignore: ignore only top-level modules.builtin 2021-05-02 00:43:35 +09:00
.mailmap hotfixes for 5.18-rc7 2022-05-13 10:22:37 -07:00
COPYING COPYING: state that all contributions really are covered by this file 2020-02-10 13:32:20 -08:00
CREDITS MAINTAINERS: replace a Microchip AT91 maintainer 2022-02-09 11:30:01 +01:00
Kbuild kbuild: rename hostprogs-y/always to hostprogs/always-y 2020-02-04 01:53:07 +09:00
Kconfig kbuild: ensure full rebuild when the compiler is updated 2020-05-12 13:28:33 +09:00
MAINTAINERS MAINTAINERS: Add new IOMMU development mailing list 2022-06-29 09:04:27 +02:00
Makefile Linux 5.18.7 2022-06-25 15:29:48 +02:00
README Drop all 00-INDEX files from Documentation/ 2018-09-09 15:08:58 -06:00

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.