Module Name: src Committed By: riastradh Date: Fri Jul 1 01:08:06 UTC 2022
Modified Files: src/sys/dev/usb: umidi.c Log Message: umidi(4): Clarify loops. No functional change intended. To generate a diff of this commit: cvs rdiff -u -r1.88 -r1.89 src/sys/dev/usb/umidi.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/usb/umidi.c diff -u src/sys/dev/usb/umidi.c:1.88 src/sys/dev/usb/umidi.c:1.89 --- src/sys/dev/usb/umidi.c:1.88 Mon Jun 27 18:56:56 2022 +++ src/sys/dev/usb/umidi.c Fri Jul 1 01:08:06 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: umidi.c,v 1.88 2022/06/27 18:56:56 riastradh Exp $ */ +/* $NetBSD: umidi.c,v 1.89 2022/07/01 01:08:06 riastradh Exp $ */ /* * Copyright (c) 2001, 2012, 2014 The NetBSD Foundation, Inc. @@ -32,7 +32,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: umidi.c,v 1.88 2022/06/27 18:56:56 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: umidi.c,v 1.89 2022/07/01 01:08:06 riastradh Exp $"); #ifdef _KERNEL_OPT #include "opt_usb.h" @@ -724,8 +724,7 @@ static usbd_status alloc_all_endpoints(struct umidi_softc *sc) { usbd_status err; - struct umidi_endpoint *ep; - int i; + int i, n; if (UMQ_ISTYPE(sc, UMQ_TYPE_FIXED_EP)) { err = alloc_all_endpoints_fixed_ep(sc); @@ -737,17 +736,16 @@ alloc_all_endpoints(struct umidi_softc * if (err != USBD_NORMAL_COMPLETION) return err; - ep = sc->sc_endpoints; - for (i = sc->sc_out_num_endpoints+sc->sc_in_num_endpoints; i > 0; i--) { - err = alloc_pipe(ep); + n = sc->sc_out_num_endpoints + sc->sc_in_num_endpoints; + for (i = 0; i < n; i++) { + err = alloc_pipe(&sc->sc_endpoints[i]); if (err != USBD_NORMAL_COMPLETION) { - for (; ep != sc->sc_endpoints; ep--) - free_pipe(ep-1); + while (i --> 0) + free_pipe(&sc->sc_endpoints[i]); kmem_free(sc->sc_endpoints, sc->sc_endpoints_len); sc->sc_endpoints = sc->sc_out_ep = sc->sc_in_ep = NULL; break; } - ep++; } return err; } @@ -755,14 +753,15 @@ alloc_all_endpoints(struct umidi_softc * static void free_all_endpoints(struct umidi_softc *sc) { - int i; + int i, n; if (sc->sc_endpoints == NULL) { /* nothing to free */ return; } - for (i=0; i<sc->sc_in_num_endpoints+sc->sc_out_num_endpoints; i++) + n = sc->sc_in_num_endpoints + sc->sc_out_num_endpoints; + for (i = 0; i < n; i++) free_pipe(&sc->sc_endpoints[i]); kmem_free(sc->sc_endpoints, sc->sc_endpoints_len); sc->sc_endpoints = sc->sc_out_ep = sc->sc_in_ep = NULL;