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>