On Wed, 3 Mar 2021 17:07:39 +0100 Eric Farman <far...@linux.ibm.com> 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 <mjros...@linux.ibm.com> > Signed-off-by: Eric Farman <far...@linux.ibm.com> > --- > > 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/cc440ee8-28c5-3208-19db-ebb48ea60...@linux.ibm.com/ > > hw/vfio/ccw.c | 12 ++++++------ > 1 file changed, 6 insertions(+), 6 deletions(-) Thanks, applied.