From nobody Mon Sep 21 00:48:20 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1785930842; cv=none; d=zohomail.com; s=zohoarc; b=TGkdsBe8ibTr/8sPLc6QobF1b6udXNhgedQfhagzMolR+uGdkLqgEgDuuNzvEiGAriPo5XyHa90o4SH5o48u+DivhDgLwINKzaWGrYyz2GYNL9xPSZeE3VOWoA3Vi5eTs0VJ9hy/b1whgDbY5Ir7p27gBkYrNN/SV4Bu7TxaCzg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1785930842; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=3A4GS1vpubnF8dlvXdHjd6RI2rRgkvNQkvZB1xfjVwU=; b=Wae8KKwmUhj3BRRoW50fuB3bdN27Zh902hQB6uzgM1954PuV90VrVL+qkKd2peUwucVbPMG0DS3SpCJ5gWc5TK+XxqsgMmhDBWaI939QR/10Twu/yPgO1McSuXQAKKLrM3Kn70vnYlXcDEcR5d9KjdKhiSmMLCtDQn9FhB/aJtw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1785930842211843.8036661469225; Wed, 5 Aug 2026 04:54:02 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wraBn-0008Uj-34; Wed, 05 Aug 2026 07:53:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wraBh-0008U4-HT for qemu-devel@nongnu.org; Wed, 05 Aug 2026 07:53:34 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wraBf-0007KS-0T for qemu-devel@nongnu.org; Wed, 05 Aug 2026 07:53:32 -0400 Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-152-2XPe-kDBM5KDYoV6vqsXag-1; Wed, 05 Aug 2026 07:53:29 -0400 Received: from mx-prod-int-10.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-10.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.95]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 26276195609E for ; Wed, 5 Aug 2026 11:53:28 +0000 (UTC) Received: from localhost (unknown [10.44.22.2]) by mx-prod-int-10.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 15AC2434; Wed, 5 Aug 2026 11:53:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1785930810; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=3A4GS1vpubnF8dlvXdHjd6RI2rRgkvNQkvZB1xfjVwU=; b=Cd+/PcY1+5x/s61EXIKatcP9eh1m3tghCgweNT6g+lVmUN4VlhJ0/MXaxeb+k6LX5MKdKw KQmJOiLpWcIDYrghuY2qEBb8uVsDECz+xfgOw2im/+9vGWoBqhTpqsqj/UAhg35ZO5QGm9 7qaozlXq7RPhG0Qn98xnPbL7xIczSD0= X-MC-Unique: 2XPe-kDBM5KDYoV6vqsXag-1 X-Mimecast-MFC-AGG-ID: 2XPe-kDBM5KDYoV6vqsXag_1785930808 From: =?utf-8?q?Marc-Andr=C3=A9_Lureau?= Date: Wed, 05 Aug 2026 15:51:02 +0400 Subject: [PATCH 12/27] hw/usb/dev-smartcard-reader: fix RDR_to_PC_Parameters dwLength MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260805-smartcard-fixes-v1-12-187ee9122441@redhat.com> References: <20260805-smartcard-fixes-v1-0-187ee9122441@redhat.com> In-Reply-To: <20260805-smartcard-fixes-v1-0-187ee9122441@redhat.com> To: qemu-devel@nongnu.org Cc: =?utf-8?q?Marc-Andr=C3=A9_Lureau?= X-Developer-Signature: v=1; a=openpgp-sha256; l=1846; i=marcandre.lureau@redhat.com; h=from:subject:message-id; bh=l9YNs4XrELkSPSF5rfSgGqqOZRudYj/BBNDj5rHbBdg=; b=owEBbQKS/ZANAwAKAdro4Ql1lpzlAcsmYgBqcyOtOLlSrZcYYrYccK7b2wjHALrud7F44dsoI a6ArL63OwiJAjMEAAEKAB0WIQSHqb2TP4fGBtJ29i3a6OEJdZac5QUCanMjrQAKCRDa6OEJdZac 5RilD/9lhf1g2e+UW3enTq56FHR3EXtgaKqViL+qkkF62yaKJPg5HNs6CtVfEdiZdGcKn/4t3p9 Alva7aD+0GCSfCGs1Q4T7J7l+ia8SY9cRdH+5ZHQSyuQ0oBMxqvu7gqJCTCHboyCXABRm5mQSlI rwsiwWTsZqaOja4PlhtbcbR7NHgN9bu2uS2YhmCsVZtE1UHdXpZB3I54Ux2xGl04abuHbxmfi8f QUEx91f5Czc0suf9ZGaggJLYrWAIe38yBrXZia1wmK7z9+XDUT+G9dh5nTYIgeibrbVZmFn7pEe JJPW71Dx6JviKx6/xP7NRngQ4K6DqakQy/VIpcXK9l6RSAsgVPH36AD5NrBGT38DrW4Eco1gzLA vuBZpPxQsMLiLIVHh6B0tbUgM8ELH/jcSzWzR8v0NBY+a9KEuohakknelDV76q6FdNeHaHDrSLh 02hAs4YZOAoo4oALBu2pK2483Yq2zBcVH2R4vo5lEWjeIZRozLjC3dIqrOOatDcLIbFfH0q+l9u 8wPHtyIwmJRIWTtwUEemJo5pGe4gst+Pu1A2W3/NUssjuB54jLuUQY2xH0xt/E41pZBtAizSB7Y /iHLv/cUn4ogCShX4B/KSIQZiZetYrzdkfNQRjKlKESw5adgZPh7R9HviGVPkbN0a56y+jq7mFm 3L/XChzyDeEMl5A== X-Developer-Key: i=marcandre.lureau@redhat.com; a=openpgp; fpr=87A9BD933F87C606D276F62DDAE8E10975969CE5 X-Scanned-By: MIMEDefang 3.6 on 10.30.177.95 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=marcandre.lureau@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: 4 X-Spam_score: 0.4 X-Spam_bar: / X-Spam_report: (0.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.852, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_SBL_CSS=3.335, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1785930843596158500 dwLength in the RDR_to_PC_Parameters response was always set to 0 instead of the protocol-dependent size mandated by the CCID spec (5 for T=3D0, 7 for T=3D1). Since bulk_in->len is what determines how many bytes the guest actually reads, the reservation size must also match the wire message size. Set dwLength from bProtocolNum and compute the reservation size accordingly, so the guest receives a spec-compliant response. Fixes: 367071447ec5 ("usb-ccid: add CCID bus") Signed-off-by: Marc-Andr=C3=A9 Lureau --- hw/usb/dev-smartcard-reader.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/hw/usb/dev-smartcard-reader.c b/hw/usb/dev-smartcard-reader.c index 279fef03652b..16f248a0969f 100644 --- a/hw/usb/dev-smartcard-reader.c +++ b/hw/usb/dev-smartcard-reader.c @@ -748,19 +748,20 @@ static void ccid_write_slot_status(USBCCIDState *s, C= CID_Header *recv) static void ccid_write_parameters(USBCCIDState *s, CCID_Header *recv) { CCID_Parameter *h; + uint32_t dwLength =3D s->bProtocolNum =3D=3D 1 ? 7 : 5; =20 - h =3D ccid_reserve_recv_buf(s, sizeof(CCID_Parameter)); + h =3D ccid_reserve_recv_buf(s, sizeof(h->b) + sizeof(h->bProtocolNum) = + dwLength); if (h =3D=3D NULL) { return; } h->b.hdr.bMessageType =3D CCID_MESSAGE_TYPE_RDR_to_PC_Parameters; - h->b.hdr.dwLength =3D 0; + h->b.hdr.dwLength =3D cpu_to_le32(dwLength); h->b.hdr.bSlot =3D recv->bSlot; h->b.hdr.bSeq =3D recv->bSeq; h->b.bStatus =3D ccid_calc_status(s); h->b.bError =3D s->bError; h->bProtocolNum =3D s->bProtocolNum; - h->abProtocolDataStructure =3D s->abProtocolDataStructure; + memcpy(&h->abProtocolDataStructure, &s->abProtocolDataStructure, dwLen= gth); ccid_reset_error_status(s); usb_wakeup(s->bulk, 0); } --=20 2.55.0