vfio/ccw: Check return code from subchannel quiesce
authorEric Farman <farman@linux.ibm.com>
Thu, 28 Jul 2022 20:49:14 +0000 (22:49 +0200)
committerAlex Williamson <alex.williamson@redhat.com>
Mon, 1 Aug 2022 19:36:47 +0000 (13:36 -0600)
If a subchannel is busy when a close is performed, the subchannel
needs to be quiesced and left nice and tidy, so nothing unexpected
(like a solicited interrupt) shows up while in the closed state.
Unfortunately, the return code from this call isn't checked,
so any busy subchannel is treated as a failing one.

Fix that, so that the close on a busy subchannel happens normally.

Signed-off-by: Eric Farman <farman@linux.ibm.com>
Reviewed-by: Matthew Rosato <mjrosato@linux.ibm.com>
Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
Link: https://lore.kernel.org/r/20220728204914.2420989-4-farman@linux.ibm.com
Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
drivers/s390/cio/vfio_ccw_fsm.c

index 4b8b623..a59c758 100644 (file)
@@ -407,7 +407,7 @@ static void fsm_close(struct vfio_ccw_private *private,
 
        ret = cio_disable_subchannel(sch);
        if (ret == -EBUSY)
-               vfio_ccw_sch_quiesce(sch);
+               ret = vfio_ccw_sch_quiesce(sch);
        if (ret)
                goto err_unlock;