Skip to content

Commit

Permalink
ui/console: sanitize search in qemu_graphic_console_is_multihead()
Browse files Browse the repository at this point in the history
qemu_graphic_console_is_multihead() declares the graphical console "c" a
"multihead" console if there are two different graphical consoles in the
system that (a) both reference "c->device", and (b) have different
"c->head" numbers. In effect, if at least two graphical consoles exist
that are different heads of the same device that underlies "c". In fact,
"c" may be one of these two graphical consoles, or "c" may differ from
both of those consoles (in case "c->device" has at least three heads).

The loop currently uses this awkward "two different consoles" approach
because the function used not to have access to "c", only to "c->device",
which didn't allow for fetching (and comparing) "c->head". But, we've
changed that in the last patch; we now pass all of "c" to
qemu_graphic_console_is_multihead().

Thus, look for the *first* (and possibly *only*) graphical console, if
any, that refers to the same "device" as "c", but by a different "head"
number.

Cc: "Marc-André Lureau" <marcandre.lureau@redhat.com> (odd fixer:Graphics)
Cc: Gerd Hoffmann <kraxel@redhat.com> (odd fixer:Graphics)
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Message-ID: <20230913144959.41891-5-lersek@redhat.com>
  • Loading branch information
lersek authored and elmarco committed Oct 3, 2023
1 parent 2c0c4c1 commit 65d7ceb
Showing 1 changed file with 1 addition and 6 deletions.
7 changes: 1 addition & 6 deletions ui/console.c
Original file line number Diff line number Diff line change
Expand Up @@ -1437,8 +1437,6 @@ bool qemu_console_is_gl_blocked(QemuConsole *con)
static bool qemu_graphic_console_is_multihead(QemuGraphicConsole *c)
{
QemuConsole *con;
uint32_t f = 0xffffffff;
uint32_t h;

QTAILQ_FOREACH(con, &consoles, next) {
QemuGraphicConsole *candidate;
Expand All @@ -1452,10 +1450,7 @@ static bool qemu_graphic_console_is_multihead(QemuGraphicConsole *c)
continue;
}

h = candidate->head;
if (f == 0xffffffff) {
f = h;
} else if (h != f) {
if (candidate->head != c->head) {
return true;
}
}
Expand Down

0 comments on commit 65d7ceb

Please sign in to comment.