From f5059a929e0db6689e908e354b13a60661c143e1 Mon Sep 17 00:00:00 2001 From: "Daniel P. Berrange" Date: Mon, 10 Mar 2014 15:50:19 +0000 Subject: [PATCH] Change QEMU capabilities cache to check ctime instead of mtime Debian's package manager will preserve mtime timestamp on binaries from the time they are built, rather than installed. So if a user downgrades their QEMU dpkg, the libvirt capabilities cache will not refresh. The fix is to use ctime instead of mtime since it cannot be faked. Signed-off-by: Daniel P. Berrange --- src/qemu/qemu_capabilities.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index cae25e0e1f..df5581fb65 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -259,7 +259,7 @@ struct _virQEMUCaps { bool usedQMP; char *binary; - time_t mtime; + time_t ctime; virBitmapPtr flags; @@ -2796,7 +2796,7 @@ virQEMUCapsPtr virQEMUCapsNewForBinary(const char *binary, binary); goto error; } - qemuCaps->mtime = sb.st_mtime; + qemuCaps->ctime = sb.st_ctime; /* Make sure the binary we are about to try exec'ing exists. * Technically we could catch the exec() failure, but that's @@ -2838,7 +2838,7 @@ bool virQEMUCapsIsValid(virQEMUCapsPtr qemuCaps) if (stat(qemuCaps->binary, &sb) < 0) return false; - return sb.st_mtime == qemuCaps->mtime; + return sb.st_ctime == qemuCaps->ctime; } -- 2.47.2