linux-mainline/fs
Linus Torvalds d888c83fce fs: fix fd table size alignment properly
Jason Donenfeld reports that my commit 1c24a18639 ("fs: fd tables have
to be multiples of BITS_PER_LONG") doesn't work, and the reason is an
embarrassing brown-paper-bag bug.

Yes, we want to align the number of fds to BITS_PER_LONG, and yes, the
reason they might not be aligned is because the incoming 'max_fd'
argument might not be aligned.

But aligining the argument - while simple - will cause a "infinitely
big" maxfd (eg NR_OPEN_MAX) to just overflow to zero.  Which most
definitely isn't what we want either.

The obvious fix was always just to do the alignment last, but I had
moved it earlier just to make the patch smaller and the code look
simpler.  Duh.  It certainly made _me_ look simple.

Fixes: 1c24a18639 ("fs: fd tables have to be multiples of BITS_PER_LONG")
Reported-and-tested-by: Jason A. Donenfeld <Jason@zx2c4.com>
Cc: Fedor Pchelkin <aissur0002@gmail.com>
Cc: Alexey Khoroshilov <khoroshilov@ispras.ru>
Cc: Christian Brauner <brauner@kernel.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2022-03-29 23:29:18 -07:00
..
9p Filesystem folio changes for 5.18 2022-03-22 18:26:56 -07:00
adfs Filesystem folio changes for 5.18 2022-03-22 18:26:56 -07:00
affs Filesystem folio changes for 5.18 2022-03-22 18:26:56 -07:00
afs Filesystem folio changes for 5.18 2022-03-22 18:26:56 -07:00
autofs
befs
bfs Filesystem folio changes for 5.18 2022-03-22 18:26:56 -07:00
btrfs for-5.18/write-streams-2022-03-18 2022-03-26 11:51:46 -07:00
cachefiles for-5.18/write-streams-2022-03-18 2022-03-26 11:51:46 -07:00
ceph The highlights are: 2022-03-24 18:32:48 -07:00
cifs flexible-array transformations for 5.18-rc1 2022-03-24 11:39:32 -07:00
coda Folio changes for 5.18 2022-03-22 17:03:12 -07:00
configfs
cramfs
crypto
debugfs
devpts
dlm
ecryptfs Filesystem folio changes for 5.18 2022-03-22 18:26:56 -07:00
efivarfs
efs
erofs Filesystem folio changes for 5.18 2022-03-22 18:26:56 -07:00
exfat Filesystem folio changes for 5.18 2022-03-22 18:26:56 -07:00
exportfs
ext2 \n 2022-03-25 17:38:15 -07:00
ext4 for-5.18/write-streams-2022-03-18 2022-03-26 11:51:46 -07:00
f2fs for-5.18/write-streams-2022-03-18 2022-03-26 11:51:46 -07:00
fat Merge branch 'akpm' (patches from Andrew) 2022-03-24 14:14:07 -07:00
freevxfs
fscache
fuse Add support for Intel CET-IBT, available since Tigerlake (11th gen), which is a 2022-03-27 10:17:23 -07:00
gfs2 for-5.18/write-streams-2022-03-18 2022-03-26 11:51:46 -07:00
hfs Filesystem folio changes for 5.18 2022-03-22 18:26:56 -07:00
hfsplus Filesystem folio changes for 5.18 2022-03-22 18:26:56 -07:00
hostfs Filesystem folio changes for 5.18 2022-03-22 18:26:56 -07:00
hpfs Filesystem folio changes for 5.18 2022-03-22 18:26:56 -07:00
hugetlbfs Filesystem folio changes for 5.18 2022-03-22 18:26:56 -07:00
iomap Fix buffered write page prefaulting 2022-03-26 12:41:52 -07:00
isofs
jbd2 Filesystem folio changes for 5.18 2022-03-22 18:26:56 -07:00
jffs2
jfs A couple bug fixes 2022-03-29 18:17:30 -07:00
kernfs
ksmbd flexible-array transformations for 5.18-rc1 2022-03-24 11:39:32 -07:00
lockd
minix Merge branch 'akpm' (patches from Andrew) 2022-03-24 14:14:07 -07:00
netfs
nfs NFS client updates for Linux 5.18 2022-03-29 18:55:37 -07:00
nfs_common
nfsd Folio changes for 5.18 2022-03-22 17:03:12 -07:00
nilfs2 Filesystem folio changes for 5.18 2022-03-22 18:26:56 -07:00
nls
notify
ntfs Filesystem folio changes for 5.18 2022-03-22 18:26:56 -07:00
ntfs3 Filesystem folio changes for 5.18 2022-03-22 18:26:56 -07:00
ocfs2 Filesystem folio changes for 5.18 2022-03-22 18:26:56 -07:00
omfs
openpromfs
orangefs Filesystem folio changes for 5.18 2022-03-22 18:26:56 -07:00
overlayfs
proc ptrace: Cleanups for v5.18 2022-03-28 17:29:53 -07:00
pstore
qnx4
qnx6
quota
ramfs
reiserfs \n 2022-03-25 17:38:15 -07:00
romfs
smbfs_common
squashfs Merge branch 'akpm' (patches from Andrew) 2022-03-22 16:11:53 -07:00
sysfs
sysv Filesystem folio changes for 5.18 2022-03-22 18:26:56 -07:00
tracefs
ubifs Driver core changes for 5.18-rc1 2022-03-28 12:41:28 -07:00
udf \n 2022-03-25 17:38:15 -07:00
ufs Filesystem folio changes for 5.18 2022-03-22 18:26:56 -07:00
unicode
vboxsf Filesystem folio changes for 5.18 2022-03-22 18:26:56 -07:00
verity
xfs Add support for Intel CET-IBT, available since Tigerlake (11th gen), which is a 2022-03-27 10:17:23 -07:00
zonefs for-5.18/write-streams-2022-03-18 2022-03-26 11:51:46 -07:00
aio.c for-5.18/write-streams-2022-03-18 2022-03-26 11:51:46 -07:00
anon_inodes.c
attr.c
bad_inode.c
binfmt_aout.c
binfmt_elf_fdpic.c
binfmt_elf_test.c
binfmt_elf.c
binfmt_flat.c
binfmt_misc.c
binfmt_script.c
buffer.c for-5.18/write-streams-2022-03-18 2022-03-26 11:51:46 -07:00
char_dev.c
compat_binfmt_elf.c
coredump.c ptrace: Cleanups for v5.18 2022-03-28 17:29:53 -07:00
d_path.c
dax.c dax for 5.18 2022-03-24 18:12:09 -07:00
dcache.c mm: dcache: use kmem_cache_alloc_lru() to allocate dentry 2022-03-22 15:57:03 -07:00
direct-io.c
drop_caches.c
eventfd.c
eventpoll.c
exec.c ptrace: Cleanups for v5.18 2022-03-28 17:29:53 -07:00
fcntl.c
fhandle.c
file_table.c
file.c fs: fix fd table size alignment properly 2022-03-29 23:29:18 -07:00
filesystems.c
fs_context.c
fs_parser.c
fs_pin.c
fs_struct.c
fs_types.c
fs-writeback.c Merge branch 'akpm' (patches from Andrew) 2022-03-22 16:11:53 -07:00
fsopen.c
init.c
inode.c
internal.h
io_uring.c ptrace: Cleanups for v5.18 2022-03-28 17:29:53 -07:00
io-wq.c ptrace: Cleanups for v5.18 2022-03-28 17:29:53 -07:00
io-wq.h
ioctl.c
Kconfig Folio changes for 5.18 2022-03-22 17:03:12 -07:00
Kconfig.binfmt
kernel_read_file.c
libfs.c
locks.c
Makefile
mbcache.c
mount.h
mpage.c for-5.18/alloc-cleanups-2022-03-25 2022-03-26 11:59:30 -07:00
namei.c
namespace.c fs.rt.v5.18 2022-03-24 10:06:43 -07:00
no-block.c
nsfs.c
open.c
pipe.c fs/pipe.c: local vars have to match types of proper pipe_inode_info fields 2022-03-23 19:00:34 -07:00
pnode.c
pnode.h
posix_acl.c
proc_namespace.c
read_write.c
readdir.c
remap_range.c Filesystem folio changes for 5.18 2022-03-22 18:26:56 -07:00
select.c
seq_file.c
signalfd.c
splice.c
stack.c
stat.c
statfs.c
super.c
sync.c
sysctls.c
timerfd.c
userfaultfd.c userfaultfd: provide unmasked address on page-fault 2022-03-22 15:57:08 -07:00
utimes.c
xattr.c