cvs commit: src/sys/dev/usb ehci.c ehcivar.h ohci.c ohcivar.h uhci.c uhcivar.h

Ian Dowse iedowse at FreeBSD.org
Sat Mar 19 11:08:46 PST 2005


iedowse     2005-03-19 19:08:46 UTC

  FreeBSD src repository

  Modified files:
    sys/dev/usb          ehci.c ehcivar.h ohci.c ohcivar.h uhci.c 
                         uhcivar.h 
  Log:
  It was possible to have two threads concurrently aborting the same
  transfer, which lead to panics or page faults. For example if a
  transfer timed out, another thread could come along and attempt to
  abort the same transfer while the timeout task was sleeping in
  the *_abort_xfer() function.
  
  Add an "aborting" flag to the private transfer state in each host
  controller driver and use this to ensure that the abort is only
  executed once. Also prioritise normal abort requests over timeouts
  so that the callback is always given a status of USB_CANCELLED even
  if the timeout-initiated abort began first.
  
  The crashes caused by this bug were mainly reported in connection
  with lpd printing to a USB printer.
  
  PR:     usb/78208, usb/78986
  
  Revision  Changes    Path
  1.34      +26 -0     src/sys/dev/usb/ehci.c
  1.9       +4 -0      src/sys/dev/usb/ehcivar.h
  1.153     +28 -0     src/sys/dev/usb/ohci.c
  1.40      +2 -0      src/sys/dev/usb/ohcivar.h
  1.161     +28 -1     src/sys/dev/usb/uhci.c
  1.40      +4 -0      src/sys/dev/usb/uhcivar.h


More information about the cvs-src mailing list