> Date: Thu, 11 Dec 2014 12:22:56 +0100 > From: Martin Pieuchot <mpieuc...@nolizard.org> > > Index: ucycom.c > =================================================================== > RCS file: /home/ncvs/src/sys/dev/usb/ucycom.c,v > retrieving revision 1.29 > diff -u -p -r1.29 ucycom.c > --- ucycom.c 12 Jul 2014 20:26:33 -0000 1.29 > +++ ucycom.c 11 Dec 2014 09:50:14 -0000 > @@ -453,13 +453,9 @@ ucycom_param(void *addr, int portno, str > report[2] = (baud >> 16) & 0xff; > report[3] = (baud >> 24) & 0xff; > report[4] = cfg; > - err = uhidev_set_report(&sc->sc_hdev, UHID_FEATURE_REPORT, > - sc->sc_hdev.sc_report_id, report, sc->sc_flen); > - if (err != 0) { > - DPRINTF(("ucycom_param: uhidev_set_report %d %s\n", > - err, usbd_errstr(err))); > + if (uhidev_set_report(sc->sc_hdev.sc_parent, UHID_FEATURE_REPORT, > + sc->sc_hdev.sc_report_id, report, sc->sc_flen) != sc->sc_flen) > return EIO; > - } > sc->sc_baud = baud; > return (err); > } > @@ -553,10 +549,10 @@ ucycom_set(void *addr, int portno, int r > void > ucycom_get_cfg(struct ucycom_softc *sc) > { > - int err, cfg, baud; > + int cfg, baud; > uint8_t report[5]; > > - err = uhidev_get_report(&sc->sc_hdev, UHID_FEATURE_REPORT, > + uhidev_get_report(sc->sc_hdev.sc_parent, UHID_FEATURE_REPORT, > sc->sc_hdev.sc_report_id, report, sc->sc_flen); > cfg = report[4]; > baud = (report[3] << 24) + (report[2] << 16) + (report[1] << 8) + > report[0];
Doesn't this mean that if you get a "short" reply, you'll be looking at stack garbage? Don't think that is a good idea...