Module Name: src Committed By: riastradh Date: Mon Aug 1 23:30:10 UTC 2022
Modified Files: src/sys/dev/wsfb: genfb.c Log Message: genfb: Handle uninitialized softc in genfb_enable/disable_polling. This can happen due to janky MD kludgerosity like x86 x86_genfb_ddb_trap_callback, which should really be cleaned up, but at least this might help with the recursive traps we've been seeing in syzbot. To generate a diff of this commit: cvs rdiff -u -r1.89 -r1.90 src/sys/dev/wsfb/genfb.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/wsfb/genfb.c diff -u src/sys/dev/wsfb/genfb.c:1.89 src/sys/dev/wsfb/genfb.c:1.90 --- src/sys/dev/wsfb/genfb.c:1.89 Sun Jul 17 13:10:54 2022 +++ src/sys/dev/wsfb/genfb.c Mon Aug 1 23:30:10 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: genfb.c,v 1.89 2022/07/17 13:10:54 riastradh Exp $ */ +/* $NetBSD: genfb.c,v 1.90 2022/08/01 23:30:10 riastradh Exp $ */ /*- * Copyright (c) 2007 Michael Lorenz @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: genfb.c,v 1.89 2022/07/17 13:10:54 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: genfb.c,v 1.90 2022/08/01 23:30:10 riastradh Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -985,6 +985,9 @@ genfb_enable_polling(device_t dev) struct genfb_softc *sc = device_private(dev); struct genfb_private *scp = sc->sc_private; + if (scp == NULL) + return; + if (scp->sc_console_screen.scr_vd) { SCREEN_ENABLE_DRAWING(&scp->sc_console_screen); vcons_hard_switch(&scp->sc_console_screen); @@ -1000,6 +1003,9 @@ genfb_disable_polling(device_t dev) struct genfb_softc *sc = device_private(dev); struct genfb_private *scp = sc->sc_private; + if (scp == NULL) + return; + if (scp->sc_console_screen.scr_vd) { if (scp->sc_ops.genfb_disable_polling) (*scp->sc_ops.genfb_disable_polling)(sc);