diff options
author | Hans Petter Selasky <hselasky@FreeBSD.org> | 2021-01-12 17:46:09 +0000 |
---|---|---|
committer | Hans Petter Selasky <hselasky@FreeBSD.org> | 2021-01-13 09:06:30 +0000 |
commit | bafb682656724d06045fa494efb83a4312036f1f (patch) | |
tree | 7b4fa0d4a26b62919a3eaa16485117d5008a7f07 | |
parent | f6d95a01103a49a94c876d5a51bb4be25c06d964 (diff) | |
download | src-bafb682656724d06045fa494efb83a4312036f1f.tar.gz src-bafb682656724d06045fa494efb83a4312036f1f.zip |
Fix for off-by-one in GPIO driver after r368585.
While at it declare the iteration variable outside the for-loop
to appease older compilers.
Sponsored by: Mellanox Technologies // NVIDIA Networking
-rw-r--r-- | sys/dev/gpio/gpioc.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/dev/gpio/gpioc.c b/sys/dev/gpio/gpioc.c index 727b07a70589..83d55742a3a2 100644 --- a/sys/dev/gpio/gpioc.c +++ b/sys/dev/gpio/gpioc.c @@ -567,6 +567,7 @@ gpioc_probe(device_t dev) static int gpioc_attach(device_t dev) { + int i; int err; struct gpioc_softc *sc; struct make_dev_args devargs; @@ -582,7 +583,7 @@ gpioc_attach(device_t dev) return (err); sc->sc_pin_intr = malloc(sizeof(struct gpioc_pin_intr) * sc->sc_npins, M_GPIOC, M_WAITOK | M_ZERO); - for (int i = 0; i <= sc->sc_npins; i++) { + for (i = 0; i < sc->sc_npins; i++) { sc->sc_pin_intr[i].pin = malloc(sizeof(struct gpiobus_pin), M_GPIOC, M_WAITOK | M_ZERO); sc->sc_pin_intr[i].sc = sc; @@ -612,11 +613,12 @@ gpioc_detach(device_t dev) { struct gpioc_softc *sc = device_get_softc(dev); int err; + int i; if (sc->sc_ctl_dev) destroy_dev(sc->sc_ctl_dev); - for (int i = 0; i <= sc->sc_npins; i++) { + for (i = 0; i < sc->sc_npins; i++) { mtx_destroy(&sc->sc_pin_intr[i].mtx); free(&sc->sc_pin_intr[i].pin, M_GPIOC); } |