From: Roger Pau Monne Date: Wed, 23 Sep 2015 10:06:56 +0000 (+0200) Subject: libxl: fix the cleanup of the backend path when using driver domains X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=546678c6a60f64fb186640460dfa69a837c8fba5;p=people%2Fliuw%2Flibxenctrl-split%2Fxen.git libxl: fix the cleanup of the backend path when using driver domains With the current libxl implementation the control domain will remove both the frontend and the backend xenstore paths of a device that's handled by a driver domain. This is incorrect, since the driver domain possibly needs to access the backend path in order to perform the disconnection and cleanup of the device. Fix this by making sure the control domain only cleans the frontend path, leaving the backend path to be cleaned by the driver domain. Note that if the device is not handled by a driver domain the control domain will perform the removal of both the frontend and the backend paths. Signed-off-by: Roger Pau Monné Acked-by: Ian Jackson Reported-by: Alex Velazquez Cc: Alex Velazquez Cc: Ian Jackson Cc: Ian Campbell Cc: Wei Liu Acked-by: Ian Campbell --- diff --git a/tools/libxl/libxl_device.c b/tools/libxl/libxl_device.c index 85a3662cdf..8bb5e93b5e 100644 --- a/tools/libxl/libxl_device.c +++ b/tools/libxl/libxl_device.c @@ -591,15 +591,15 @@ int libxl__device_destroy(libxl__gc *gc, libxl__device *dev) if (domid == LIBXL_TOOLSTACK_DOMID) { /* - * The toolstack domain is in charge for removing both the - * frontend and the backend path + * The toolstack domain is in charge of removing the + * frontend path. */ libxl__xs_path_cleanup(gc, t, fe_path); - libxl__xs_path_cleanup(gc, t, be_path); - } else if (dev->backend_domid == domid) { + } + if (dev->backend_domid == domid) { /* - * The driver domain is in charge for removing what it can - * from the backend path + * The driver domain is in charge of removing what it can + * from the backend path. */ libxl__xs_path_cleanup(gc, t, be_path); }