add missing child activate handling, found due to idiom inspection
authorderaadt <deraadt@openbsd.org>
Sun, 18 Aug 2024 03:25:04 +0000 (03:25 +0000)
committerderaadt <deraadt@openbsd.org>
Sun, 18 Aug 2024 03:25:04 +0000 (03:25 +0000)
tested by phessler, input from kettenis

sys/dev/i2c/iatp.c
sys/dev/i2c/ietp.c
sys/dev/i2c/ihidev.c

index 7c233de..701289d 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: iatp.c,v 1.9 2022/04/06 18:59:28 naddy Exp $ */
+/* $OpenBSD: iatp.c,v 1.10 2024/08/18 03:25:04 deraadt Exp $ */
 /*
  * Atmel maXTouch i2c touchscreen/touchpad driver
  * Copyright (c) 2016 joshua stein <jcs@openbsd.org>
@@ -295,9 +295,11 @@ int
 iatp_activate(struct device *self, int act)
 {
        struct iatp_softc *sc = (struct iatp_softc *)self;
+       int rv;
 
        switch (act) {
        case DVACT_QUIESCE:
+               rv = config_activate_children(self, act);
 #if 0
                /* XXX: causes dwiic troubles */
                iatp_t7_set_power_mode(sc, MXT_T7_POWER_MODE_DEEP_SLEEP);
@@ -307,12 +309,13 @@ iatp_activate(struct device *self, int act)
                sc->sc_busy = 1;
                iatp_init(sc);
                sc->sc_busy = 0;
+               rv = config_activate_children(self, act);
+               break;
+       default:
+               rv = config_activate_children(self, act);
                break;
        }
-
-       config_activate_children(self, act);
-
-       return 0;
+       return rv;
 }
 
 int
index 353eb90..fac002b 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: ietp.c,v 1.2 2023/07/21 02:19:49 jcs Exp $ */
+/* $OpenBSD: ietp.c,v 1.3 2024/08/18 03:25:04 deraadt Exp $ */
 /*
  * Elan I2C Touchpad driver
  *
@@ -304,11 +304,13 @@ int
 ietp_activate(struct device *self, int act)
 {
        struct ietp_softc *sc = (struct ietp_softc *)self;
+       int rv;
 
        DPRINTF(("%s(%d)\n", __func__, act));
 
        switch (act) {
        case DVACT_QUIESCE:
+               rv = config_activate_children(self, act);
                sc->sc_dying = 1;
                if (ietp_set_power(sc, I2C_HID_POWER_OFF))
                        printf("%s: failed to power down\n",
@@ -317,12 +319,13 @@ ietp_activate(struct device *self, int act)
        case DVACT_WAKEUP:
                ietp_reset(sc);
                sc->sc_dying = 0;
+               rv = config_activate_children(self, act);
+               break;
+       default:
+               rv = config_activate_children(self, act);
                break;
        }
-
-       config_activate_children(self, act);
-
-       return 0;
+       return rv;
 }
 
 void
index d028930..a735b01 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: ihidev.c,v 1.29 2023/08/12 10:03:05 kettenis Exp $ */
+/* $OpenBSD: ihidev.c,v 1.30 2024/08/18 03:25:04 deraadt Exp $ */
 /*
  * HID-over-i2c driver
  *
@@ -233,11 +233,13 @@ int
 ihidev_activate(struct device *self, int act)
 {
        struct ihidev_softc *sc = (struct ihidev_softc *)self;
+       int rv;
 
        DPRINTF(("%s(%d)\n", __func__, act));
 
        switch (act) {
        case DVACT_QUIESCE:
+               rv = config_activate_children(self, act);
                sc->sc_dying = 1;
                if (sc->sc_poll && timeout_initialized(&sc->sc_timer)) {
                        DPRINTF(("%s: cancelling polling\n",
@@ -254,12 +256,13 @@ ihidev_activate(struct device *self, int act)
                sc->sc_dying = 0;
                if (sc->sc_poll && timeout_initialized(&sc->sc_timer))
                        timeout_add(&sc->sc_timer, 2000);
+               rv = config_activate_children(self, act);
+               break;
+       default:
+               rv = config_activate_children(self, act);
                break;
        }
-
-       config_activate_children(self, act);
-
-       return 0;
+       return rv;
 }
 
 void