From nobody Mon Feb 9 19:30:31 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 216.205.24.124 as permitted sender) client-ip=216.205.24.124; envelope-from=philmd@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.124 as permitted sender) smtp.mailfrom=philmd@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1610989405; cv=none; d=zohomail.com; s=zohoarc; b=RUIZU8Rw0LOaA0pmMpLRfP0hJyGpPkx3o0dkPes7cXXv+hfMtVbmU94JETR52ZySYmL1tT2eyjA8GB4+XOljW1nGka8CK2BQSX9g54pf+7HcU44KlEL8d4HBu9RVTEu3axRQJwiv4nVSdTfP2NgHhljVsGlhCdDw35UsyQK5tWI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1610989405; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=BjJm1HCMLbbZqIfMy+Wy6KgF85jtYSbpI+EcijPWuf4=; b=GKis6U9es4kK2WT0xS8OT+6DkERp4gdhI/P4IWJLLzECal6J2zCjIjBtgpDaQxZsRkzjMYh3t/ml0m4UfUAIU3IGTHmwJMj70y0ckMMcWDjvG1p49JBNFeefN7oIcB0fayxOH7X7Cir62lCHIRgm2MnM7Y7Hl0Z+EI50ut8DP2k= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.124 as permitted sender) smtp.mailfrom=philmd@redhat.com; dmarc=pass header.from= (p=none dis=none) header.from= Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [216.205.24.124]) by mx.zohomail.com with SMTPS id 16109894058211003.1369905835152; Mon, 18 Jan 2021 09:03:25 -0800 (PST) Received: from mail-ej1-f70.google.com (mail-ej1-f70.google.com [209.85.218.70]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-5-tA3S4-LJPuS88w1uBWhtLQ-1; Mon, 18 Jan 2021 12:03:23 -0500 Received: by mail-ej1-f70.google.com with SMTP id p1so5370317ejo.4 for ; Mon, 18 Jan 2021 09:03:22 -0800 (PST) Return-Path: Return-Path: Received: from x1w.redhat.com (13.red-83-57-169.dynamicip.rima-tde.net. [83.57.169.13]) by smtp.gmail.com with ESMTPSA id e21sm11024956edv.96.2021.01.18.09.03.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 Jan 2021 09:03:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1610989404; 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=BjJm1HCMLbbZqIfMy+Wy6KgF85jtYSbpI+EcijPWuf4=; b=SPpMpyWlhKCSBoSAeLWVLjECQ9BhdX/OPYZJmcyzOvAH+HL02+Z3b+dEGpeguhPorLhxv4 BPSmOQimlj/APrFbpsY1H6Wb2cB2J8OeBd7nzoJs79/E4fpv8iMOC5anHOdEdcpalsGNSu vmaggeo0YRwzNxrUMNe/2ldjOKVjVDw= X-MC-Unique: tA3S4-LJPuS88w1uBWhtLQ-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=BjJm1HCMLbbZqIfMy+Wy6KgF85jtYSbpI+EcijPWuf4=; b=asP2x4oP8vhtoPwOrL+S2IIuvmNCCAinz4wAGn/9kI3K+GMM9/zM/0GPLhXEU7Zfv7 dlchYY+x+yQvJpgWJ/0qlba8s3UFjm2F6nekQt3Vz3L5wh5YmZRIvpc5fNcH/YlpDPIT ekcTpKiMXyTc1vF5EVP3JdpoWcA76VDSyAKC6QyxbHaNzekTovXMRSZfd3RZKlJ54IPq 0ojHyE80ZGYjs08gs+ahuzSIp5Yr/GERBQe4Gb8eDDpubyVKqNG65fIybty9yc/ou/qk NvmSdUQVrs7GYISjzbZHHvqpLRfQ0cchH8QbwxiOzCknkdRyznYZd0sGvUqKosLY0Nzx SGSQ== X-Gm-Message-State: AOAM531B70wU1ToRL+ny5UgwHoMKTFaPEr4DUAFYbILkYZ/GDVT1l9do F3k/voOUxuxi/ULXUxwAmBU4+WZ/kepB25sgEdHlPfBY1y2rGV4KrlFu74uaPTVysFBRLZEO3z9 jDaIkcADusCIB3Q== X-Received: by 2002:a17:906:9616:: with SMTP id s22mr432762ejx.270.1610989401886; Mon, 18 Jan 2021 09:03:21 -0800 (PST) X-Google-Smtp-Source: ABdhPJwmkEnjjom0gmHD4h8sReDYhMDCrw2wBg3N/Vjpf0rxYpVT15NH56lTF0ZGrP+HH/3MrlXNBQ== X-Received: by 2002:a17:906:9616:: with SMTP id s22mr432740ejx.270.1610989401664; Mon, 18 Jan 2021 09:03:21 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Gerd Hoffmann , qemu-block@nongnu.org, Paolo Bonzini , Fam Zheng , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Daniele Buono , Ed Maste , Han Han , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , "Gustavo A . R . Silva" Subject: [RFC PATCH 2/2] hw/usb/dev-uas: Report command additional adb length as unsupported Date: Mon, 18 Jan 2021 18:03:08 +0100 Message-Id: <20210118170308.282442-3-philmd@redhat.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20210118170308.282442-1-philmd@redhat.com> References: <20210118170308.282442-1-philmd@redhat.com> MIME-Version: 1.0 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=philmd@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) We are not ready to handle additional CDB data. If a guest send a packet with such additional data, report the command parameter as not supported. We can then explicit there is nothing in this additional buffer, by fixing its size to zero. This fixes an error when building with Clang 11: usb/dev-uas.c:157:31: error: field 'status' with variable sized type 'uas= _iu' not at the end of a struct or class is a GNU extension [-Werror,-Wgnu-= variable-sized-type-not-at-end] uas_iu status; ^ Reported-by: Daniele Buono Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reported-by: Ed Maste Reported-by: Han Han Reviewed-by: Eric Blake --- Cc: Ed Maste Cc: Han Han Cc: Marc-Andr=C3=A9 Lureau Cc: Paolo Bonzini Cc: Gustavo A. R. Silva --- hw/usb/dev-uas.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/hw/usb/dev-uas.c b/hw/usb/dev-uas.c index cec071d96c4..b6434ad4b9c 100644 --- a/hw/usb/dev-uas.c +++ b/hw/usb/dev-uas.c @@ -16,6 +16,7 @@ #include "qemu/error-report.h" #include "qemu/main-loop.h" #include "qemu/module.h" +#include "qemu/log.h" =20 #include "hw/usb.h" #include "migration/vmstate.h" @@ -70,7 +71,7 @@ typedef struct { uint8_t reserved_2; uint64_t lun; uint8_t cdb[16]; - uint8_t add_cdb[]; + uint8_t add_cdb[0]; /* not supported by QEMU */ } QEMU_PACKED uas_iu_command; =20 typedef struct { @@ -700,6 +701,11 @@ static void usb_uas_command(UASDevice *uas, uas_iu *iu) uint32_t len; uint16_t tag =3D be16_to_cpu(iu->hdr.tag); =20 + if (iu->command.add_cdb_length > 0) { + qemu_log_mask(LOG_UNIMP, "additional adb length not yet supported\= n"); + goto unsupported_len; + } + if (uas_using_streams(uas) && tag > UAS_MAX_STREAMS) { goto invalid_tag; } @@ -735,6 +741,10 @@ static void usb_uas_command(UASDevice *uas, uas_iu *iu) } return; =20 +unsupported_len: + usb_uas_queue_fake_sense(uas, tag, sense_code_INVALID_PARAM_VALUE); + return; + invalid_tag: usb_uas_queue_fake_sense(uas, tag, sense_code_INVALID_TAG); return; --=20 2.26.2