Gabriel Krisman Bertazi
cababeac91
f2fs: Return EOF on unaligned end of file DIO read
...
[ Upstream commit 20d0a107fb35f37578b919f62bd474d6d358d579 ]
Reading past end of file returns EOF for aligned reads but -EINVAL for
unaligned reads on f2fs. While documentation is not strict about this
corner case, most filesystem returns EOF on this case, like iomap
filesystems. This patch consolidates the behavior for f2fs, by making
it return EOF(0).
it can be verified by a read loop on a file that does a partial read
before EOF (A file that doesn't end at an aligned address). The
following code fails on an unaligned file on f2fs, but not on
btrfs, ext4, and xfs.
while (done < total) {
ssize_t delta = pread(fd, buf + done, total - done, off + done);
if (!delta)
break;
...
}
It is arguable whether filesystems should actually return EOF or
-EINVAL, but since iomap filesystems support it, and so does the
original DIO code, it seems reasonable to consolidate on that.
Signed-off-by: Gabriel Krisman Bertazi <krisman@collabora.com>
Reviewed-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-09-23 12:10:59 +02:00
..
9p
9p: Fix memory leak in v9fs_mount
2020-08-19 08:15:06 +02:00
adfs
fs/adfs: super: fix use-after-free bug
2019-08-06 19:06:49 +02:00
affs
affs: fix basic permission bits to actually work
2020-09-09 19:04:30 +02:00
afs
afs: Fix NULL deref in afs_dynroot_depopulate()
2020-08-26 10:31:05 +02:00
autofs
autofs: fix a leak in autofs_expire_indirect()
2019-12-13 08:51:01 +01:00
befs
fix a series of Documentation/ broken file name references
2018-06-15 18:10:01 -03:00
bfs
bfs: add sanity check at bfs_fill_super()
2018-12-01 09:37:27 +01:00
btrfs
btrfs: fix wrong address when faulting in pages in the search ioctl
2020-09-17 13:45:28 +02:00
cachefiles
cachefiles: Fix race between read_waiter and read_copier involving op->to_do
2020-06-03 08:19:29 +02:00
ceph
ceph: don't allow setlease on cephfs
2020-09-09 19:04:23 +02:00
cifs
cifs: Fix leak when handling lease break for cached root fid
2020-08-21 11:05:31 +02:00
coda
coda: add error handling for fget
2019-08-06 19:06:51 +02:00
configfs
configfs: fix config_item refcnt leak in configfs_rmdir()
2020-05-27 17:37:32 +02:00
cramfs
Cramfs: fix abad comparison when wrap-arounds occur
2018-11-13 11:08:55 -08:00
crypto
fscrypt: clean up some BUG_ON()s in block encryption/decryption
2019-07-26 09:14:02 +02:00
debugfs
debugfs: fix use-after-free on symlink traversal
2019-05-08 07:21:48 +02:00
devpts
fs/devpts: always delete dcache dentry-s in dput()
2019-03-23 20:09:59 +01:00
dlm
dlm: Fix kobject memleak
2020-08-19 08:15:02 +02:00
ecryptfs
ecryptfs: replace BUG_ON with error handling code
2020-02-28 16:38:59 +01:00
efivarfs
efivars: Call guid_parse() against guid_t type of variable
2018-07-22 14:13:44 +02:00
efs
exofs
exofs_mount(): fix leaks on failure exits
2019-12-05 09:20:32 +01:00
exportfs
exportfs: fix 'passing zero to ERR_PTR()' warning
2020-01-27 14:50:02 +01:00
ext2
ext2: don't update mtime on COW faults
2020-09-09 19:04:28 +02:00
ext4
fs: prevent BUG_ON in submit_bh_wbc()
2020-09-03 11:24:24 +02:00
f2fs
f2fs: Return EOF on unaligned end of file DIO read
2020-09-23 12:10:59 +02:00
fat
fat: don't allow to mount if the FAT length == 0
2020-06-22 09:05:08 +02:00
freevxfs
fscache
fscache: fix race between enablement and dropping of object
2018-12-17 09:24:40 +01:00
fuse
fuse: fix weird page warning
2020-07-29 10:16:46 +02:00
gfs2
gfs2: initialize transaction tr_ailX_lists earlier
2020-09-23 12:10:56 +02:00
hfs
fs/hfs/extent.c: fix array out of bounds read of array extent
2019-12-01 09:17:10 +01:00
hfsplus
hfsplus: fix crash and filesystem corruption when deleting files
2020-04-17 10:48:52 +02:00
hostfs
vfs: discard ATTR_ATTR_FLAG
2018-08-17 16:20:28 -07:00
hpfs
hpfs: remove unnecessary checks on the value of r when assigning error code
2018-08-25 12:42:33 -07:00
hugetlbfs
hugetlb: use same fault hash key for shared and private mappings
2019-05-22 07:37:40 +02:00
isofs
isofs: reject hardware sector size > 2048 bytes
2018-08-21 11:37:41 +02:00
jbd2
jbd2: abort journal if free a async write error metadata buffer
2020-09-03 11:24:24 +02:00
jffs2
jffs2: fix UAF problem
2020-08-26 10:31:01 +02:00
jfs
jfs: fix bogus variable self-initialization
2020-01-27 14:50:33 +01:00
kernfs
kernfs: fix ino wrap-around detection
2019-12-13 08:52:43 +01:00
lockd
lockd: fix decoding of TEST results
2019-12-13 08:51:59 +01:00
minix
fs/minix: remove expected error message in block_to_path()
2020-08-21 11:05:38 +02:00
nfs
NFS: Zero-stateid SETATTR should first return delegation
2020-09-23 12:10:58 +02:00
nfs_common
nfsd
nfsd: apply umask on fs without ACL support
2020-07-09 09:37:11 +02:00
nilfs2
nilfs2: fix null pointer dereference at nilfs_segctor_do_construct()
2020-06-22 09:05:03 +02:00
nls
notify
fanotify: fix ignore mask logic for events on child and on dir
2020-06-30 23:17:00 -04:00
ntfs
ntfs: mft: remove VLA usage
2018-08-17 16:20:27 -07:00
ocfs2
ocfs2: change slot number type s16 to u16
2020-08-21 11:05:33 +02:00
omfs
openpromfs
orangefs
help_next should increase position index
2020-02-24 08:34:53 +01:00
overlayfs
ovl: fix unneeded call to ovl_change_flags()
2020-07-22 09:32:10 +02:00
proc
proc: Use new_inode not new_inode_pseudo
2020-06-22 09:05:06 +02:00
pstore
pstore: Fix linking when crypto API disabled
2020-08-19 08:15:04 +02:00
qnx4
qnx6
quota
fs: avoid softlockups in s_inodes iterators
2020-01-12 12:17:20 +01:00
ramfs
reiserfs
reiserfs: prevent NULL pointer dereference in reiserfs_insert_item()
2020-02-24 08:34:52 +01:00
romfs
romfs: fix uninitialized memory leak in romfs_dev_read()
2020-08-26 10:30:59 +02:00
squashfs
Squashfs: Compute expected length from inode size rather than block length
2018-08-02 09:34:02 -07:00
sysfs
Driver core patches for 4.19-rc1
2018-08-18 11:44:53 -07:00
sysv
sysv: return 'err' instead of 0 in __sysv_write_inode
2018-12-17 09:24:30 +01:00
tracefs
tracefs: Annotate tracefs_ops with __ro_after_init
2018-07-31 11:32:44 -04:00
ubifs
ubifs: remove broken lazytime support
2020-05-27 17:37:30 +02:00
udf
udf: Fix free space reporting for metadata and virtual partitions
2020-02-24 08:34:45 +01:00
ufs
fs/ufs: avoid potential u32 multiplication overflow
2020-08-21 11:05:38 +02:00
xfs
xfs: initialize the shortform attr header padding entry
2020-09-17 13:45:25 +02:00
aio.c
aio: fix async fsync creds
2020-06-22 09:05:01 +02:00
anon_inodes.c
anon_inode_getfile(): switch to alloc_file_pseudo()
2018-07-12 10:04:27 -04:00
attr.c
fs: Fix attr.c kernel-doc
2018-07-03 16:44:45 -04:00
bad_inode.c
get rid of 'opened' argument of ->atomic_open() - part 3
2018-07-12 10:04:20 -04:00
binfmt_aout.c
binfmt_elf.c
fs/binfmt_elf.c: allocate initialized memory in fill_thread_core_info()
2020-06-03 08:19:41 +02:00
binfmt_elf_fdpic.c
treewide: kmalloc() -> kmalloc_array()
2018-06-12 16:19:22 -07:00
binfmt_em86.c
binfmt_flat.c
fs/binfmt_flat.c: make load_flat_shared_library() work
2019-07-03 13:14:44 +02:00
binfmt_misc.c
turn filp_clone_open() into inline wrapper for dentry_open()
2018-07-10 23:29:03 -04:00
binfmt_script.c
exec: load_script: Do not exec truncated interpreter path
2019-11-06 13:05:37 +01:00
block_dev.c
block: Fix use-after-free in blkdev_get()
2020-06-25 15:33:06 +02:00
buffer.c
fs: prevent BUG_ON in submit_bh_wbc()
2020-09-03 11:24:24 +02:00
char_dev.c
chardev: Avoid potential use-after-free in 'chrdev_open()'
2020-01-14 20:06:57 +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:19:07 +01:00
coredump.c
coredump: fix crash when umh is disabled
2020-05-14 07:57:21 +02:00
d_path.c
dax.c
dax: pass NOWAIT flag to iomap_apply
2020-03-05 16:42:12 +01:00
dcache.c
dcache: sort the freeing-without-RCU-delay mess for good.
2019-05-25 18:23:26 +02:00
dcookies.c
direct-io.c
direct-io: allow direct writes to empty inodes
2019-03-05 17:58:50 +01:00
drop_caches.c
fs: avoid softlockups in s_inodes iterators
2020-01-12 12:17:20 +01:00
eventfd.c
eventfd: track eventfd_signal() recursion depth
2020-02-11 04:34:08 -08:00
eventpoll.c
fix regression in "epoll: Keep a reference on files added to the check list"
2020-09-09 19:04:27 +02:00
exec.c
exec: Move would_dump into flush_old_exec
2020-05-20 08:18:50 +02:00
fcntl.c
signal: Don't send signals to tasks that don't exist
2018-08-15 23:03:20 -05:00
fhandle.c
file.c
fix multiplication overflow in copy_fdtable()
2020-05-27 17:37:29 +02:00
file_table.c
overlayfs update for 4.19
2018-08-21 18:19:09 -07:00
filesystems.c
fs/filesystems.c: downgrade user-reachable WARN_ONCE() to pr_warn_once()
2020-04-17 10:48:51 +02:00
fs-writeback.c
writeback: Fix sync livelock due to b_dirty_time processing
2020-09-03 11:24:28 +02:00
fs_pin.c
fs_struct.c
inode.c
futex: Fix inode life-time issue
2020-03-25 08:06:14 +01:00
internal.h
acct_on(): don't mess with freeze protection
2019-05-31 06:46:05 -07:00
ioctl.c
vfs: fix FIGETBSZ ioctl on an overlayfs file
2018-11-21 09:19:14 +01:00
iomap.c
iomap: partially revert 4721a601099 (simulated directio short read on EFAULT)
2019-12-13 08:52:56 +01:00
Kconfig
autofs: remove left-over autofs4 stubs
2018-06-11 08:22:34 -07:00
Kconfig.binfmt
kconfig: move the "Executable file formats" menu to fs/Kconfig.binfmt
2018-08-02 08:06:55 +09:00
libfs.c
libfs: fix infoleak in simple_attr_read()
2020-04-02 15:28:21 +02:00
locks.c
locks: print unsigned ino in /proc/locks
2020-01-09 10:19:00 +01:00
Makefile
autofs: remove left-over autofs4 stubs
2018-06-11 08:22:34 -07:00
mbcache.c
treewide: kmalloc() -> kmalloc_array()
2018-06-12 16:19:22 -07:00
mount.h
mpage.c
mpage: mpage_readpages() should submit IO as read-ahead
2018-08-17 16:20:29 -07:00
namei.c
namei: only return -ECHILD from follow_dotdot_rcu()
2020-03-05 16:42:20 +01:00
namespace.c
fs/namespace.c: fix mountpoint reference counter race
2020-04-29 16:31:26 +02:00
no-block.c
nsfs.c
dcache: sort the freeing-without-RCU-delay mess for good.
2019-05-25 18:23:26 +02:00
open.c
cifs_atomic_open(): fix double-put on late allocation failure
2020-03-18 07:14:21 +01:00
pipe.c
fs: prevent page refcount overflow in pipe_buf_get
2019-05-04 09:20:11 +02:00
pnode.c
propagate_one(): mnt_set_mountpoint() needs mount_lock
2020-05-02 17:26:01 +02:00
pnode.h
posix_acl.c
proc_namespace.c
read_write.c
vfs: avoid problematic remapping requests into partial EOF block
2019-12-01 09:17:04 +01:00
readdir.c
filldir[64]: remove WARN_ON_ONCE() for bad directory entries
2020-01-04 19:13:26 +01:00
select.c
Revert changes to convert to ->poll_mask() and aio IOCB_CMD_POLL
2018-06-28 10:40:47 -07:00
seq_file.c
seq_file: fix problem when seeking mid-record
2019-08-25 10:47:43 +02:00
signalfd.c
fs/signalfd.c: fix inconsistent return codes for signalfd4
2020-08-26 10:31:02 +02:00
splice.c
splice: only read in as much information as there is pipe buffer space
2019-12-17 20:35:43 +01:00
stack.c
stat.c
statfs.c
vfs: Fix EOVERFLOW testing in put_compat_statfs64
2019-10-11 18:21:39 +02:00
super.c
Merge branch 'ida-4.19' of git://git.infradead.org/users/willy/linux-dax
2018-08-26 11:48:42 -07:00
sync.c
timerfd.c
Merge branch 'work.aio' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2018-08-13 20:56:23 -07:00
userfaultfd.c
userfaultfd: require CAP_SYS_PTRACE for UFFD_FEATURE_EVENT_FORK
2020-01-04 19:13:18 +01:00
utimes.c
xattr.c
xattr: break delegations in {set,remove}xattr
2020-08-11 15:32:34 +02:00