Initialize result in vioblk notification handler.
authordv <dv@openbsd.org>
Sun, 4 Feb 2024 14:54:51 +0000 (14:54 +0000)
committerdv <dv@openbsd.org>
Sun, 4 Feb 2024 14:54:51 +0000 (14:54 +0000)
In the event the driver kicks the vioblk device, but the guest
doesn't have any available virtqueue space, vmd will return an
uninitialized value. If non-zero, it results in a notification to
the driver and effectively a spurious interrupt.

Found by smatch, reported by and ok jsg@

usr.sbin/vmd/vioblk.c

index 427fdea..b1d393f 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: vioblk.c,v 1.10 2024/02/03 00:28:07 jsg Exp $ */
+/*     $OpenBSD: vioblk.c,v 1.11 2024/02/04 14:54:51 dv Exp $  */
 
 /*
  * Copyright (c) 2023 Dave Voutila <dv@openbsd.org>
@@ -301,7 +301,7 @@ vioblk_notifyq(struct vioblk_dev *dev)
        uint8_t ds;
        off_t offset;
        ssize_t sz;
-       int is_write, notify, i;
+       int is_write, notify = 0, i;
        char *vr;
        struct vring_desc *table, *desc;
        struct vring_avail *avail;