Jan Kara
6623c19042
writeback: Fix sync livelock due to b_dirty_time processing
...
commit f9cae926f35e8230330f28c7b743ad088611a8de upstream.
When we are processing writeback for sync(2), move_expired_inodes()
didn't set any inode expiry value (older_than_this). This can result in
writeback never completing if there's steady stream of inodes added to
b_dirty_time list as writeback rechecks dirty lists after each writeback
round whether there's more work to be done. Fix the problem by using
sync(2) start time is inode expiry value when processing b_dirty_time
list similarly as for ordinarily dirtied inodes. This requires some
refactoring of older_than_this handling which simplifies the code
noticeably as a bonus.
Fixes: 0ae45f63d4 ("vfs: add support for a lazytime mount option")
CC: stable@vger.kernel.org
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-09-03 11:27:04 +02:00
..
9p
9p: Fix memory leak in v9fs_mount
2020-08-19 08:16:24 +02:00
adfs
affs
affs: fix a memory leak in affs_remount
2020-01-17 19:48:50 +01:00
afs
afs: Fix NULL deref in afs_dynroot_depopulate()
2020-08-26 10:41:05 +02:00
autofs
autofs: fix a leak in autofs_expire_indirect()
2019-10-25 00:03:11 -04:00
befs
bfs
btrfs
btrfs: detect nocow for swap after snapshot delete
2020-09-03 11:27:02 +02:00
cachefiles
cachefiles: Fix race between read_waiter and read_copier involving op->to_do
2020-06-03 08:21:11 +02:00
ceph
ceph: do not access the kiocb after aio requests
2020-09-03 11:26:47 +02:00
cifs
cifs: Fix leak when handling lease break for cached root fid
2020-08-21 13:05:24 +02:00
coda
configfs
configfs: fix config_item refcnt leak in configfs_rmdir()
2020-05-27 17:46:30 +02:00
cramfs
cramfs: fix usage on non-MTD device
2019-11-23 21:44:49 -05:00
crypto
fscrypt: don't evict dirty inodes after removing key
2020-03-18 07:17:53 +01:00
debugfs
debugfs: Check module state before warning in {full/open}_proxy_open()
2020-04-17 10:50:02 +02:00
devpts
dlm
dlm: Fix kobject memleak
2020-08-19 08:16:21 +02:00
ecryptfs
ecryptfs: replace BUG_ON with error handling code
2020-02-28 17:22:26 +01:00
efivarfs
efs
erofs
erofs: fix extended inode could cross boundary
2020-08-19 08:16:26 +02:00
exportfs
exportfs_decode_fh(): negative pinned may become positive without the parent locked
2019-11-10 11:56:05 -05:00
ext2
ext2: fix missing percpu_counter_inc
2020-08-21 13:05:26 +02:00
ext4
fs: prevent BUG_ON in submit_bh_wbc()
2020-09-03 11:26:57 +02:00
f2fs
f2fs: fix use-after-free issue
2020-09-03 11:26:46 +02:00
fat
fat: don't allow to mount if the FAT length == 0
2020-06-17 16:40:36 +02:00
freevxfs
fscache
fuse
fuse: fix weird page warning
2020-07-29 10:18:28 +02:00
gfs2
gfs2: Never call gfs2_block_zero_range with an open transaction
2020-08-26 10:40:48 +02:00
hfs
hfsplus
hfsplus: fix crash and filesystem corruption when deleting files
2020-04-17 10:50:22 +02:00
hostfs
hpfs
hugetlbfs
hugetlbfs: prevent filesystem stacking of hugetlbfs
2020-09-03 11:26:48 +02:00
iomap
iomap: fix return value of iomap_dio_bio_actor on 32bit systems
2020-01-04 19:17:31 +01:00
isofs
jbd2
jbd2: abort journal if free a async write error metadata buffer
2020-09-03 11:26:56 +02:00
jffs2
jffs2: fix UAF problem
2020-08-26 10:40:56 +02:00
jfs
kernfs
kernfs: do not call fsnotify() with name without a parent
2020-08-19 08:16:12 +02:00
lockd
minix
fs/minix: remove expected error message in block_to_path()
2020-08-21 13:05:37 +02:00
nfs
nfs: Fix getxattr kernel panic and memory overflow
2020-08-21 13:05:37 +02:00
nfs_common
nfsd
nfsd: Fix NFSv4 READ on RDMA when using readv
2020-08-11 15:33:42 +02:00
nilfs2
nilfs2: fix null pointer dereference at nilfs_segctor_do_construct()
2020-06-17 16:40:29 +02:00
nls
notify
fanotify: fix ignore mask logic for events on child and on dir
2020-06-17 16:40:24 +02:00
ntfs
utimes: Clamp the timestamps in notify_change()
2020-02-11 04:35:12 -08:00
ocfs2
ocfs2: change slot number type s16 to u16
2020-08-21 13:05:26 +02:00
omfs
openpromfs
orangefs
orangefs: get rid of knob code...
2020-08-21 13:05:29 +02:00
overlayfs
ovl: fix unneeded call to ovl_change_flags()
2020-07-22 09:33:12 +02:00
proc
proc: Use new_inode not new_inode_pseudo
2020-06-17 16:40:33 +02:00
pstore
pstore: Fix linking when crypto API disabled
2020-08-19 08:16:27 +02:00
qnx4
qnx6
quota
fs: avoid softlockups in s_inodes iterators
2020-01-12 12:21:37 +01:00
ramfs
reiserfs
reiserfs: prevent NULL pointer dereference in reiserfs_insert_item()
2020-02-24 08:37:00 +01:00
romfs
romfs: fix uninitialized memory leak in romfs_dev_read()
2020-08-26 10:40:51 +02:00
squashfs
sysfs
sysv
tracefs
tracing: Do not create tracefs files if tracefs lockdown is in effect
2019-10-12 20:49:07 -04:00
ubifs
ubifs: Fix wrong orphan node deletion in ubifs_jnl_update|rename
2020-08-21 13:05:35 +02:00
udf
udf: Fix free space reporting for metadata and virtual partitions
2020-02-24 08:36:44 +01:00
ufs
fs/ufs: avoid potential u32 multiplication overflow
2020-08-21 13:05:37 +02:00
unicode
verity
xfs
xfs: Don't allow logging of XFS_ISTALE inodes
2020-09-03 11:26:44 +02:00
aio.c
aio: fix async fsync creds
2020-06-17 16:40:24 +02:00
anon_inodes.c
attr.c
utimes: Clamp the timestamps in notify_change()
2020-02-11 04:35:12 -08:00
bad_inode.c
binfmt_aout.c
binfmt_elf.c
fs/binfmt_elf.c: allocate initialized memory in fill_thread_core_info()
2020-06-03 08:21:27 +02:00
binfmt_elf_fdpic.c
binfmt_em86.c
binfmt_flat.c
binfmt_flat: revert "binfmt_flat: don't offset the data start"
2020-09-03 11:26:39 +02:00
binfmt_misc.c
binfmt_script.c
block_dev.c
block: Fix use-after-free in blkdev_get()
2020-06-24 17:50:47 +02:00
buffer.c
fs: prevent BUG_ON in submit_bh_wbc()
2020-09-03 11:26:57 +02:00
char_dev.c
chardev: Avoid potential use-after-free in 'chrdev_open()'
2020-01-14 20:08:18 +01:00
compat.c
compat_binfmt_elf.c
compat_ioctl.c
fix compat handling of FICLONERANGE, FIDEDUPERANGE and FS_IOC_FIEMAP
2020-01-09 10:20:05 +01:00
coredump.c
coredump: fix crash when umh is disabled
2020-05-14 07:58:27 +02:00
d_path.c
dax.c
dax: pass NOWAIT flag to iomap_apply
2020-03-05 16:43:36 +01:00
dcache.c
dcookies.c
direct-io.c
fs/direct-io.c: fix kernel-doc warning
2019-10-14 15:04:01 -07:00
drop_caches.c
fs: avoid softlockups in s_inodes iterators
2020-01-12 12:21:37 +01:00
eventfd.c
eventfd: track eventfd_signal() recursion depth
2020-02-11 04:35:37 -08:00
eventpoll.c
do_epoll_ctl(): clean the failure exits up a bit
2020-08-26 10:41:07 +02:00
exec.c
exec: Move would_dump into flush_old_exec
2020-05-20 08:20:34 +02:00
fcntl.c
fhandle.c
file.c
fix multiplication overflow in copy_fdtable()
2020-05-27 17:46:12 +02:00
file_table.c
filesystems.c
fs/filesystems.c: downgrade user-reachable WARN_ONCE() to pr_warn_once()
2020-04-17 10:50:21 +02:00
fs-writeback.c
writeback: Fix sync livelock due to b_dirty_time processing
2020-09-03 11:27:04 +02:00
fs_context.c
fs_parser.c
fs_pin.c
fs_struct.c
fs_types.c
fsopen.c
inode.c
futex: Fix inode life-time issue
2020-03-25 08:25:58 +01:00
internal.h
fs: move guard_bio_eod() after bio_set_op_attrs
2020-01-17 19:48:21 +01:00
io_uring.c
io_uring: Fix NULL pointer dereference in loop_rw_iter()
2020-08-19 08:16:29 +02:00
ioctl.c
compat_ioctl: add compat_ptr_ioctl()
2019-12-17 19:55:30 +01:00
Kconfig
Kconfig.binfmt
libfs.c
libfs: fix infoleak in simple_attr_read()
2020-04-01 11:02:17 +02:00
locks.c
locks: reinstate locks_delete_block optimization
2020-03-25 08:25:41 +01:00
Makefile
mbcache.c
mount.h
mpage.c
fs: move guard_bio_eod() after bio_set_op_attrs
2020-01-17 19:48:21 +01:00
namei.c
namei: only return -ECHILD from follow_dotdot_rcu()
2020-03-05 16:43:48 +01:00
namespace.c
fs/namespace.c: fix use-after-free of mount in mnt_warn_timestamp_expiry()
2019-10-16 23:15:09 -04:00
no-block.c
nsfs.c
open.c
cifs_atomic_open(): fix double-put on late allocation failure
2020-03-18 07:17:51 +01:00
pipe.c
pnode.c
propagate_one(): mnt_set_mountpoint() needs mount_lock
2020-05-02 08:48:44 +02:00
pnode.h
posix_acl.c
proc_namespace.c
read_write.c
fs: allow deduplication of eof block into the end of the destination file
2020-02-11 04:35:23 -08:00
readdir.c
readdir: be more conservative with directory entry names
2020-01-29 16:45:31 +01:00
select.c
seq_file.c
signalfd.c
fs/signalfd.c: fix inconsistent return codes for signalfd4
2020-08-26 10:40:58 +02:00
splice.c
splice: only read in as much information as there is pipe buffer space
2019-12-17 19:56:52 +01:00
stack.c
stat.c
statfs.c
super.c
Fix use after free in get_tree_bdev()
2020-05-06 08:15:15 +02:00
sync.c
timerfd.c
userfaultfd.c
userfaultfd: require CAP_SYS_PTRACE for UFFD_FEATURE_EVENT_FORK
2020-01-04 19:18:32 +01:00
utimes.c
utimes: Clamp the timestamps in notify_change()
2020-02-11 04:35:12 -08:00
xattr.c
xattr: break delegations in {set,remove}xattr
2020-08-11 15:33:39 +02:00