On 9/16/26 4:32 PM, Eric Farman wrote:
> Both the read and write config paths use wrappers around cds->op_handler,
> depending on the direction the I/O is flowing. But they expect opposite
> values in the returned variable to indicate success.
> 
> Fix this by unifying those checks, where CCW_CMD_READ_CONF needs to
> see !ret as success. The end result is some erroneous data in the
> SCSW response data, but the overall success/failure is correct.
> 
> Cc: [email protected]
> Fixes: d895d25ae2 ("s390x: css: report errors from ccw_dstream_read/write")
> Signed-off-by: Eric Farman <[email protected]>

Reviewed-by: Matthew Rosato <[email protected]>

> ---
>  hw/s390x/virtio-ccw.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/hw/s390x/virtio-ccw.c b/hw/s390x/virtio-ccw.c
> index d700db405b..4622c5d46d 100644
> --- a/hw/s390x/virtio-ccw.c
> +++ b/hw/s390x/virtio-ccw.c
> @@ -475,7 +475,7 @@ static int virtio_ccw_cb(SubchDev *sch, CCW1 ccw)
>          } else {
>              virtio_bus_get_vdev_config(&dev->bus, vdev->config);
>              ret = ccw_dstream_write_buf(&sch->cds, vdev->config, len);
> -            if (ret) {
> +            if (!ret) {
>                  sch->curr_status.scsw.count = ccw.count - len;
>              }
>          }


Reply via email to