linux/fs/ceph
Xiubo Li 3006137ed6 ceph: stop copying to iter at EOF on sync reads
[ Upstream commit 1065da21e5 ]

If EOF is encountered, ceph_sync_read() return value is adjusted down
according to i_size, but the "to" iter is advanced by the actual number
of bytes read.  Then, when retrying, the remainder of the range may be
skipped incorrectly.

Ensure that the "to" iter is advanced only until EOF.

[ idryomov: changelog ]

Fixes: c3d8e0b5de ("ceph: return the real size read when it hits EOF")
Reported-by: Frank Hsiao <frankhsiao@qnap.com>
Signed-off-by: Xiubo Li <xiubli@redhat.com>
Reviewed-by: Ilya Dryomov <idryomov@gmail.com>
Tested-by: Frank Hsiao <frankhsiao@qnap.com>
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-03-26 18:20:11 -04:00
..
acl.c Mixed with some fixes and cleanups, this brings in reasonably complete 2023-09-06 12:10:15 -07:00
addr.c ceph: wait for OSD requests' callbacks to finish when unmounting 2023-08-24 11:24:36 +02:00
cache.c mm, netfs, fscache: stop read optimisation when folio removed from pagecache 2023-08-18 10:12:13 -07:00
cache.h netfs: Further cleanups after struct netfs_inode wrapper introduced 2022-06-10 20:55:21 +01:00
caps.c ceph: prevent use-after-free in encode_cap_msg() 2024-02-23 09:25:16 +01:00
ceph_frag.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
crypto.c ceph: remove unnecessary IS_ERR() check in ceph_fname_to_usr() 2023-10-09 13:35:24 +02:00
crypto.h ceph: add support for encrypted snapshot names 2023-08-24 11:24:36 +02:00
debugfs.c ceph: fix potential use-after-free bug when trimming caps 2023-04-30 12:37:28 +02:00
dir.c ceph: switch ceph_lookup/atomic_open() to use new fscrypt helper 2023-08-24 11:24:37 +02:00
export.c ceph: make ceph_fill_trace and ceph_get_name decrypt names 2023-08-24 11:24:34 +02:00
file.c ceph: stop copying to iter at EOF on sync reads 2024-03-26 18:20:11 -04:00
inode.c ceph: fix incorrect revoked caps assert in ceph_fill_file_size() 2023-10-09 13:35:24 +02:00
io.c ceph: fix kerneldoc copypasta over ceph_start_io_direct 2021-04-27 23:52:23 +02:00
io.h ceph: add buffered/direct exclusionary locking for reads and writes 2019-09-16 12:06:25 +02:00
ioctl.c ceph: add some fscrypt guardrails 2023-08-24 11:24:35 +02:00
ioctl.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
Kconfig ceph: select FS_ENCRYPTION_ALGS if FS_ENCRYPTION 2024-01-25 15:35:44 -08:00
locks.c filelock: move file locking definitions to separate header file 2023-01-11 06:52:32 -05:00
Makefile ceph: fscrypt_auth handling for ceph 2023-08-22 09:01:48 +02:00
mds_client.c ceph: reinitialize mds feature bit even when session in open 2024-02-05 20:14:33 +00:00
mds_client.h ceph: make num_fwd and num_retry to __u32 2023-08-31 14:56:27 +02:00
mdsmap.c ceph: switch to corrected encoding of max_xattr_size in mdsmap 2024-03-15 10:48:13 -04:00
metric.c ceph: never send metrics if disable_send_metrics is set 2023-07-24 13:15:39 +02:00
metric.h ceph: include average/stdev r/w/m latency in mds metrics 2022-03-21 13:35:16 +01:00
quota.c ceph: fix invalid pointer access if get_quota_realm return ERR_PTR 2024-02-05 20:14:33 +00:00
snap.c Mixed with some fixes and cleanups, this brings in reasonably complete 2023-09-06 12:10:15 -07:00
strings.c ceph: add getvxattr op 2022-03-01 18:26:37 +01:00
super.c ceph: wait for OSD requests' callbacks to finish when unmounting 2023-08-24 11:24:36 +02:00
super.h ceph: wait for OSD requests' callbacks to finish when unmounting 2023-08-24 11:24:36 +02:00
util.c ceph: move net/ceph/ceph_fs.c to fs/ceph/util.c 2020-01-27 16:53:40 +01:00
xattr.c Mixed with some fixes and cleanups, this brings in reasonably complete 2023-09-06 12:10:15 -07:00