⬢ DragonFlyBSD Kernel Audit
DF-4230 / fix.diff
← back to finding ↓ download raw
--- a/sys/dev/smbus/cyapa/cyapa.c
+++ b/sys/dev/smbus/cyapa/cyapa.c
@@ -1170,6 +1170,13 @@
 	int npstate;
 	int last_reset = ticks;
 
+	/*
+	 * DF-4230: regs is only written on successful transfers; zero it so
+	 * a dead/absent device yields a deterministic (RUNNING clear) reset
+	 * decision instead of one driven by uninitialized stack data.
+	 */
+	bzero(&regs, sizeof(regs));
+
 	bus = device_get_parent(sc->dev);
 
 	while ((sc->poll_flags & CYPOLL_SHUTDOWN) == 0) {