[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [Bug 544527] Re: usbfs is bugged with >2.6.32.9 and <=2.6.3
From: |
David Kühling |
Subject: |
[Qemu-devel] [Bug 544527] Re: usbfs is bugged with >2.6.32.9 and <=2.6.33 (breaks VMWare, Qemu, sane scanners, ...) |
Date: |
Tue, 13 Jul 2010 15:14:05 -0000 |
This bugfix is incomplete. Isochronous transfers are still broken, when
running 32-bit software on a 64-bit kernel. Function
processcompl_compat() in devio.c needs a similar fix to the fix that was
applied to processcompl(). Looking at processcompl_compat() I see:
if (as->userbuffer && urb->actual_length)
if (copy_to_user(as->userbuffer, urb->transfer_buffer,
urb->actual_length))
return -EFAULT;
correct code would be something like
if (as->userbuffer && urb->actual_length) {
if (urb->number_of_packets > 0) /* Isochronous */
i = urb->transfer_buffer_length;
else /* Non-Isoc */
i = urb->actual_length;
if (copy_to_user(as->userbuffer, urb->transfer_buffer, i))
goto err_out;
}
(note the difference between urb->actual_length and
urb->transfer_buffer_length).
With kernel 2.6.32-23-generic x86_64 on Ubuntu 10.04, using proprietary
USB-hardware hooked up to the USB bus (with software compiled for
32-bit), I can directly observe how isochronous transfers retrieved via
ioctl(.. USBDEVFS_REAPURB ..) are too short, i.e. the kernel does not
write the end of the data packet to the supplied buffer. Booting on the
2.6.31 kernel still present from before I upgraded from Ubuntu 9.10, the
same software runs flawlessly.
As a workaround I'll use the older kernel for now (also I could compile
for 64-bit, actually...).
cheers,
David
--
usbfs is bugged with >2.6.32.9 and <=2.6.33 (breaks VMWare, Qemu, sane
scanners, ...)
https://bugs.launchpad.net/bugs/544527
You received this bug notification because you are a member of qemu-
devel-ml, which is subscribed to QEMU.
Status in QEMU: Fix Committed
Status in SANE-backends - Backends for SANE: Fix Committed
Status in Tv Time: Fix Committed
Status in Virtualbox: Fix Committed
Status in “linux” package in Ubuntu: Fix Committed
Bug description:
Binary package hint: tvtime
There's a problem with isochronous and usbfs, suse tried to improve usbfs but
it end up that it broke usbfs.
For isochronous the entire packet needs to be copied and not only a part of it.
http://lkml.org/lkml/2010/2/26/490 (Report)
http://lkml.org/lkml/2010/2/27/226 (Bugfix)
please merge this bugfix asap.
ProblemType: Bug
Architecture: amd64
Date: Mon Mar 22 21:09:00 2010
DistroRelease: Ubuntu 10.04
LiveMediaBuild: Ubuntu 10.04 "Lucid Lynx" - Alpha amd64 (20100322)
Package: tvtime 1.0.2-5ubuntu2
ProcEnviron:
LANG=de_DE.UTF-8
SHELL=/bin/bash
ProcVersionSignature: Ubuntu 2.6.32-16.25-generic
SourcePackage: tvtime
Uname: Linux 2.6.32-16-generic x86_64
- [Qemu-devel] [Bug 544527] Re: usbfs is bugged with >2.6.32.9 and <=2.6.33 (breaks VMWare, Qemu, sane scanners, ...),
David Kühling <=