aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Durrant <paul.durrant@citrix.com>2019-09-10 18:17:53 +0100
committerMichael Roth <mdroth@linux.vnet.ibm.com>2019-10-14 18:34:20 -0500
commita678cd4d30cce2597340c22d88b486816d93bc76 (patch)
tree80913c063faf07093c9452cf8bc4405cf903cc04
parent6341bef4684e59d87735f6543a8b205b1f34d3a3 (diff)
downloadqemu-a678cd4d30cce2597340c22d88b486816d93bc76.zip
qemu-a678cd4d30cce2597340c22d88b486816d93bc76.tar.gz
qemu-a678cd4d30cce2597340c22d88b486816d93bc76.tar.bz2
xen-bus: check whether the frontend is active during device reset...
...not the backend Commit cb323146 "xen-bus: Fix backend state transition on device reset" contained a subtle mistake. The hunk @@ -539,11 +556,11 @@ static void xen_device_backend_changed(void *opaque) /* * If the toolstack (or unplug request callback) has set the backend - * state to Closing, but there is no active frontend (i.e. the - * state is not Connected) then set the backend state to Closed. + * state to Closing, but there is no active frontend then set the + * backend state to Closed. */ if (xendev->backend_state == XenbusStateClosing && - xendev->frontend_state != XenbusStateConnected) { + !xen_device_state_is_active(state)) { xen_device_backend_set_state(xendev, XenbusStateClosed); } mistakenly replaced the check of 'xendev->frontend_state' with a check (now in a helper function) of 'state', which actually equates to 'xendev->backend_state'. This patch fixes the mistake. Fixes: cb3231460747552d70af9d546dc53d8195bcb796 Signed-off-by: Paul Durrant <paul.durrant@citrix.com> Reviewed-by: Anthony PERARD <anthony.perard@citrix.com> Message-Id: <20190910171753.3775-1-paul.durrant@citrix.com> Signed-off-by: Anthony PERARD <anthony.perard@citrix.com> (cherry picked from commit df6180bb56cd03949c2c64083da58755fed81a61) Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
-rw-r--r--hw/xen/xen-bus.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/hw/xen/xen-bus.c b/hw/xen/xen-bus.c
index 0a1033d..775c0d6 100644
--- a/hw/xen/xen-bus.c
+++ b/hw/xen/xen-bus.c
@@ -559,7 +559,7 @@ static void xen_device_backend_changed(void *opaque)
* backend state to Closed.
*/
if (xendev->backend_state == XenbusStateClosing &&
- !xen_device_state_is_active(state)) {
+ !xen_device_state_is_active(xendev->frontend_state)) {
xen_device_backend_set_state(xendev, XenbusStateClosed);
}