No description
Find a file
David Howells 17eabd4256 afs: Fix infinite loop found by xfstest generic/676
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>
2022-06-01 11:11:51 -07:00
arch pwm: Changes for v5.19-rc1 2022-06-01 10:49:11 -07:00
block Page cache changes for 5.19 2022-05-24 19:55:07 -07:00
certs Kbuild updates for v5.19 2022-05-26 12:09:50 -07:00
crypto This update includes the following changes: 2022-05-27 18:06:49 -07:00
Documentation pwm: Changes for v5.19-rc1 2022-06-01 10:49:11 -07:00
drivers pwm: Changes for v5.19-rc1 2022-06-01 10:49:11 -07:00
fs afs: Fix infinite loop found by xfstest generic/676 2022-06-01 11:11:51 -07:00
include pwm: Changes for v5.19-rc1 2022-06-01 10:49:11 -07:00
init RISC-V Patches for the 5.19 Merge Window, Part 1 2022-05-31 14:10:54 -07:00
ipc ipc/mqueue: use get_tree_nodev() in mqueue_get_tree() 2022-05-09 18:29:21 -07:00
kernel RISC-V Patches for the 5.19 Merge Window, Part 1 2022-05-31 14:10:54 -07:00
lib tracing updates for 5.19: 2022-05-29 10:31:36 -07:00
LICENSES LICENSES/LGPL-2.1: Add LGPL-2.1-or-later as valid identifiers 2021-12-16 14:33:10 +01:00
mm RISC-V Patches for the 5.19 Merge Window, Part 1 2022-05-31 14:10:54 -07:00
net NFS Client Updates for Linux 5.18 2022-05-31 16:58:24 -07:00
samples drm for 5.19-rc1 2022-05-25 16:18:27 -07:00
scripts Not a lot of material this cycle. Many singleton patches against various 2022-05-27 11:22:03 -07:00
security linux-kselftest-kunit-5.19-rc1 2022-05-25 11:32:53 -07:00
sound m68knommu: changes for linux 5.19 2022-05-30 10:56:18 -07:00
tools RISC-V Patches for the 5.19 Merge Window, Part 1 2022-05-31 14:10:54 -07:00
usr Not a lot of material this cycle. Many singleton patches against various 2022-05-27 11:22:03 -07:00
virt S390: 2022-05-26 14:20:14 -07:00
.clang-format clang-format: Fix space after for_each macros 2022-05-20 19:27:16 +02: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 kbuild: split the second line of *.mod into *.usyms 2022-05-08 03:16:59 +09:00
.mailmap Scheduler changes in this cycle were: 2022-05-24 11:11:13 -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 pwm: Changes for v5.19-rc1 2022-06-01 10:49:11 -07:00
Makefile Kbuild updates for v5.19 2022-05-26 12:09:50 -07: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.