No description
Find a file
David Howells 6c46fa5689 afs: Fix infinite loop found by xfstest generic/676
[ Upstream commit 17eabd4256 ]

In AFS, a directory is handled as a file that the client downloads and
parses locally for the purposes of performing lookup and getdents
operations.  The in-kernel afs filesystem has a number of functions that
do this.

A directory file is arranged as a series of 2K blocks divided into
32-byte slots, where a directory entry occupies one or more slots, plus
each block starts with one or more metadata blocks.

When parsing a block, if the last slots are occupied by a dirent that
occupies more than a single slot and the file position points at a slot
that's not the initial one, the logic in afs_dir_iterate_block() that
skips over it won't advance the file pointer to the end of it.  This
will cause an infinite loop in getdents() as it will keep retrying that
block and failing to advance beyond the final entry.

Fix this by advancing the file pointer if the next entry will be beyond
it when we skip a block.

This was found by the generic/676 xfstest but can also be triggered with
something like:

	~/xfstests-dev/src/t_readdir_3 /xfstest.test/z 4000 1

Fixes: 1da177e4c3 ("Linux-2.6.12-rc2")
Signed-off-by: David Howells <dhowells@redhat.com>
Reviewed-by: Marc Dionne <marc.dionne@auristor.com>
Tested-by: Marc Dionne <marc.dionne@auristor.com>
cc: linux-afs@lists.infradead.org
Link: http://lore.kernel.org/r/165391973497.110268.2939296942213894166.stgit@warthog.procyon.org.uk/
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2022-06-14 18:41:25 +02:00
arch s390/mcck: isolate SIE instruction when setting CIF_MCCK_GUEST flag 2022-06-14 18:41:25 +02:00
block blk-mq: do not update io_ticks with passthrough requests 2022-06-14 18:41:23 +02:00
certs certs: Fix build error when CONFIG_MODULE_SIG_KEY is empty 2022-01-23 00:08:44 +09:00
crypto crypto: cryptd - Protect per-CPU resource by disabling BH. 2022-06-09 10:26:07 +02:00
Documentation regulator: mt6315-regulator: fix invalid allowed mode 2022-06-14 18:41:25 +02:00
drivers gpio: pca953x: use the correct register address to do regcache sync 2022-06-14 18:41:25 +02:00
fs afs: Fix infinite loop found by xfstest generic/676 2022-06-14 18:41:25 +02:00
include net: sched: add barrier to fix packet stuck problem for lockless qdisc 2022-06-14 18:41:24 +02:00
init Kconfig: Add option for asm goto w/ tied outputs to workaround clang-13 bug 2022-06-09 10:26:25 +02:00
ipc ipc/mqueue: use get_tree_nodev() in mqueue_get_tree() 2022-06-09 10:26:06 +02:00
kernel bpf: Fix probe read error in ___bpf_prog_run() 2022-06-14 18:41:22 +02:00
lib list: test: Add a test for list_is_head() 2022-06-09 10:26:31 +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 mm/memremap: fix missing call to untrack_pfn() in pagemap_range() 2022-06-09 10:26:28 +02:00
net tcp: tcp_rtx_synack() can be called from process context 2022-06-14 18:41:24 +02:00
samples samples/landlock: Format with clang-format 2022-06-09 10:26:22 +02:00
scripts modpost: fix removing numeric suffixes 2022-06-14 18:41:21 +02:00
security ima: remove the IMA_TEMPLATE Kconfig option 2022-06-09 10:26:25 +02:00
sound ASoC: fsl_sai: Fix FSL_SAI_xDR/xFR definition 2022-06-14 18:41:20 +02:00
tools selftests/bpf: fix stacktrace_build_id with missing kprobe/urandom_read 2022-06-14 18:41:22 +02:00
usr kbuild: remove include/linux/cyclades.h from header file check 2022-01-27 08:51:08 +01:00
virt KVM: Free new dirty bitmap if creating a new memslot fails 2022-05-25 09:59:03 +02:00
.clang-format genirq/msi: Make interrupt allocation less convoluted 2021-12-16 22:22:20 +01:00
.cocciconfig
.get_maintainer.ignore
.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 MAINTAINERS: Update Jisheng's email address 2022-03-08 17:30:32 +01: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 net: dsa: realtek-smi: move to subdirectory 2022-04-08 13:58:12 +02:00
Makefile Linux 5.17.14 2022-06-09 10:26:33 +02: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.