Changwei Ge
beb3ef51cf
ocfs2: no need try to truncate file beyond i_size
...
commit 783fda856e1034dee90a873f7654c418212d12d7 upstream.
Linux fallocate(2) with FALLOC_FL_PUNCH_HOLE mode set, its offset can
exceed the inode size. Ocfs2 now doesn't allow that offset beyond inode
size. This restriction is not necessary and violates fallocate(2)
semantics.
If fallocate(2) offset is beyond inode size, just return success and do
nothing further.
Otherwise, ocfs2 will crash the kernel.
kernel BUG at fs/ocfs2//alloc.c:7264!
ocfs2_truncate_inline+0x20f/0x360 [ocfs2]
ocfs2_remove_inode_range+0x23c/0xcb0 [ocfs2]
__ocfs2_change_file_space+0x4a5/0x650 [ocfs2]
ocfs2_fallocate+0x83/0xa0 [ocfs2]
vfs_fallocate+0x148/0x230
SyS_fallocate+0x48/0x80
do_syscall_64+0x79/0x170
Signed-off-by: Changwei Ge <chge@linux.alibaba.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Reviewed-by: Joseph Qi <joseph.qi@linux.alibaba.com>
Cc: Mark Fasheh <mark@fasheh.com>
Cc: Joel Becker <jlbec@evilplan.org>
Cc: Junxiao Bi <junxiao.bi@oracle.com>
Cc: Changwei Ge <gechangwei@live.cn>
Cc: Gang He <ghe@suse.com>
Cc: Jun Piao <piaojun@huawei.com>
Cc: <stable@vger.kernel.org>
Link: http://lkml.kernel.org/r/20200407082754.17565-1-chge@linux.alibaba.com
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-04-17 10:50:21 +02:00
..
9p
9p pull request for inclusion in 5.4
2019-09-27 15:10:34 -07:00
adfs
affs
affs: fix a memory leak in affs_remount
2020-01-17 19:48:50 +01:00
afs
rxrpc: Fix call interruptibility handling
2020-04-17 10:49:57 +02:00
autofs
autofs: fix a leak in autofs_expire_indirect()
2019-10-25 00:03:11 -04:00
befs
bfs
btrfs
btrfs: use nofs allocations for running delayed items
2020-04-17 10:50:15 +02:00
cachefiles
ceph
ceph: canonicalize server path in place
2020-04-13 10:48:11 +02:00
cifs
CIFS: Fix bug which the return value by asynchronous read is error
2020-04-17 10:50:14 +02:00
coda
y2038: add inode timestamp clamping
2019-09-19 09:42:37 -07:00
configfs
utimes: Clamp the timestamps in notify_change()
2020-02-11 04:35:12 -08: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
ecryptfs
ecryptfs: replace BUG_ON with error handling code
2020-02-28 17:22:26 +01:00
efivarfs
efs
erofs
erofs: correct the remaining shrink objects
2020-04-17 10:50:16 +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: Adjust indentation in ext2_fill_super
2020-02-11 04:35:45 -08:00
ext4
ext4: fix a data race at inode->i_blocks
2020-04-17 10:50:21 +02:00
f2fs
f2fs: fix to add swap extent correctly
2020-03-05 16:43:48 +01:00
fat
fat: fix uninit-memory access for partial initialized inode
2020-03-12 13:00:19 +01:00
freevxfs
fscache
fuse
fuse: fix stack use after return
2020-03-18 07:17:52 +01:00
gfs2
gfs2: Don't demote a glock until its revokes are written
2020-04-17 10:50:03 +02:00
hfs
hfsplus
hostfs
hpfs
hugetlbfs
mm/hugetlbfs: fix for_each_hstate() loop in init_hugetlbfs_fs()
2020-01-04 19:19:19 +01:00
iomap
iomap: fix return value of iomap_dio_bio_actor on 32bit systems
2020-01-04 19:17:31 +01:00
isofs
y2038: add inode timestamp clamping
2019-09-19 09:42:37 -07:00
jbd2
jbd2: fix data races at struct journal_head
2020-03-21 08:11:57 +01:00
jffs2
Revert "jffs2: Fix possible null-pointer dereferences in jffs2_add_frag_to_fragtree()"
2019-12-04 22:31:06 +01:00
jfs
y2038: add inode timestamp clamping
2019-09-19 09:42:37 -07:00
kernfs
kernfs: fix ino wrap-around detection
2019-12-13 08:42:53 +01:00
lockd
minix
nfs
NFS: Fix a page leak in nfs_destroy_unlinked_subrequests()
2020-04-17 10:50:20 +02:00
nfs_common
nfsd
nfsd: fsnotify on rmdir under nfsd/clients/
2020-04-17 10:50:20 +02:00
nilfs2
nls
notify
fs: call fsnotify_sb_delete after evict_inodes
2020-01-12 12:21:38 +01:00
ntfs
utimes: Clamp the timestamps in notify_change()
2020-02-11 04:35:12 -08:00
ocfs2
ocfs2: no need try to truncate file beyond i_size
2020-04-17 10:50:21 +02:00
omfs
openpromfs
orangefs
help_next should increase position index
2020-02-24 08:37:02 +01:00
overlayfs
ovl: fix lseek overflow on 32bit
2020-02-11 04:35:24 -08:00
proc
proc/meminfo: fix output alignment
2019-10-19 06:32:32 -04:00
pstore
pstore: pstore_ftrace_seq_next should increase position index
2020-04-17 10:50:12 +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
Merge branch 'work.mount2' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2019-09-19 10:06:57 -07:00
squashfs
Merge branch 'work.mount2' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2019-09-19 10:06:57 -07:00
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 ino_t format warnings in orphan_delete()
2020-03-05 16:43:50 +01:00
udf
udf: Fix free space reporting for metadata and virtual partitions
2020-02-24 08:36:44 +01:00
ufs
y2038: add inode timestamp clamping
2019-09-19 09:42:37 -07:00
unicode
verity
xfs
xfs: clear kernel only flags in XFS_IOC_ATTRMULTI_BY_HANDLE
2020-03-05 16:43:51 +01:00
aio.c
aio: prevent potential eventfd recursion on poll
2020-02-11 04:35:37 -08: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
elf: don't use MAP_FIXED_NOREPLACE for elf executable mappings
2019-10-06 13:53:27 -07:00
binfmt_elf_fdpic.c
binfmt_em86.c
binfmt_flat.c
binfmt_misc.c
binfmt_script.c
block_dev.c
bdev: Refresh bdev size for disks without partitioning
2019-12-13 08:43:19 +01:00
buffer.c
fs: move guard_bio_eod() after bio_set_op_attrs
2020-01-17 19:48:21 +01: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
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
epoll: fix possible lost wakeup on epoll_ctl() path
2020-03-25 08:25:57 +01:00
exec.c
signal: Extend exec_id to 64bits
2020-04-17 10:50:12 +02:00
fcntl.c
fhandle.c
file.c
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
memcg: fix a crash in wb_workfn when a device disappears
2020-02-11 04:35:11 -08: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: honor original task RLIMIT_FSIZE
2020-04-17 10:50:16 +02:00
ioctl.c
compat_ioctl: add compat_ptr_ioctl()
2019-12-17 19:55:30 +01:00
Kconfig
fs-verity for 5.4
2019-09-18 16:59:14 -07:00
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
fs-verity for 5.4
2019-09-18 16:59:14 -07:00
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
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
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
vfs: Fix EOVERFLOW testing in put_compat_statfs64
2019-10-03 14:21:35 -07:00
super.c
fs: call fsnotify_sb_delete after evict_inodes
2020-01-12 12:21:38 +01: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