Fscrypt rmw fails when end of a write lines up with end of
a block or end of the file.
Fixes: https://tracker.ceph.com/issues/65745
Signed-off-by: Christopher Hoffman <choffman@redhat.com>
ofs_in_end_block = fscrypt_ofs_in_block(endoff - 1);
need_read_start = ofs_in_start_block >= 0;
- need_read_end = (endoff < in->effective_size() && ofs_in_end_block < FSCRYPT_BLOCK_SIZE - 1 && start_block != end_block);
+ need_read_end = (endoff <= in->effective_size() && ofs_in_end_block < FSCRYPT_BLOCK_SIZE && start_block != end_block);
read_start_size = FSCRYPT_BLOCK_SIZE;
bool need_read = need_read_start | need_read_end;