libxl: fix cleanup of tap devices in libxl__device_destroy
authorIan Campbell <ian.campbell@citrix.com>
Fri, 3 Aug 2012 11:25:29 +0000 (12:25 +0100)
committerIan Campbell <ian.campbell@citrix.com>
Fri, 3 Aug 2012 11:25:29 +0000 (12:25 +0100)
commit4f6dda6a14abb5aa9337b28226518294c3300f58
tree9c7d1a2f53b6fc49a6bc8b27b18cdd68e05ef2d2
parent4c73ff5d726429fc2de884957b3d67b291cee968
libxl: fix cleanup of tap devices in libxl__device_destroy

We pass be_path to tapdisk_destroy but we've already deleted it so it
fails to read tapdisk-params. However it appears that we need to
destroy the tap device after tearing down xenstore, to avoid the leak
reported by Greg Wettstein in
<201207312141.q6VLfJje012656@wind.enjellic.com>.

So read the tapdisk-params in the cleanup transaction, before the
remove, and pass that down to destroy_tapdisk instead. tapdisk-params
may of course be NULL if the device isn't a tap device.

There is no need to tear down the tap device from
libxl__initiate_device_remove since this ultimately calls
libxl__device_destroy.

Propagate and log errors from libxl__device_destroy_tapdisk.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
tools/libxl/libxl_blktap2.c
tools/libxl/libxl_device.c
tools/libxl/libxl_internal.h
tools/libxl/libxl_noblktap2.c