Stop setting ri->ri_bs to prevent a panic caused by rasops accessing its
authorpatrick <patrick@openbsd.org>
Sun, 23 Apr 2023 10:29:35 +0000 (10:29 +0000)
committerpatrick <patrick@openbsd.org>
Sun, 23 Apr 2023 10:29:35 +0000 (10:29 +0000)
uninitialized content.  When we rasops_init() with RI_VCONS, a new screen
is allocated.  If ri->ri_bs is set, this will be copied.  Otherwise a new
one will be allocated and filled with ASCII spaces.  Copying the ri->ri_bs
is useful in case we have an early console which contents we want to keep.
As we do not have an early console here, there's no point in setting it at
the moment.

With this my Hetzner arm64 VM doesn't panic anymore.

ok jcs@ kettenis@

sys/dev/pv/viogpu.c

index c00a6b3..e8a91c3 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: viogpu.c,v 1.1 2023/04/20 19:28:31 jcs Exp $ */
+/*     $OpenBSD: viogpu.c,v 1.2 2023/04/23 10:29:35 patrick Exp $ */
 
 /*
  * Copyright (c) 2021-2023 joshua stein <jcs@openbsd.org>
@@ -92,7 +92,6 @@ struct viogpu_softc {
        struct wsscreen_descr   sc_wsd;
        struct wsscreen_list    sc_wsl;
        struct wsscreen_descr   *sc_scrlist[1];
-       struct wsdisplay_charcell sc_fb_bs[VIOGPU_HEIGHT * VIOGPU_WIDTH];
        int                     console;
        int                     primary;
 
@@ -261,7 +260,6 @@ viogpu_attach(struct device *parent, struct device *self, void *aux)
        ri->ri_gnum = 8;
        ri->ri_rpos = 16;
        ri->ri_rnum = 8;
-       ri->ri_bs = sc->sc_fb_bs;
        rasops_init(ri, VIOGPU_HEIGHT, VIOGPU_WIDTH);
 
        strlcpy(sc->sc_wsd.name, "std", sizeof(sc->sc_wsd.name));