diff options
author | Rick Macklem <rmacklem@FreeBSD.org> | 2025-08-09 21:15:07 +0000 |
---|---|---|
committer | Rick Macklem <rmacklem@FreeBSD.org> | 2025-08-09 21:16:18 +0000 |
commit | 4046ad6bb0ee542a42d89a48a7d6a56564ed7f33 (patch) | |
tree | b4d368c39fe8a17fae35b6cfb39ef83d3135913f /contrib/unvis/unvis.1 | |
parent | 7a9834041c91596af83fa15768321cdc7290880b (diff) |
Commit 197997a broke handling of the offset
arguments to copy_file_range() when specified non-NULL.
The code fails to update the offsets and, as such, a loop like:
do {
len = copy_file_range(infd, &inpos, outfd, &outpos,
SSIZE_MAX, 0);
} while (len > 0);
becomes an infinite loop, just doing the same copy over and
over again.
This patch fixes it.
The clause "(foffsets_locked || foffsets_set)" in the if is not
actually needed for correctness, but I thought it made the code
a little more readable and might avoid some static
analyzer from throwing a "used before being set" for
the savinoff and savoutoff variables.
Reviewed by: markj
Differential Revision: https://reviews.freebsd.org/D51845
MFC after: 2 weeks
Fixes: 197997a4c36d ("file: Fix offset handling in kern_copy_file_range()")
Diffstat (limited to 'contrib/unvis/unvis.1')
0 files changed, 0 insertions, 0 deletions