cvs commit: src/sys/dev/usb usbdi.c

Marius Strobl marius at FreeBSD.org
Mon Nov 27 11:50:47 PST 2006


marius      2006-11-27 18:39:03 UTC

  FreeBSD src repository

  Modified files:
    sys/dev/usb          usbdi.c 
  Log:
  Refine the previous change to only call bus_dmamap_sync() in case of
  an URQ_REQUEST when DMA segments are passed to usbd_start_transfer();
  when the request doesn't include the optional data buffer the size of
  the transfer (xfer->length) is 0, in which case usbd_transfer() won't
  create a DMA map but call usbd_start_transfer() with no DMA segments.
  With the previous change this could result in the bus_dmamap_sync()
  implementation dereferencing the NULL-pointer passed as the DMA map
  argument.
  While at it fix what appears to be a typo in usbd_start_transfer();
  in order to determine wheter usbd_start_transfer() was called with
  DMA segments check whether the number of segments is > 0 rather than
  the pointer to them being > 0.
  
  OK'ed by:       imp
  
  Revision  Changes    Path
  1.99      +19 -12    src/sys/dev/usb/usbdi.c


More information about the cvs-all mailing list