From: "Philippe Mathieu-Daudé" <philmd@oss.qualcomm.com>
To: Peter Maydell <peter.maydell@linaro.org>,
Jamin Lin <jamin_lin@aspeedtech.com>
Cc: "clg@redhat.com" <clg@redhat.com>,
"Philippe Mathieu-Daudé" <philmd@mailo.com>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"open list:All patches CC here" <qemu-devel@nongnu.org>,
"Troy Lee" <troy_lee@aspeedtech.com>,
"Richard Henderson" <richard.henderson@linaro.org>
Subject: Re: [PATCH v1] hw/usb/hcd-ehci: Handle get_dwords() failures in async writeback
Date: Mon, 17 Aug 2026 06:08:55 +0200 [thread overview]
Message-ID: <bd4d82cf-918c-4d1a-998b-eaa8d81f956c@oss.qualcomm.com> (raw)
In-Reply-To: <CAFEAcA-kKC0WPU2Tqa8Oc9A-1H9LhVr5ibGrksBOc3ZNr54iMA@mail.gmail.com>
On 14/8/26 11:06, Peter Maydell wrote:
> On Thu, 13 Aug 2026 at 08:24, Jamin Lin <jamin_lin@aspeedtech.com> wrote:
>>
>> Coverity reports that ehci_writeback_async_complete_packet() ignores
>> the return value of get_dwords() when reading the QH and qTD.
>>
>> Handle read failures in the same way as QH and qTD verification
>> failures by freeing the packet and returning early.
>>
>> Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
>> ---
>> hw/usb/hcd-ehci.c | 10 +++++-----
>> 1 file changed, 5 insertions(+), 5 deletions(-)
>>
>> diff --git a/hw/usb/hcd-ehci.c b/hw/usb/hcd-ehci.c
>> index 451a918e9f..d43951975a 100644
>> --- a/hw/usb/hcd-ehci.c
>> +++ b/hw/usb/hcd-ehci.c
>> @@ -533,11 +533,11 @@ static void ehci_writeback_async_complete_packet(EHCIPacket *p)
>> /* Verify the qh + qtd, like we do when going through fetchqh & fetchqtd */
>> memset(&qh, 0, sizeof(qh));
>> memset(&qtd, 0, sizeof(qtd));
>> - get_dwords(q->ehci, NLPTR_GET(q->qhaddr),
>> - (uint32_t *) &qh, ehci_qh_dwords(q->ehci));
>> - get_dwords(q->ehci, NLPTR_GET(q->qtdaddr),
>> - (uint32_t *) &qtd, ehci_qtd_dwords(q->ehci));
>> - if (!ehci_verify_qh(q, &qh) || !ehci_verify_qtd(p, &qtd)) {
>> + if (get_dwords(q->ehci, NLPTR_GET(q->qhaddr),
>> + (uint32_t *) &qh, ehci_qh_dwords(q->ehci)) < 0 ||
>> + get_dwords(q->ehci, NLPTR_GET(q->qtdaddr),
>> + (uint32_t *) &qtd, ehci_qtd_dwords(q->ehci)) < 0 ||
>> + !ehci_verify_qh(q, &qh) || !ehci_verify_qtd(p, &qtd)) {
>> p->async = EHCI_ASYNC_INITIALIZED;
>> ehci_free_packet(p);
>> return;
>
> Looking at the coverity report, my question is whether echi->as
> can ever actually be NULL. This is the address space we use to
> do DMA, so it feels like every EHCI device must set that up
> somehow. ehci_sysbus_init() does. So does usb_ehci_pci_realize().
> usb_ehci_pci_write_config() can change it, but never to NULL.
>
> If echi->as is always non-NULL then we could change get_dwords()
> and put_dwords() to return "void".
>
> Alternatively, maybe get_dwords() and put_dwords() should be
> checking the return value from dma_memory_write() and
> dma_memory_read() so that they fail if the DMA fails...
Oh good point, I missed that. We really should qualify
dma_memory_write() & co with G_GNUC_WARN_UNUSED_RESULT, that'd
help us preventing such mistakes.
prev parent reply other threads:[~2026-08-17 4:09 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-13 7:23 [PATCH v1] hw/usb/hcd-ehci: Handle get_dwords() failures in async writeback Jamin Lin
2026-08-13 9:43 ` Philippe Mathieu-Daudé
2026-08-14 0:47 ` Jamin Lin
2026-08-14 9:06 ` Peter Maydell
2026-08-17 2:43 ` Jamin Lin
2026-08-17 4:08 ` Philippe Mathieu-Daudé [this message]
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=bd4d82cf-918c-4d1a-998b-eaa8d81f956c@oss.qualcomm.com \
--to=philmd@oss.qualcomm.com \
--cc=clg@redhat.com \
--cc=jamin_lin@aspeedtech.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=philmd@mailo.com \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.org \
--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.