From: Junjie Cao <junjie.cao@linux.dev>
To: jamin_lin@aspeedtech.com
Cc: marcandre.lureau@redhat.com, clg@kaod.org,
peter.maydell@linaro.org, steven_lee@aspeedtech.com,
leetroy@gmail.com, kane_chen@aspeedtech.com,
andrew@codeconstruct.com.au, joel@jms.id.au, qemu-arm@nongnu.org,
qemu-devel@nongnu.org, troy_lee@aspeedtech.com,
junjie.cao@intel.com
Subject: Re: [PATCH v5 5/8] hw/usb/redirect-server: Implement control transfers
Date: Fri, 16 Oct 2026 08:01:24 +0000 [thread overview]
Message-ID: <20261016080125.418342-1-junjie.cao@linux.dev> (raw)
In-Reply-To: <20261015093417.573063-6-jamin_lin@aspeedtech.com>
From: Junjie Cao <junjie.cao@intel.com>
Hi Jamin,
The tests below were run on v4; patches 5 and 6 are unchanged in v5.
> + usbredir_server_do_control(priv, id, hdr, data, data_len,
> + USBREDIR_SERVER_REPLY_CONTROL);
The callback owns data, but do_control() copies it without freeing the
original buffer. In a test with usb-storage, 100 vendor control OUT
requests carrying 64 bytes each complete with STALL, but LSan reports
6,400 bytes leaked in 100 parser allocations.
Could we call usbredirparser_free_packet_data() after do_control()
returns, and free data on every exit from the bulk and interrupt
callbacks in patch 6?
> + QTAILQ_REMOVE(&s->inflight, rp, next);
> + usb_packet_cleanup(&rp->pkt);
A test device returning async IOERROR for the first of two bulk OUT
requests reproduces an assertion here. The core calls back for the
second packet with USB_RET_REMOVE_FROM_QUEUE, but leaves it QUEUED on
ep->queue. usb_packet_cleanup() then hits its
!usb_packet_is_inflight() assertion.
Could we call usb_cancel_packet() for that status before cleanup?
For a QUEUED packet it removes the core queue entry without calling
the device's cancel callback.
In the not-found case of usbredir_server_cancel_data_packet():
> + usbredirparser_send_control_packet(s->parser, id, &resp, NULL, 0);
If the original reply is already queued when the cancel arrives, the
QEMU client consumes its cancelled-ID entry when it receives that
reply. The extra control packet then sends a second reply for the
same ID.
Could we omit this reply when the transfer is not found?
usbredirhost_cancel_data_packet() also sends no additional reply
in that case.
next prev parent reply other threads:[~2026-10-16 8:02 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-15 9:34 [PATCH v5 0/8] hw/usb: Add a usbredir server transport Jamin Lin
2026-10-15 9:34 ` [PATCH v5 1/8] hw/usb/bus: Let a bus opt out of automatic hub insertion Jamin Lin
2026-10-15 9:34 ` [PATCH v5 2/8] hw/usb/redirect-server: Add a usbredir server device Jamin Lin
2026-10-15 9:34 ` [PATCH v5 3/8] hw/usb/redirect-server: Connect usbredirparser to a chardev Jamin Lin
2026-10-15 9:34 ` [PATCH v5 4/8] hw/usb/redirect-server: Announce the exported device Jamin Lin
2026-10-15 9:34 ` [PATCH v5 5/8] hw/usb/redirect-server: Implement control transfers Jamin Lin
2026-10-16 8:01 ` Junjie Cao [this message]
2026-10-16 9:26 ` Jamin Lin
2026-10-16 9:27 ` Jamin Lin
2026-10-15 9:34 ` [PATCH v5 6/8] hw/usb/redirect-server: Implement bulk and interrupt transfers Jamin Lin
2026-10-15 9:34 ` [PATCH v5 7/8] hw/usb/redirect-server: Stream interrupt IN endpoints Jamin Lin
2026-10-16 8:01 ` Junjie Cao
2026-10-16 8:21 ` marcandre.lureau
2026-10-15 9:34 ` [PATCH v5 8/8] hw/arm/aspeed: Enable the usbredir server transport Jamin Lin
2026-10-16 6:31 ` [PATCH v5 0/8] hw/usb: Add a " Jamin Lin
2026-10-16 6:38 ` Cédric Le Goater
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=20261016080125.418342-1-junjie.cao@linux.dev \
--to=junjie.cao@linux.dev \
--cc=andrew@codeconstruct.com.au \
--cc=clg@kaod.org \
--cc=jamin_lin@aspeedtech.com \
--cc=joel@jms.id.au \
--cc=junjie.cao@intel.com \
--cc=kane_chen@aspeedtech.com \
--cc=leetroy@gmail.com \
--cc=marcandre.lureau@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=steven_lee@aspeedtech.com \
--cc=troy_lee@aspeedtech.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.