On Wed, 3 Mar 2021 17:07:39 +0100 Eric Farman <[email protected]> wrote:
> A pwrite() call returns the number of bytes written (or -1 on error), > and vfio-ccw compares this number with the size of the region to > determine if an error had occurred or not. > > If they are not equal, this is a failure and the errno is used to > determine exactly how things failed. An errno of zero is possible > (though unlikely) in this situation and would be translated to a > successful operation. > > If they ARE equal, the ret_code field is read from the region to > determine how to proceed. While the kernel sets the ret_code field > as necessary, the region and thus this field is not "written back" > to the user. So the value can only be what it was initialized to, > which is zero. > > So, let's convert an unexpected length with errno of zero to a > return code of -EFAULT, and explicitly set an expected length to > a return code of zero. This will be a little safer and clearer. > > Suggested-by: Matthew Rosato <[email protected]> > Signed-off-by: Eric Farman <[email protected]> > --- > > Notes: > Changes v1->v2: > - Add code to handle an unexpected length being returned, > but errno is not set. [CH] > > v1: > https://lore.kernel.org/qemu-devel/[email protected]/ > > hw/vfio/ccw.c | 12 ++++++------ > 1 file changed, 6 insertions(+), 6 deletions(-) Thanks, applied.
