Message ID | 20190910171753.3775-1-paul.durrant@citrix.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | xen-bus: check whether the frontend is active during device reset... | expand |
On Tue, Sep 10, 2019 at 06:17:53PM +0100, Paul Durrant wrote: > ...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> Thanks,
diff --git a/hw/xen/xen-bus.c b/hw/xen/xen-bus.c index a04478ad4f..025df5e59f 100644 --- a/hw/xen/xen-bus.c +++ b/hw/xen/xen-bus.c @@ -560,7 +560,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); }
...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> --- Cc: Stefano Stabellini <sstabellini@kernel.org> Cc: Anthony Perard <anthony.perard@citrix.com> --- hw/xen/xen-bus.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)