[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 6/8] hw/usb/dev-uas: Report command additional adb length as unsup
From: |
Gerd Hoffmann |
Subject: |
[PULL 6/8] hw/usb/dev-uas: Report command additional adb length as unsupported |
Date: |
Fri, 22 Jan 2021 18:48:47 +0100 |
From: Philippe Mathieu-Daudé <philmd@redhat.com>
We are not ready to handle additional CDB data.
If a guest sends a packet with such additional data,
report the command parameter as not supported.
Specify a size (of 1 byte) for the add_cdb member we
are not using, to fix the following warning:
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: Ed Maste <emaste@FreeBSD.org>
Reported-by: Daniele Buono <dbuono@linux.vnet.ibm.com>
Reported-by: Han Han <hhan@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Message-Id: <20210120153522.1173897-4-philmd@redhat.com>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
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 cec071d96c49..a51402bc0bfd 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"
#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[1]; /* not supported by QEMU */
} QEMU_PACKED uas_iu_command;
typedef struct {
@@ -700,6 +701,11 @@ static void usb_uas_command(UASDevice *uas, uas_iu *iu)
uint32_t len;
uint16_t tag = be16_to_cpu(iu->hdr.tag);
+ 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;
+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;
--
2.29.2
- [PULL 0/8] Usb 20210122 patches, Gerd Hoffmann, 2021/01/22
- [PULL 1/8] hw/usb/host-libusb.c: fix build with kernel < 5.0, Gerd Hoffmann, 2021/01/22
- [PULL 4/8] hw/usb/hcd-xhci: Fix extraneous format-truncation error on 32-bit hosts, Gerd Hoffmann, 2021/01/22
- [PULL 5/8] scsi/utils: Add INVALID_PARAM_VALUE sense code definition, Gerd Hoffmann, 2021/01/22
- [PULL 3/8] hw/usb: Convert to qdev_realize(), Gerd Hoffmann, 2021/01/22
- [PULL 2/8] hw/usb: Fix bad printf format specifiers, Gerd Hoffmann, 2021/01/22
- [PULL 8/8] usb-host: map LIBUSB_SPEED_SUPER_PLUS to USB_SPEED_SUPER, Gerd Hoffmann, 2021/01/22
- [PULL 6/8] hw/usb/dev-uas: Report command additional adb length as unsupported,
Gerd Hoffmann <=
- [PULL 7/8] usb: add pcap support., Gerd Hoffmann, 2021/01/22
- Re: [PULL 0/8] Usb 20210122 patches, Peter Maydell, 2021/01/23