<div dir="ltr"><div>I was having trouble getting an account to submit a bug report</div><div><br></div><div>So here's a bug fix instead!!</div><div><br></div><div>The original bug was a repeatable crash when plugging in usb midi device:</div><div>uaudio0: <vendor 0x16c0 MIDI EXpression BLUE, class 0/0, rev 2.00/1.03, addr 1> on usbus0</div><div>panic: trying to free NULL pointer</div><div>cpuid = 1</div><div>Trace beginning at frame 0xfffff801eb967810</div><div>kfree() at kfree+0x5b0 0xffffffff8058e900</div><div>kfree() at kfree+0x5b0 0xffffffff8058e900</div><div>uaudio_attach() at uaudio_attach+0x1b5 0xffffffff862040a5</div><div>device_doattach() at device_doattach+0x369 0xffffffff805bd2a9</div><div>usb_probe_and_attach() at usb_probe_and_attach+0x176 0xffffffff809091a6</div><div>uhub_explore() at uhub_explore+0x221 0xffffffff8090ffa1</div><div>Debugger("panic")</div><div><br></div>--- a/sys/bus/u4b/audio/uaudio.c<br>+++ b/sys/bus/u4b/audio/uaudio.c<br>@@ -4871,7 +4871,7 @@ uaudio_mixer_fill_info(struct uaudio_softc *sc,<br> <br>        if (desc == NULL) {<br>                DPRINTF("no Audio Control header\n");<br>-               goto done;<br>+               return;<br>        }<br>        acdp = desc;<br> <br>@@ -4879,7 +4879,7 @@ uaudio_mixer_fill_info(struct uaudio_softc *sc,<br>            (acdp->bDescriptorType != UDESC_CS_INTERFACE) ||<br>            (acdp->bDescriptorSubtype != UDESCSUB_AC_HEADER)) {<br>                DPRINTF("invalid Audio Control header\n");<br>-               goto done;<br>+               return;<br>        }<br>        /* "wTotalLen" is allowed to be corrupt */<br>        wTotalLen = UGETW(acdp->wTotalLength) - acdp->bLength;<br>@@ -4895,7 +4895,7 @@ uaudio_mixer_fill_info(struct uaudio_softc *sc,<br> <br>        if (iot == NULL) {<br>                DPRINTF("no memory!\n");<br>-               goto done;<br>+               return;<br>        }<br>        while ((desc = usb_desc_foreach(cd, desc))) {<br></div>