016a62
From e541592f0c98696276261a7c36afe074a3bdd956 Mon Sep 17 00:00:00 2001
016a62
From: Maxim Levitsky <mlevitsk@redhat.com>
016a62
Date: Wed, 18 Sep 2019 18:45:52 +0100
016a62
Subject: [PATCH 11/22] ccid: Fix dwProtocols advertisement of T=0
016a62
MIME-Version: 1.0
016a62
Content-Type: text/plain; charset=UTF-8
016a62
Content-Transfer-Encoding: 8bit
016a62
016a62
RH-Author: Maxim Levitsky <mlevitsk@redhat.com>
016a62
Message-id: <20190918184552.10820-2-mlevitsk@redhat.com>
016a62
Patchwork-id: 90769
016a62
O-Subject: [RHEL-8.2.0 qemu-kvm PATCH 1/1] ccid: Fix dwProtocols advertisement of T=0
016a62
Bugzilla: 1746361
016a62
RH-Acked-by: Philippe Mathieu-Daudé <philmd@redhat.com>
016a62
RH-Acked-by: Stefano Garzarella <sgarzare@redhat.com>
016a62
RH-Acked-by: John Snow <jsnow@redhat.com>
016a62
016a62
From: Jason Andryuk <jandryuk@gmail.com>
016a62
016a62
Commit d7d218ef02d87c637d20d64da8f575d434ff6f78 attempted to change
016a62
dwProtocols to only advertise support for T=0 and not T=1.  The change
016a62
was incorrect as it changed 0x00000003 to 0x00010000.
016a62
016a62
lsusb -v in a linux guest shows:
016a62
"dwProtocols         65536  (Invalid values detected)", though the
016a62
smart card could still be accessed.  Windows 7 does not detect inserted
016a62
smart cards and logs the the following Error in the Event Logs:
016a62
016a62
    Source: Smart Card Service
016a62
    Event ID: 610
016a62
    Smart Card Reader 'QEMU QEMU USB CCID 0' rejected IOCTL SET_PROTOCOL:
016a62
    Incorrect function. If this error persists, your smart card or reader
016a62
    may not be functioning correctly
016a62
016a62
    Command Header: 03 00 00 00
016a62
016a62
Setting to 0x00000001 fixes the Windows issue.
016a62
016a62
Signed-off-by: Jason Andryuk <jandryuk@gmail.com>
016a62
Message-id: 20180420183219.20722-1-jandryuk@gmail.com
016a62
Cc: qemu-stable@nongnu.org
016a62
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
016a62
(cherry picked from commit 0ee86bb6c5beb6498488850104f7557c376d0bef)
016a62
Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com>
016a62
Signed-off-by: Danilo C. L. de Paula <ddepaula@redhat.com>
016a62
---
016a62
 hw/usb/dev-smartcard-reader.c | 4 ++--
016a62
 1 file changed, 2 insertions(+), 2 deletions(-)
016a62
016a62
diff --git a/hw/usb/dev-smartcard-reader.c b/hw/usb/dev-smartcard-reader.c
016a62
index e646805..cabb564 100644
016a62
--- a/hw/usb/dev-smartcard-reader.c
016a62
+++ b/hw/usb/dev-smartcard-reader.c
016a62
@@ -329,8 +329,8 @@ static const uint8_t qemu_ccid_descriptor[] = {
016a62
                      */
016a62
         0x07,       /* u8  bVoltageSupport; 01h - 5.0v, 02h - 3.0, 03 - 1.8 */
016a62
 
016a62
-        0x00, 0x00, /* u32 dwProtocols; RRRR PPPP. RRRR = 0000h.*/
016a62
-        0x01, 0x00, /* PPPP: 0001h = Protocol T=0, 0002h = Protocol T=1 */
016a62
+        0x01, 0x00, /* u32 dwProtocols; RRRR PPPP. RRRR = 0000h.*/
016a62
+        0x00, 0x00, /* PPPP: 0001h = Protocol T=0, 0002h = Protocol T=1 */
016a62
                     /* u32 dwDefaultClock; in kHZ (0x0fa0 is 4 MHz) */
016a62
         0xa0, 0x0f, 0x00, 0x00,
016a62
                     /* u32 dwMaximumClock; */
016a62
-- 
016a62
1.8.3.1
016a62