On Wed, Oct 16, 2024 at 09:23:06 +0200, Martin Kletzander wrote:
Function qemuNamespaceMknodOne() is supposed to return 0 if the file
did
not exist before this function. If, however, the file existed, but was
removed and recreated by this function the @existed flag should be reset
to its original state (false) because the function then behaves the same
The *original* state, if it existed, was 'true'. You're reseting it to the
*proper* state as the code will unlink and re-create it thus that
specific file didn't exist.
way as if the file did not exist as it needed to be recreated.
So reset the @existed flag to properly reflect what happened.
Signed-off-by: Martin Kletzander <mkletzan(a)redhat.com>
---
src/qemu/qemu_namespace.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/qemu/qemu_namespace.c b/src/qemu/qemu_namespace.c
index 71e29b4ba4f6..33a773917373 100644
--- a/src/qemu/qemu_namespace.c
+++ b/src/qemu/qemu_namespace.c
@@ -1022,6 +1022,7 @@ qemuNamespaceMknodOne(qemuNamespaceMknodItem *data)
data->file, data->target);
} else {
VIR_DEBUG("Creating symlink %s -> %s", data->file,
data->target);
+ existed = false;
/* First, unlink the symlink target. Symlinks change and
* therefore we have no guarantees that pre-existing
@@ -1053,6 +1054,7 @@ qemuNamespaceMknodOne(qemuNamespaceMknodItem *data)
} else {
VIR_DEBUG("Creating dev %s (%d,%d)",
data->file, major(data->sb.st_rdev),
minor(data->sb.st_rdev));
+ existed = false;
unlink(data->file);
if (mknod(data->file, data->sb.st_mode, data->sb.st_rdev) < 0)
{
virReportSystemError(errno,
Reviewed-by: Peter Krempa <pkrempa(a)redhat.com>