Microsoft KB Archive/200916

{|
 * width="100%"|

PRB: OSR 2.1 - OHCI Driver May Not Break Up Transfers Correctly

 * }

Q200916

-

The information in this article applies to:


 * Microsoft Win32 Device Driver Kit (DDK) Windows 95

-

SYMPTOMS
When transferring data over an OHCI controller in Windows 95 OSR 2.x, a page-fault may occur or invalid data may be transferred if the data buffer used for the transfer has physically contiguous memory that spans more than two pages of memory.

CAUSE
There is a problem in the algorithm that is used to map physical buffer addresses to transfer descriptors in the OSR 2.x version of Openhci.sys. Specifically, the ending buffer address assigned to a transfer descriptor is incorrect when the area of the buffer being mapped has physically contiguous memory that spans more than two pages, and the starting address of the data buffer is divisible by the endpoint's maximum packet size.

RESOLUTION
You can work around this problem by ensuring that the beginning address of the data buffer passed to Openhci.sys is not divisible by the maximum packet size of the endpoint used for the transfer. By forcing the buffer to not start on a maximum packet boundary, Openhci.sys always maps less than 8K for each transfer descriptor, thus avoiding this problem.

STATUS
Microsoft has confirmed this to be a problem in the Microsoft products that are listed at the beginning of this article. This problem has been fixed in Windows 98.

Keywords : kbDDK kbOSWin95bug

Issue type : kbprb

Technology : kbAudDeveloper kbWin95search kbWinDDKSearch kbWin32sSearch kbWin32DDK95 kbWin32DDKSearch