Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 27 Nov 2006 18:39:03 +0000 (UTC)
From:      Marius Strobl <marius@FreeBSD.org>
To:        src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   cvs commit: src/sys/dev/usb usbdi.c
Message-ID:  <200611271839.kARId33k039747@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200611271839.kARId33k039747>