qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: MarkusRechberger <mrechberger@gmail.com>
To: qemu-devel@nongnu.org
Subject: [Qemu-devel] Re: [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:56:52 -0000	[thread overview]
Message-ID: <AANLkTimq5eRG87NZWGvjLWbTR_z_2IrTVj6dpg0NuFSG@mail.gmail.com> (raw)
In-Reply-To: 20100713151405.22864.21330.malone@wampee.canonical.com

On Tue, Jul 13, 2010 at 5:14 PM, David Kühling
<544527@bugs.launchpad.net> wrote:
> 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...).
>

yes you're right, since we distribute 64 and 32bit drivers it doesn't
really affect us.
before applying any change you can submit some patches to us and we
can test them if needed.

Things should definitely not go upstream untested anymore as it used
to happen in the past with various kernel releases. (isochronous is
bugged with 2.6.26/27/28 (memory leak) and 32/33 (copying wrong memory
area). Luckily our hardware supports switching from ISO to BULK in
order to work around those issues - but bulk transfers have a bad
performance in userspace

Markus
> 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 direct subscriber
> of the bug.
>

-- 
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

  reply	other threads:[~2010-07-13 16:06 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20100322211328.28473.3965.malonedeb@gandwana.canonical.com>
2010-07-13 15:14 ` [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
2010-07-13 15:56   ` MarkusRechberger [this message]
2010-07-14  9:44 ` David Kühling
2010-09-14 18:53 ` Aleksandr Koltsoff
2010-11-08 12:05 ` David Kühling
2011-01-10 18:17 ` Jeremy Foshee
2011-01-10 18:42   ` Aurelien Jarno
2011-02-20 17:12 ` Aurelien Jarno
2015-01-06  2:57 ` POJAR GEO

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=AANLkTimq5eRG87NZWGvjLWbTR_z_2IrTVj6dpg0NuFSG@mail.gmail.com \
    --to=mrechberger@gmail.com \
    --cc=544527@bugs.launchpad.net \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).