From ee6501ab05175dcb57db3f5899fd1fcfb1957f39 Mon Sep 17 00:00:00 2001 From: Michal Privoznik Date: Thu, 18 Jul 2019 10:58:19 +0200 Subject: [PATCH] virSecurityManagerMetadataLock: Expand the comment on deadlocks MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Document why we need to sort paths while it's still fresh in my memory. Signed-off-by: Michal Privoznik Reviewed-by: Daniel P. Berrangé Tested-by: Daniel Henrique Barboza --- src/security/security_manager.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/security/security_manager.c b/src/security/security_manager.c index c205c3bf17..ade2c96141 100644 --- a/src/security/security_manager.c +++ b/src/security/security_manager.c @@ -1289,7 +1289,12 @@ virSecurityManagerMetadataLock(virSecurityManagerPtr mgr ATTRIBUTE_UNUSED, if (VIR_ALLOC_N(fds, npaths) < 0) return NULL; - /* Sort paths to lock in order to avoid deadlocks. */ + /* Sort paths to lock in order to avoid deadlocks with other + * processes. For instance, if one process wants to lock + * paths A B and there's another that is trying to lock them + * in reversed order a deadlock might occur. But if we sort + * the paths alphabetically then both processes will try lock + * paths in the same order and thus no deadlock can occur. */ qsort(paths, npaths, sizeof(*paths), cmpstringp); for (i = 0; i < npaths; i++) { -- 2.47.2