[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[xen master] tools: fix error path of xendevicemodel_open()



commit f91d103e74d4c2efa60fb42b6e9d530a92838f8e
Author:     Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
AuthorDate: Wed Jun 10 12:40:04 2020 +0100
Commit:     Wei Liu <wl@xxxxxxx>
CommitDate: Fri Jun 26 10:29:26 2020 +0000

    tools: fix error path of xendevicemodel_open()
    
    c/s 6902cb00e03 "tools/libxendevicemodel: extract functions and add a compat
    layer" introduced calls to both xencall_open() and 
osdep_xendevicemodel_open()
    but failed to fix up the error path.
    
    c/s f68c7c618a3 "libs/devicemodel: free xencall handle in error path in
    _open()" fixed up the xencall_open() aspect of the error path (missing the
    osdep_xendevicemodel_open() aspect), but positioned the xencall_close()
    incorrectly, creating the same pattern proved to be problematic by c/s
    30a72f02870 "tools: fix error path of xenhypfs_open()".
    
    Reposition xtl_logger_destroy(), and introduce the missing
    osdep_xendevicemodel_close().
    
    Fixes: 6902cb00e03 ("tools/libxendevicemodel: extract functions and add a 
compat layer")
    Fixes: f68c7c618a3 ("libs/devicemodel: free xencall handle in error path in 
_open()")
    Backport: 4.9+
    Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
    Reviewed-by: Juergen Gross <jgross@xxxxxxxx>
    Release-acked-by: Paul Durrant <paul@xxxxxxx>
    Reviewed-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
---
 tools/libs/devicemodel/core.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/tools/libs/devicemodel/core.c b/tools/libs/devicemodel/core.c
index db501d9e80..4d4063956d 100644
--- a/tools/libs/devicemodel/core.c
+++ b/tools/libs/devicemodel/core.c
@@ -67,9 +67,10 @@ xendevicemodel_handle *xendevicemodel_open(xentoollog_logger 
*logger,
     return dmod;
 
 err:
-    xtl_logger_destroy(dmod->logger_tofree);
+    osdep_xendevicemodel_close(dmod);
     xentoolcore__deregister_active_handle(&dmod->tc_ah);
     xencall_close(dmod->xcall);
+    xtl_logger_destroy(dmod->logger_tofree);
     free(dmod);
     return NULL;
 }
--
generated by git-patchbot for /home/xen/git/xen.git#master



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.