DF-4230 / fix.diff
--- 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(®s, sizeof(regs)); + bus = device_get_parent(sc->dev); while ((sc->poll_flags & CYPOLL_SHUTDOWN) == 0) { |