From mboxrd@z Thu Jan 1 00:00:00 1970 Received: by 2002:ac2:4942:0:0:0:0:0 with SMTP id o2csp6143961lfi; Sat, 7 Mar 2020 23:56:02 -0800 (PST) X-Google-Smtp-Source: ADFU+vvOMd3U8h5g4zMYq2hxkBCZhckJHn9ycCS1yVtTfrf47W+kwLBXVzM9rI7JTu9jGukf3ADo X-Received: by 2002:a37:6cc7:: with SMTP id h190mr10441702qkc.358.1583654161994; Sat, 07 Mar 2020 23:56:01 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1583654161; cv=none; d=google.com; s=arc-20160816; b=lWpvW3hsLwcb4c6AKxFPdn3hlQdjwHNbJiVMHk97hMSU2MmT52cnmk3FU9cnFYAfX7 L5qMnX/twI3aYTU08FifXf0bPOaeJjeHr0plOOe3qFZfsuLlF27JTDUdnIDmONxXFif1 S7ozu/t2Ur2fOw/UXyR8Rf/Isi+z3J3Uudnjp4o4Uhz6nFchkJNTZh3Hs/T+W/hclGpw jjFEtPBk7aATY6dP/Xucl/lcfMGS0WkBEopzu1KrN/PkhWSiqrXdjSjs+MQkSUyDdH68 wMf4V4toSgVm8pSLdezjD9L2rG2iAHdzU1nP30zh0cAcHd+Px6MQU5zjkaao/WCH0d8W jrXA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-disposition :content-transfer-encoding:in-reply-to:mime-version:references :message-id:subject:to:from:date:dkim-signature; bh=bk1eJFHWPNYwXgmgIgrCTgUnIxpdqLjzS3WY9m+6e2s=; b=lGZRRo/BMn7++UvUQvXi++Emjke2OxKXUG6rBbNO9CJpquy3JNUXczn8lky+B0tRcJ GV3LAtGd5f2pB7pnRi6Jirg4knnEqGLCah13iAFB9hu+fForu6t4LHcQMKMxyKHug3z4 FSJzlrJ1Qu3/NUUq1QFRAOZwHr+WtF3ELXV24qX6yqHfaFJjJOwOGbNcpuE1r5NlBIrj /7OtrwsdyiJeph99j4jAY+V9g0y4gdu1y1pkyMjORfcW+RpSSFAW2cOiIsZ+E4CWB9jF /qAV7E8z3fB5SNEAIsMH/hgWR7vpe31u4xODUHaAkI3Kbn2hut8ayk+i+7+4FoXajlFt VKiQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@redhat.com header.s=mimecast20190719 header.b=KfV13wsw; spf=pass (google.com: domain of qemu-arm-bounces+alex.bennee=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-arm-bounces+alex.bennee=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id o13si53088qtb.383.2020.03.07.23.56.01 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sat, 07 Mar 2020 23:56:01 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-arm-bounces+alex.bennee=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=fail header.i=@redhat.com header.s=mimecast20190719 header.b=KfV13wsw; spf=pass (google.com: domain of qemu-arm-bounces+alex.bennee=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-arm-bounces+alex.bennee=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from localhost ([::1]:55694 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jAqn3-0008HF-Da for alex.bennee@linaro.org; Sun, 08 Mar 2020 03:56:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46178) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jAqmr-0008Ff-B5 for qemu-arm@nongnu.org; Sun, 08 Mar 2020 03:55:51 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1jAqmo-00009z-Rw for qemu-arm@nongnu.org; Sun, 08 Mar 2020 03:55:49 -0400 Received: from us-smtp-1.mimecast.com ([207.211.31.81]:40599 helo=us-smtp-delivery-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1jAqmo-00008b-MM for qemu-arm@nongnu.org; Sun, 08 Mar 2020 03:55:46 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1583654146; 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=bk1eJFHWPNYwXgmgIgrCTgUnIxpdqLjzS3WY9m+6e2s=; b=KfV13wswq/tXlwWjmlEilvlGpel6LlN0sRj6ZrmZAmc78qVs5FG61bE/Zzux3PzsBH0XgD xXymj3VoCs6nWegYo5LpDR5IOeybPYF81T703QzAdl2ZiBl7j/L2o09D+4lzvuYiFzUtKw FuOOsxM7K6B0GcKQsWfx46x/r3n1HWc= Received: from mail-qk1-f198.google.com (mail-qk1-f198.google.com [209.85.222.198]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-235-Fc9qWXFtNm2ygM-D-etvvg-1; Sun, 08 Mar 2020 03:55:40 -0400 X-MC-Unique: Fc9qWXFtNm2ygM-D-etvvg-1 Received: by mail-qk1-f198.google.com with SMTP id x21so4951868qkn.18 for ; Sat, 07 Mar 2020 23:55:40 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to; bh=dcVUm4B4vO68jLIPB1CjCTQUpwYAA3Uz1MtdhFz4cpA=; b=OzH9fuXFhaMiwBP1TZ/m2M0CctOn1g3GWD1rdsDTLtVC1fjcjESQZ+pQxLtwdCcv8b PdnQVglCL6II7QMC6oAriU5jw5ETdP8Gb4FORpl1z/J/oSHEFdoKMvb303gASb3IhNOq YtdvW/j26HzGDmNCwEHEVuRZRBHeGpOMx54eoPLL1RaDHz2MghEZWMFDH0+/f2GY8nt2 CV1UHjT6KvlLCc/KyawCc6OZAtvqEy8dwvMirq7/DMiYSjjXidOP8lWO4piaWTAVFhWP UbYgc4Eyy0QVhCKuL/H9plHWDIAKh0uVaN5FlkJPXXHk0QwLC1NqZmZMsJH4HISFmhFU 557g== X-Gm-Message-State: ANhLgQ1zHDmaqAZD/3qtBWMtPbj7KVPvOaqEugDdnOh9+L/2P/IWxTLR regTPbI/G+67AAN1+JKwL3+xaKOoEbsTm+It/FxjYBItmgZ+pL33pTkqgB46otT3tDks3R0Sk6R vjdQ82swK/0Co X-Received: by 2002:ac8:3003:: with SMTP id f3mr3937568qte.293.1583654139350; Sat, 07 Mar 2020 23:55:39 -0800 (PST) X-Received: by 2002:ac8:3003:: with SMTP id f3mr3937531qte.293.1583654138862; Sat, 07 Mar 2020 23:55:38 -0800 (PST) Received: from redhat.com (bzq-79-178-2-19.red.bezeqint.net. [79.178.2.19]) by smtp.gmail.com with ESMTPSA id 6sm7644717qky.30.2020.03.07.23.55.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 07 Mar 2020 23:55:38 -0800 (PST) Date: Sun, 8 Mar 2020 03:55:28 -0400 From: "Michael S. Tsirkin" To: Philippe =?iso-8859-1?Q?Mathieu-Daud=E9?= Subject: Re: [PATCH v2 1/2] misc: Replace zero-length arrays with flexible array member (automatic) Message-ID: <20200308035457-mutt-send-email-mst@kernel.org> References: <20200304153816.23636-1-philmd@redhat.com> <20200304153816.23636-2-philmd@redhat.com> MIME-Version: 1.0 In-Reply-To: <20200304153816.23636-2-philmd@redhat.com> X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 207.211.31.81 X-BeenThere: qemu-arm@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Fam Zheng , Peter Maydell , Paul Durrant , Jason Wang , qemu-devel@nongnu.org, Gerd Hoffmann , Stefano Stabellini , qemu-block@nongnu.org, David Hildenbrand , "Gustavo A . R . Silva" , Halil Pasic , Christian Borntraeger , "Gonglei \(Arei\)" , Marcel Apfelbaum , Anthony Perard , xen-devel@lists.xenproject.org, Thomas Huth , Eduardo Habkost , Yuval Shaia , =?iso-8859-1?Q?Marc-Andr=E9?= Lureau , qemu-s390x@nongnu.org, qemu-arm@nongnu.org, Paolo Bonzini , John Snow , Richard Henderson , Kevin Wolf , Xiao Guangrong , Eric Auger , Cornelia Huck , Laurent Vivier , Max Reitz , Igor Mammedov Errors-To: qemu-arm-bounces+alex.bennee=linaro.org@nongnu.org Sender: "Qemu-arm" X-TUID: EgudBln/Dm9r On Wed, Mar 04, 2020 at 04:38:15PM +0100, Philippe Mathieu-Daud=E9 wrote: > Description copied from Linux kernel commit from Gustavo A. R. Silva > (see [3]): >=20 > --v-- description start --v-- >=20 > The current codebase makes use of the zero-length array language > extension to the C90 standard, but the preferred mechanism to > declare variable-length types such as these ones is a flexible > array member [1], introduced in C99: >=20 > struct foo { > int stuff; > struct boo array[]; > }; >=20 > By making use of the mechanism above, we will get a compiler > warning in case the flexible array does not occur last in the > structure, which will help us prevent some kind of undefined > behavior bugs from being unadvertenly introduced [2] to the > Linux codebase from now on. >=20 > --^-- description end --^-- >=20 > Do the similar housekeeping in the QEMU codebase (which uses > C99 since commit 7be41675f7cb). >=20 > All these instances of code were found with the help of the > following Coccinelle script: >=20 > @@ > identifier s, m, a; > type t, T; > @@ > struct s { > ... > t m; > - T a[0]; > + T a[]; > }; > @@ > identifier s, m, a; > type t, T; > @@ > struct s { > ... > t m; > - T a[0]; > + T a[]; > } QEMU_PACKED; >=20 > [1] https://gcc.gnu.org/onlinedocs/gcc/Zero-Length.html > [2] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/co= mmit/?id=3D76497732932f > [3] https://git.kernel.org/pub/scm/linux/kernel/git/gustavoars/linux.git/= commit/?id=3D17642a2fbd2c1 >=20 > Inspired-by: Gustavo A. R. Silva > Reviewed-by: David Hildenbrand > Signed-off-by: Philippe Mathieu-Daud=E9 Acked-by: Michael S. Tsirkin Reviewed-by: Michael S. Tsirkin > --- > v2: cocci script updated to not match structures of onlyi > a single flexible array member: >=20 > block/qed.h:106:14: error: flexible array member 'offsets' not allowed = in otherwise empty struct > uint64_t offsets[]; /* in bytes */ > ^ > --- > bsd-user/qemu.h | 2 +- > contrib/libvhost-user/libvhost-user.h | 2 +- > hw/m68k/bootinfo.h | 2 +- > hw/scsi/srp.h | 6 +++--- > hw/xen/xen_pt.h | 2 +- > include/hw/acpi/acpi-defs.h | 12 ++++++------ > include/hw/arm/smmu-common.h | 2 +- > include/hw/i386/intel_iommu.h | 3 ++- > include/hw/virtio/virtio-iommu.h | 2 +- > include/sysemu/cryptodev.h | 2 +- > include/tcg/tcg.h | 2 +- > pc-bios/s390-ccw/bootmap.h | 2 +- > pc-bios/s390-ccw/sclp.h | 2 +- > tests/qtest/libqos/ahci.h | 2 +- > block/linux-aio.c | 2 +- > hw/acpi/nvdimm.c | 6 +++--- > hw/dma/soc_dma.c | 2 +- > hw/i386/x86.c | 2 +- > hw/misc/omap_l4.c | 2 +- > hw/nvram/eeprom93xx.c | 2 +- > hw/rdma/vmw/pvrdma_qp_ops.c | 4 ++-- > hw/usb/dev-network.c | 2 +- > hw/usb/dev-smartcard-reader.c | 4 ++-- > hw/virtio/virtio.c | 4 ++-- > net/queue.c | 2 +- > 25 files changed, 38 insertions(+), 37 deletions(-) >=20 > diff --git a/bsd-user/qemu.h b/bsd-user/qemu.h > index 09e8aed9c7..f8bb1e5459 100644 > --- a/bsd-user/qemu.h > +++ b/bsd-user/qemu.h > @@ -95,7 +95,7 @@ typedef struct TaskState { > struct sigqueue *first_free; /* first free siginfo queue entry */ > int signal_pending; /* non zero if a signal may be pending */ > =20 > - uint8_t stack[0]; > + uint8_t stack[]; > } __attribute__((aligned(16))) TaskState; > =20 > void init_task_state(TaskState *ts); > diff --git a/contrib/libvhost-user/libvhost-user.h b/contrib/libvhost-use= r/libvhost-user.h > index 6fc8000e99..f30394fab6 100644 > --- a/contrib/libvhost-user/libvhost-user.h > +++ b/contrib/libvhost-user/libvhost-user.h > @@ -286,7 +286,7 @@ typedef struct VuVirtqInflight { > uint16_t used_idx; > =20 > /* Used to track the state of each descriptor in descriptor table */ > - VuDescStateSplit desc[0]; > + VuDescStateSplit desc[]; > } VuVirtqInflight; > =20 > typedef struct VuVirtqInflightDesc { > diff --git a/hw/m68k/bootinfo.h b/hw/m68k/bootinfo.h > index 5f8ded2686..c954270aad 100644 > --- a/hw/m68k/bootinfo.h > +++ b/hw/m68k/bootinfo.h > @@ -14,7 +14,7 @@ > struct bi_record { > uint16_t tag; /* tag ID */ > uint16_t size; /* size of record */ > - uint32_t data[0]; /* data */ > + uint32_t data[]; /* data */ > }; > =20 > /* machine independent tags */ > diff --git a/hw/scsi/srp.h b/hw/scsi/srp.h > index d27f31d2d5..54c954badd 100644 > --- a/hw/scsi/srp.h > +++ b/hw/scsi/srp.h > @@ -112,7 +112,7 @@ struct srp_direct_buf { > struct srp_indirect_buf { > struct srp_direct_buf table_desc; > uint32_t len; > - struct srp_direct_buf desc_list[0]; > + struct srp_direct_buf desc_list[]; > } QEMU_PACKED; > =20 > enum { > @@ -211,7 +211,7 @@ struct srp_cmd { > uint8_t reserved4; > uint8_t add_cdb_len; > uint8_t cdb[16]; > - uint8_t add_data[0]; > + uint8_t add_data[]; > } QEMU_PACKED; > =20 > enum { > @@ -241,7 +241,7 @@ struct srp_rsp { > uint32_t data_in_res_cnt; > uint32_t sense_data_len; > uint32_t resp_data_len; > - uint8_t data[0]; > + uint8_t data[]; > } QEMU_PACKED; > =20 > #endif /* SCSI_SRP_H */ > diff --git a/hw/xen/xen_pt.h b/hw/xen/xen_pt.h > index 9167bbaf6d..179775db7b 100644 > --- a/hw/xen/xen_pt.h > +++ b/hw/xen/xen_pt.h > @@ -203,7 +203,7 @@ typedef struct XenPTMSIX { > uint64_t mmio_base_addr; > MemoryRegion mmio; > void *phys_iomem_base; > - XenPTMSIXEntry msix_entry[0]; > + XenPTMSIXEntry msix_entry[]; > } XenPTMSIX; > =20 > struct XenPCIPassthroughState { > diff --git a/include/hw/acpi/acpi-defs.h b/include/hw/acpi/acpi-defs.h > index 57a3f58b0c..19f7ba7b70 100644 > --- a/include/hw/acpi/acpi-defs.h > +++ b/include/hw/acpi/acpi-defs.h > @@ -518,7 +518,7 @@ struct AcpiDmarDeviceScope { > struct { > uint8_t device; > uint8_t function; > - } path[0]; > + } path[]; > } QEMU_PACKED; > typedef struct AcpiDmarDeviceScope AcpiDmarDeviceScope; > =20 > @@ -530,7 +530,7 @@ struct AcpiDmarHardwareUnit { > uint8_t reserved; > uint16_t pci_segment; /* The PCI Segment associated with this unit= */ > uint64_t address; /* Base address of remapping hardware register-s= et */ > - AcpiDmarDeviceScope scope[0]; > + AcpiDmarDeviceScope scope[]; > } QEMU_PACKED; > typedef struct AcpiDmarHardwareUnit AcpiDmarHardwareUnit; > =20 > @@ -541,7 +541,7 @@ struct AcpiDmarRootPortATS { > uint8_t flags; > uint8_t reserved; > uint16_t pci_segment; > - AcpiDmarDeviceScope scope[0]; > + AcpiDmarDeviceScope scope[]; > } QEMU_PACKED; > typedef struct AcpiDmarRootPortATS AcpiDmarRootPortATS; > =20 > @@ -604,7 +604,7 @@ typedef struct AcpiIortMemoryAccess AcpiIortMemoryAcc= ess; > struct AcpiIortItsGroup { > ACPI_IORT_NODE_HEADER_DEF > uint32_t its_count; > - uint32_t identifiers[0]; > + uint32_t identifiers[]; > } QEMU_PACKED; > typedef struct AcpiIortItsGroup AcpiIortItsGroup; > =20 > @@ -621,7 +621,7 @@ struct AcpiIortSmmu3 { > uint32_t pri_gsiv; > uint32_t gerr_gsiv; > uint32_t sync_gsiv; > - AcpiIortIdMapping id_mapping_array[0]; > + AcpiIortIdMapping id_mapping_array[]; > } QEMU_PACKED; > typedef struct AcpiIortSmmu3 AcpiIortSmmu3; > =20 > @@ -630,7 +630,7 @@ struct AcpiIortRC { > AcpiIortMemoryAccess memory_properties; > uint32_t ats_attribute; > uint32_t pci_segment_number; > - AcpiIortIdMapping id_mapping_array[0]; > + AcpiIortIdMapping id_mapping_array[]; > } QEMU_PACKED; > typedef struct AcpiIortRC AcpiIortRC; > =20 > diff --git a/include/hw/arm/smmu-common.h b/include/hw/arm/smmu-common.h > index 1f37844e5c..ca4a4b1ad1 100644 > --- a/include/hw/arm/smmu-common.h > +++ b/include/hw/arm/smmu-common.h > @@ -85,7 +85,7 @@ typedef struct SMMUDevice { > =20 > typedef struct SMMUPciBus { > PCIBus *bus; > - SMMUDevice *pbdev[0]; /* Parent array is sparse, so dynamically al= loc */ > + SMMUDevice *pbdev[]; /* Parent array is sparse, so dynamically all= oc */ > } SMMUPciBus; > =20 > typedef struct SMMUIOTLBKey { > diff --git a/include/hw/i386/intel_iommu.h b/include/hw/i386/intel_iommu.= h > index 66b931e526..67aaa64c1b 100644 > --- a/include/hw/i386/intel_iommu.h > +++ b/include/hw/i386/intel_iommu.h > @@ -118,7 +118,8 @@ struct VTDAddressSpace { > =20 > struct VTDBus { > PCIBus* bus;=09=09/* A reference to the bus to provide translation f= or */ > - VTDAddressSpace *dev_as[0];=09/* A table of VTDAddressSpace objects = indexed by devfn */ > + /* A table of VTDAddressSpace objects indexed by devfn */ > + VTDAddressSpace *dev_as[]; > }; > =20 > struct VTDIOTLBEntry { > diff --git a/include/hw/virtio/virtio-iommu.h b/include/hw/virtio/virtio-= iommu.h > index 6f67f1020a..e653004d7c 100644 > --- a/include/hw/virtio/virtio-iommu.h > +++ b/include/hw/virtio/virtio-iommu.h > @@ -41,7 +41,7 @@ typedef struct IOMMUDevice { > =20 > typedef struct IOMMUPciBus { > PCIBus *bus; > - IOMMUDevice *pbdev[0]; /* Parent array is sparse, so dynamically al= loc */ > + IOMMUDevice *pbdev[]; /* Parent array is sparse, so dynamically all= oc */ > } IOMMUPciBus; > =20 > typedef struct VirtIOIOMMU { > diff --git a/include/sysemu/cryptodev.h b/include/sysemu/cryptodev.h > index a9afb7e5b5..35eab06d0e 100644 > --- a/include/sysemu/cryptodev.h > +++ b/include/sysemu/cryptodev.h > @@ -143,7 +143,7 @@ typedef struct CryptoDevBackendSymOpInfo { > uint8_t *dst; > uint8_t *aad_data; > uint8_t *digest_result; > - uint8_t data[0]; > + uint8_t data[]; > } CryptoDevBackendSymOpInfo; > =20 > typedef struct CryptoDevBackendClass { > diff --git a/include/tcg/tcg.h b/include/tcg/tcg.h > index 54e5446880..c48bd76b0a 100644 > --- a/include/tcg/tcg.h > +++ b/include/tcg/tcg.h > @@ -267,7 +267,7 @@ struct TCGLabel { > typedef struct TCGPool { > struct TCGPool *next; > int size; > - uint8_t data[0] __attribute__ ((aligned)); > + uint8_t data[] __attribute__ ((aligned)); > } TCGPool; > =20 > #define TCG_POOL_CHUNK_SIZE 32768 > diff --git a/pc-bios/s390-ccw/bootmap.h b/pc-bios/s390-ccw/bootmap.h > index 94f53a5f1e..12a0166aae 100644 > --- a/pc-bios/s390-ccw/bootmap.h > +++ b/pc-bios/s390-ccw/bootmap.h > @@ -136,7 +136,7 @@ typedef struct BootMapScriptHeader { > =20 > typedef struct BootMapScript { > BootMapScriptHeader header; > - BootMapScriptEntry entry[0]; > + BootMapScriptEntry entry[]; > } __attribute__ ((packed)) BootMapScript; > =20 > /* > diff --git a/pc-bios/s390-ccw/sclp.h b/pc-bios/s390-ccw/sclp.h > index 8450161ba7..64b53cad29 100644 > --- a/pc-bios/s390-ccw/sclp.h > +++ b/pc-bios/s390-ccw/sclp.h > @@ -95,7 +95,7 @@ typedef struct EventBufferHeader { > typedef struct WriteEventData { > SCCBHeader h; > EventBufferHeader ebh; > - char data[0]; > + char data[]; > } __attribute__((packed)) WriteEventData; > =20 > typedef struct ReadEventData { > diff --git a/tests/qtest/libqos/ahci.h b/tests/qtest/libqos/ahci.h > index f05b3e5fce..44ab1104b5 100644 > --- a/tests/qtest/libqos/ahci.h > +++ b/tests/qtest/libqos/ahci.h > @@ -351,7 +351,7 @@ typedef struct AHCIQState { > typedef struct FIS { > uint8_t fis_type; > uint8_t flags; > - char data[0]; > + char data[]; > } __attribute__((__packed__)) FIS; > =20 > /** > diff --git a/block/linux-aio.c b/block/linux-aio.c > index 91204a25a2..3c0527c2bf 100644 > --- a/block/linux-aio.c > +++ b/block/linux-aio.c > @@ -121,7 +121,7 @@ struct aio_ring { > unsigned incompat_features; > unsigned header_length; /* size of aio_ring */ > =20 > - struct io_event io_events[0]; > + struct io_event io_events[]; > }; > =20 > /** > diff --git a/hw/acpi/nvdimm.c b/hw/acpi/nvdimm.c > index 5219dd0e2e..eb6a37b14e 100644 > --- a/hw/acpi/nvdimm.c > +++ b/hw/acpi/nvdimm.c > @@ -485,7 +485,7 @@ struct NvdimmFuncGetLabelDataOut { > /* the size of buffer filled by QEMU. */ > uint32_t len; > uint32_t func_ret_status; /* return status code. */ > - uint8_t out_buf[0]; /* the data got via Get Namesapce Label function= . */ > + uint8_t out_buf[]; /* the data got via Get Namesapce Label function.= */ > } QEMU_PACKED; > typedef struct NvdimmFuncGetLabelDataOut NvdimmFuncGetLabelDataOut; > QEMU_BUILD_BUG_ON(sizeof(NvdimmFuncGetLabelDataOut) > NVDIMM_DSM_MEMORY_= SIZE); > @@ -493,7 +493,7 @@ QEMU_BUILD_BUG_ON(sizeof(NvdimmFuncGetLabelDataOut) >= NVDIMM_DSM_MEMORY_SIZE); > struct NvdimmFuncSetLabelDataIn { > uint32_t offset; /* the offset in the namespace label data area. */ > uint32_t length; /* the size of data is to be written via the functi= on. */ > - uint8_t in_buf[0]; /* the data written to label data area. */ > + uint8_t in_buf[]; /* the data written to label data area. */ > } QEMU_PACKED; > typedef struct NvdimmFuncSetLabelDataIn NvdimmFuncSetLabelDataIn; > QEMU_BUILD_BUG_ON(sizeof(NvdimmFuncSetLabelDataIn) + > @@ -510,7 +510,7 @@ struct NvdimmFuncReadFITOut { > /* the size of buffer filled by QEMU. */ > uint32_t len; > uint32_t func_ret_status; /* return status code. */ > - uint8_t fit[0]; /* the FIT data. */ > + uint8_t fit[]; /* the FIT data. */ > } QEMU_PACKED; > typedef struct NvdimmFuncReadFITOut NvdimmFuncReadFITOut; > QEMU_BUILD_BUG_ON(sizeof(NvdimmFuncReadFITOut) > NVDIMM_DSM_MEMORY_SIZE)= ; > diff --git a/hw/dma/soc_dma.c b/hw/dma/soc_dma.c > index c3e41581b6..3a430057f5 100644 > --- a/hw/dma/soc_dma.c > +++ b/hw/dma/soc_dma.c > @@ -80,7 +80,7 @@ struct dma_s { > } *memmap; > int memmap_size; > =20 > - struct soc_dma_ch_s ch[0]; > + struct soc_dma_ch_s ch[]; > }; > =20 > static void soc_dma_ch_schedule(struct soc_dma_ch_s *ch, int delay_bytes= ) > diff --git a/hw/i386/x86.c b/hw/i386/x86.c > index 7f38e6ba8b..08246523f2 100644 > --- a/hw/i386/x86.c > +++ b/hw/i386/x86.c > @@ -328,7 +328,7 @@ struct setup_data { > uint64_t next; > uint32_t type; > uint32_t len; > - uint8_t data[0]; > + uint8_t data[]; > } __attribute__((packed)); > =20 > =20 > diff --git a/hw/misc/omap_l4.c b/hw/misc/omap_l4.c > index 61b6df564a..54aeaecd69 100644 > --- a/hw/misc/omap_l4.c > +++ b/hw/misc/omap_l4.c > @@ -24,7 +24,7 @@ struct omap_l4_s { > MemoryRegion *address_space; > hwaddr base; > int ta_num; > - struct omap_target_agent_s ta[0]; > + struct omap_target_agent_s ta[]; > }; > =20 > struct omap_l4_s *omap_l4_init(MemoryRegion *address_space, > diff --git a/hw/nvram/eeprom93xx.c b/hw/nvram/eeprom93xx.c > index 07f09549ed..ca6f591c84 100644 > --- a/hw/nvram/eeprom93xx.c > +++ b/hw/nvram/eeprom93xx.c > @@ -86,7 +86,7 @@ struct _eeprom_t { > uint8_t addrbits; > uint16_t size; > uint16_t data; > - uint16_t contents[0]; > + uint16_t contents[]; > }; > =20 > /* Code for saving and restoring of EEPROM state. */ > diff --git a/hw/rdma/vmw/pvrdma_qp_ops.c b/hw/rdma/vmw/pvrdma_qp_ops.c > index bd6db858de..8050287a6c 100644 > --- a/hw/rdma/vmw/pvrdma_qp_ops.c > +++ b/hw/rdma/vmw/pvrdma_qp_ops.c > @@ -34,13 +34,13 @@ typedef struct CompHandlerCtx { > /* Send Queue WQE */ > typedef struct PvrdmaSqWqe { > struct pvrdma_sq_wqe_hdr hdr; > - struct pvrdma_sge sge[0]; > + struct pvrdma_sge sge[]; > } PvrdmaSqWqe; > =20 > /* Recv Queue WQE */ > typedef struct PvrdmaRqWqe { > struct pvrdma_rq_wqe_hdr hdr; > - struct pvrdma_sge sge[0]; > + struct pvrdma_sge sge[]; > } PvrdmaRqWqe; > =20 > /* > diff --git a/hw/usb/dev-network.c b/hw/usb/dev-network.c > index 9a78ad928b..6210427544 100644 > --- a/hw/usb/dev-network.c > +++ b/hw/usb/dev-network.c > @@ -626,7 +626,7 @@ static const uint32_t oid_supported_list[] =3D > struct rndis_response { > QTAILQ_ENTRY(rndis_response) entries; > uint32_t length; > - uint8_t buf[0]; > + uint8_t buf[]; > }; > =20 > typedef struct USBNetState { > diff --git a/hw/usb/dev-smartcard-reader.c b/hw/usb/dev-smartcard-reader.= c > index 02693a26ad..ef72738ced 100644 > --- a/hw/usb/dev-smartcard-reader.c > +++ b/hw/usb/dev-smartcard-reader.c > @@ -227,7 +227,7 @@ typedef struct QEMU_PACKED CCID_Parameter { > typedef struct QEMU_PACKED CCID_DataBlock { > CCID_BULK_IN b; > uint8_t bChainParameter; > - uint8_t abData[0]; > + uint8_t abData[]; > } CCID_DataBlock; > =20 > /* 6.1.4 PC_to_RDR_XfrBlock */ > @@ -235,7 +235,7 @@ typedef struct QEMU_PACKED CCID_XferBlock { > CCID_Header hdr; > uint8_t bBWI; /* Block Waiting Timeout */ > uint16_t wLevelParameter; /* XXX currently unused */ > - uint8_t abData[0]; > + uint8_t abData[]; > } CCID_XferBlock; > =20 > typedef struct QEMU_PACKED CCID_IccPowerOn { > diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c > index b2d415e5dd..b6c8ef5bc0 100644 > --- a/hw/virtio/virtio.c > +++ b/hw/virtio/virtio.c > @@ -54,7 +54,7 @@ typedef struct VRingAvail > { > uint16_t flags; > uint16_t idx; > - uint16_t ring[0]; > + uint16_t ring[]; > } VRingAvail; > =20 > typedef struct VRingUsedElem > @@ -67,7 +67,7 @@ typedef struct VRingUsed > { > uint16_t flags; > uint16_t idx; > - VRingUsedElem ring[0]; > + VRingUsedElem ring[]; > } VRingUsed; > =20 > typedef struct VRingMemoryRegionCaches { > diff --git a/net/queue.c b/net/queue.c > index 61276ca4be..0164727e39 100644 > --- a/net/queue.c > +++ b/net/queue.c > @@ -46,7 +46,7 @@ struct NetPacket { > unsigned flags; > int size; > NetPacketSent *sent_cb; > - uint8_t data[0]; > + uint8_t data[]; > }; > =20 > struct NetQueue { > --=20 > 2.21.1 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-11.6 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MENTIONS_GIT_HOSTING,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2AA42C10F28 for ; Sun, 8 Mar 2020 07:56:27 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id DB8C820663 for ; Sun, 8 Mar 2020 07:56:26 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="E2NQq5QT" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org DB8C820663 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1jAqmr-0000Pf-Kc; Sun, 08 Mar 2020 07:55:49 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1jAqmp-0000Pa-9t for xen-devel@lists.xenproject.org; Sun, 08 Mar 2020 07:55:47 +0000 X-Inumbo-ID: 37067189-6112-11ea-ab0a-12813bfff9fa Received: from us-smtp-delivery-1.mimecast.com (unknown [207.211.31.120]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTP id 37067189-6112-11ea-ab0a-12813bfff9fa; Sun, 08 Mar 2020 07:55:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1583654144; 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=bk1eJFHWPNYwXgmgIgrCTgUnIxpdqLjzS3WY9m+6e2s=; b=E2NQq5QTtknLcMJDAsmnZatnN2qJ8gy9pJ7SPY3+23LTRcSrGcu2qxBJ8vLQt0MtMq8YHi NKIwyuCvjerCU169H+80gwaqBXG3VJDyFWKJqk0sa5zQBBv4DZ2eIRRaoCFoKLHA1knjgL j0fq2lMxpXpCVkQCYzmn3tnXFOpenaw= Received: from mail-qk1-f198.google.com (mail-qk1-f198.google.com [209.85.222.198]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-125-z3Fq2XHXMp-Zogildz-g6g-1; Sun, 08 Mar 2020 03:55:40 -0400 X-MC-Unique: z3Fq2XHXMp-Zogildz-g6g-1 Received: by mail-qk1-f198.google.com with SMTP id b22so4970375qkk.15 for ; Sat, 07 Mar 2020 23:55:40 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to; bh=dcVUm4B4vO68jLIPB1CjCTQUpwYAA3Uz1MtdhFz4cpA=; b=SjsRs4Lj3FqIuxMM74bAQl4+xRko/ZC3brkDkREtXBB5Ov2hUGC/f9uUQRoRVvafrB ezfngCAccGBTWvphh6yrdUyHpnXNUL5riBD82U1ausXyUM1qz7XAOwlnfseS0aQiwY1G +6qq4GBI6ONwUzMcKSRff9GFBLGlR8WIZUZiHM8XCR6/3ibloVuqf8JyJ9J4sAnT3M2S q+8i0kAErVeHNjpGNihU3TTvDi3CohnIpN6gvi8KKx21iyPkoBWcVn6ZEzfo0f1CeiNO RSg/gJHzNaFdg2TNgEgwUuwPtVpf2XEME1nWnOwTypdFuE3tKtSVxCo52TI0n6qioiOh LzHg== X-Gm-Message-State: ANhLgQ3lSVMaaD+RPoT7adJLnUqxNGdnU1Q8jzuMjYM9965XRAAv/Cl0 TaOxH82NK96ScMNNjH5wiopd3gwTQ67QowlE1k+EdDGTcFVdkZpl7fg9nsDBwb2d1aY/2y04hmz lfXt/frC9PpRB0ZrfKcIQfLsN5nA= X-Received: by 2002:ac8:3003:: with SMTP id f3mr3937572qte.293.1583654139397; Sat, 07 Mar 2020 23:55:39 -0800 (PST) X-Google-Smtp-Source: ADFU+vtfAw5DMrD9wr3mY99Z3Fb0dw8CfFlnU5VZhafbDirTOpvwlP+EG1w2C7UqPgVExpcGRi/0nw== X-Received: by 2002:ac8:3003:: with SMTP id f3mr3937531qte.293.1583654138862; Sat, 07 Mar 2020 23:55:38 -0800 (PST) Received: from redhat.com (bzq-79-178-2-19.red.bezeqint.net. [79.178.2.19]) by smtp.gmail.com with ESMTPSA id 6sm7644717qky.30.2020.03.07.23.55.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 07 Mar 2020 23:55:38 -0800 (PST) Date: Sun, 8 Mar 2020 03:55:28 -0400 From: "Michael S. Tsirkin" To: Philippe =?iso-8859-1?Q?Mathieu-Daud=E9?= Message-ID: <20200308035457-mutt-send-email-mst@kernel.org> References: <20200304153816.23636-1-philmd@redhat.com> <20200304153816.23636-2-philmd@redhat.com> MIME-Version: 1.0 In-Reply-To: <20200304153816.23636-2-philmd@redhat.com> X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Disposition: inline Subject: Re: [Xen-devel] [PATCH v2 1/2] misc: Replace zero-length arrays with flexible array member (automatic) X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Fam Zheng , Peter Maydell , Paul Durrant , Jason Wang , qemu-devel@nongnu.org, Gerd Hoffmann , Stefano Stabellini , qemu-block@nongnu.org, David Hildenbrand , "Gustavo A . R . Silva" , Halil Pasic , Christian Borntraeger , "Gonglei \(Arei\)" , Marcel Apfelbaum , Anthony Perard , xen-devel@lists.xenproject.org, Thomas Huth , Eduardo Habkost , Yuval Shaia , =?iso-8859-1?Q?Marc-Andr=E9?= Lureau , qemu-s390x@nongnu.org, qemu-arm@nongnu.org, Paolo Bonzini , John Snow , Richard Henderson , Kevin Wolf , Xiao Guangrong , Eric Auger , Cornelia Huck , Laurent Vivier , Max Reitz , Igor Mammedov Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" T24gV2VkLCBNYXIgMDQsIDIwMjAgYXQgMDQ6Mzg6MTVQTSArMDEwMCwgUGhpbGlwcGUgTWF0aGll dS1EYXVkw6kgd3JvdGU6Cj4gRGVzY3JpcHRpb24gY29waWVkIGZyb20gTGludXgga2VybmVsIGNv bW1pdCBmcm9tIEd1c3Rhdm8gQS4gUi4gU2lsdmEKPiAoc2VlIFszXSk6Cj4gCj4gLS12LS0gZGVz Y3JpcHRpb24gc3RhcnQgLS12LS0KPiAKPiAgIFRoZSBjdXJyZW50IGNvZGViYXNlIG1ha2VzIHVz ZSBvZiB0aGUgemVyby1sZW5ndGggYXJyYXkgbGFuZ3VhZ2UKPiAgIGV4dGVuc2lvbiB0byB0aGUg QzkwIHN0YW5kYXJkLCBidXQgdGhlIHByZWZlcnJlZCBtZWNoYW5pc20gdG8KPiAgIGRlY2xhcmUg dmFyaWFibGUtbGVuZ3RoIHR5cGVzIHN1Y2ggYXMgdGhlc2Ugb25lcyBpcyBhIGZsZXhpYmxlCj4g ICBhcnJheSBtZW1iZXIgWzFdLCBpbnRyb2R1Y2VkIGluIEM5OToKPiAKPiAgIHN0cnVjdCBmb28g ewo+ICAgICAgIGludCBzdHVmZjsKPiAgICAgICBzdHJ1Y3QgYm9vIGFycmF5W107Cj4gICB9Owo+ IAo+ICAgQnkgbWFraW5nIHVzZSBvZiB0aGUgbWVjaGFuaXNtIGFib3ZlLCB3ZSB3aWxsIGdldCBh IGNvbXBpbGVyCj4gICB3YXJuaW5nIGluIGNhc2UgdGhlIGZsZXhpYmxlIGFycmF5IGRvZXMgbm90 IG9jY3VyIGxhc3QgaW4gdGhlCj4gICBzdHJ1Y3R1cmUsIHdoaWNoIHdpbGwgaGVscCB1cyBwcmV2 ZW50IHNvbWUga2luZCBvZiB1bmRlZmluZWQKPiAgIGJlaGF2aW9yIGJ1Z3MgZnJvbSBiZWluZyB1 bmFkdmVydGVubHkgaW50cm9kdWNlZCBbMl0gdG8gdGhlCj4gICBMaW51eCBjb2RlYmFzZSBmcm9t IG5vdyBvbi4KPiAKPiAtLV4tLSBkZXNjcmlwdGlvbiBlbmQgLS1eLS0KPiAKPiBEbyB0aGUgc2lt aWxhciBob3VzZWtlZXBpbmcgaW4gdGhlIFFFTVUgY29kZWJhc2UgKHdoaWNoIHVzZXMKPiBDOTkg c2luY2UgY29tbWl0IDdiZTQxNjc1ZjdjYikuCj4gCj4gQWxsIHRoZXNlIGluc3RhbmNlcyBvZiBj b2RlIHdlcmUgZm91bmQgd2l0aCB0aGUgaGVscCBvZiB0aGUKPiBmb2xsb3dpbmcgQ29jY2luZWxs ZSBzY3JpcHQ6Cj4gCj4gICBAQAo+ICAgaWRlbnRpZmllciBzLCBtLCBhOwo+ICAgdHlwZSB0LCBU Owo+ICAgQEAKPiAgICBzdHJ1Y3QgcyB7Cj4gICAgICAgLi4uCj4gICAgICAgdCBtOwo+ICAgLSAg IFQgYVswXTsKPiAgICsgICBUIGFbXTsKPiAgIH07Cj4gICBAQAo+ICAgaWRlbnRpZmllciBzLCBt LCBhOwo+ICAgdHlwZSB0LCBUOwo+ICAgQEAKPiAgICBzdHJ1Y3QgcyB7Cj4gICAgICAgLi4uCj4g ICAgICAgdCBtOwo+ICAgLSAgIFQgYVswXTsKPiAgICsgICBUIGFbXTsKPiAgICB9IFFFTVVfUEFD S0VEOwo+IAo+IFsxXSBodHRwczovL2djYy5nbnUub3JnL29ubGluZWRvY3MvZ2NjL1plcm8tTGVu Z3RoLmh0bWwKPiBbMl0gaHR0cHM6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5l bC9naXQvdG9ydmFsZHMvbGludXguZ2l0L2NvbW1pdC8/aWQ9NzY0OTc3MzI5MzJmCj4gWzNdIGh0 dHBzOi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2d1c3Rhdm9hcnMv bGludXguZ2l0L2NvbW1pdC8/aWQ9MTc2NDJhMmZiZDJjMQo+IAo+IEluc3BpcmVkLWJ5OiBHdXN0 YXZvIEEuIFIuIFNpbHZhIDxndXN0YXZvQGVtYmVkZGVkb3IuY29tPgo+IFJldmlld2VkLWJ5OiBE YXZpZCBIaWxkZW5icmFuZCA8ZGF2aWRAcmVkaGF0LmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBQaGls aXBwZSBNYXRoaWV1LURhdWTDqSA8cGhpbG1kQHJlZGhhdC5jb20+CgpBY2tlZC1ieTogTWljaGFl bCBTLiBUc2lya2luIDxtc3RAcmVkaGF0LmNvbT4KUmV2aWV3ZWQtYnk6IE1pY2hhZWwgUy4gVHNp cmtpbiA8bXN0QHJlZGhhdC5jb20+Cgo+IC0tLQo+IHYyOiBjb2NjaSBzY3JpcHQgdXBkYXRlZCB0 byBub3QgbWF0Y2ggc3RydWN0dXJlcyBvZiBvbmx5aQo+IGEgc2luZ2xlIGZsZXhpYmxlIGFycmF5 IG1lbWJlcjoKPiAKPiAgIGJsb2NrL3FlZC5oOjEwNjoxNDogZXJyb3I6IGZsZXhpYmxlIGFycmF5 IG1lbWJlciAnb2Zmc2V0cycgbm90IGFsbG93ZWQgaW4gb3RoZXJ3aXNlIGVtcHR5IHN0cnVjdAo+ ICAgICAgIHVpbnQ2NF90IG9mZnNldHNbXTsgICAgICAgICAgICAgLyogaW4gYnl0ZXMgKi8KPiAg ICAgICAgICAgICAgICBeCj4gLS0tCj4gIGJzZC11c2VyL3FlbXUuaCAgICAgICAgICAgICAgICAg ICAgICAgfCAgMiArLQo+ICBjb250cmliL2xpYnZob3N0LXVzZXIvbGlidmhvc3QtdXNlci5oIHwg IDIgKy0KPiAgaHcvbTY4ay9ib290aW5mby5oICAgICAgICAgICAgICAgICAgICB8ICAyICstCj4g IGh3L3Njc2kvc3JwLmggICAgICAgICAgICAgICAgICAgICAgICAgfCAgNiArKystLS0KPiAgaHcv eGVuL3hlbl9wdC5oICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCj4gIGluY2x1ZGUvaHcv YWNwaS9hY3BpLWRlZnMuaCAgICAgICAgICAgfCAxMiArKysrKystLS0tLS0KPiAgaW5jbHVkZS9o dy9hcm0vc21tdS1jb21tb24uaCAgICAgICAgICB8ICAyICstCj4gIGluY2x1ZGUvaHcvaTM4Ni9p bnRlbF9pb21tdS5oICAgICAgICAgfCAgMyArKy0KPiAgaW5jbHVkZS9ody92aXJ0aW8vdmlydGlv LWlvbW11LmggICAgICB8ICAyICstCj4gIGluY2x1ZGUvc3lzZW11L2NyeXB0b2Rldi5oICAgICAg ICAgICAgfCAgMiArLQo+ICBpbmNsdWRlL3RjZy90Y2cuaCAgICAgICAgICAgICAgICAgICAgIHwg IDIgKy0KPiAgcGMtYmlvcy9zMzkwLWNjdy9ib290bWFwLmggICAgICAgICAgICB8ICAyICstCj4g IHBjLWJpb3MvczM5MC1jY3cvc2NscC5oICAgICAgICAgICAgICAgfCAgMiArLQo+ICB0ZXN0cy9x dGVzdC9saWJxb3MvYWhjaS5oICAgICAgICAgICAgIHwgIDIgKy0KPiAgYmxvY2svbGludXgtYWlv LmMgICAgICAgICAgICAgICAgICAgICB8ICAyICstCj4gIGh3L2FjcGkvbnZkaW1tLmMgICAgICAg ICAgICAgICAgICAgICAgfCAgNiArKystLS0KPiAgaHcvZG1hL3NvY19kbWEuYyAgICAgICAgICAg ICAgICAgICAgICB8ICAyICstCj4gIGh3L2kzODYveDg2LmMgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgMiArLQo+ICBody9taXNjL29tYXBfbDQuYyAgICAgICAgICAgICAgICAgICAgIHwgIDIg Ky0KPiAgaHcvbnZyYW0vZWVwcm9tOTN4eC5jICAgICAgICAgICAgICAgICB8ICAyICstCj4gIGh3 L3JkbWEvdm13L3B2cmRtYV9xcF9vcHMuYyAgICAgICAgICAgfCAgNCArKy0tCj4gIGh3L3VzYi9k ZXYtbmV0d29yay5jICAgICAgICAgICAgICAgICAgfCAgMiArLQo+ICBody91c2IvZGV2LXNtYXJ0 Y2FyZC1yZWFkZXIuYyAgICAgICAgIHwgIDQgKystLQo+ICBody92aXJ0aW8vdmlydGlvLmMgICAg ICAgICAgICAgICAgICAgIHwgIDQgKystLQo+ICBuZXQvcXVldWUuYyAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgIDIgKy0KPiAgMjUgZmlsZXMgY2hhbmdlZCwgMzggaW5zZXJ0aW9ucygrKSwg MzcgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2JzZC11c2VyL3FlbXUuaCBiL2JzZC11 c2VyL3FlbXUuaAo+IGluZGV4IDA5ZThhZWQ5YzcuLmY4YmIxZTU0NTkgMTAwNjQ0Cj4gLS0tIGEv YnNkLXVzZXIvcWVtdS5oCj4gKysrIGIvYnNkLXVzZXIvcWVtdS5oCj4gQEAgLTk1LDcgKzk1LDcg QEAgdHlwZWRlZiBzdHJ1Y3QgVGFza1N0YXRlIHsKPiAgICAgIHN0cnVjdCBzaWdxdWV1ZSAqZmly c3RfZnJlZTsgLyogZmlyc3QgZnJlZSBzaWdpbmZvIHF1ZXVlIGVudHJ5ICovCj4gICAgICBpbnQg c2lnbmFsX3BlbmRpbmc7IC8qIG5vbiB6ZXJvIGlmIGEgc2lnbmFsIG1heSBiZSBwZW5kaW5nICov Cj4gIAo+IC0gICAgdWludDhfdCBzdGFja1swXTsKPiArICAgIHVpbnQ4X3Qgc3RhY2tbXTsKPiAg fSBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDE2KSkpIFRhc2tTdGF0ZTsKPiAgCj4gIHZvaWQgaW5p dF90YXNrX3N0YXRlKFRhc2tTdGF0ZSAqdHMpOwo+IGRpZmYgLS1naXQgYS9jb250cmliL2xpYnZo b3N0LXVzZXIvbGlidmhvc3QtdXNlci5oIGIvY29udHJpYi9saWJ2aG9zdC11c2VyL2xpYnZob3N0 LXVzZXIuaAo+IGluZGV4IDZmYzgwMDBlOTkuLmYzMDM5NGZhYjYgMTAwNjQ0Cj4gLS0tIGEvY29u dHJpYi9saWJ2aG9zdC11c2VyL2xpYnZob3N0LXVzZXIuaAo+ICsrKyBiL2NvbnRyaWIvbGlidmhv c3QtdXNlci9saWJ2aG9zdC11c2VyLmgKPiBAQCAtMjg2LDcgKzI4Niw3IEBAIHR5cGVkZWYgc3Ry dWN0IFZ1VmlydHFJbmZsaWdodCB7Cj4gICAgICB1aW50MTZfdCB1c2VkX2lkeDsKPiAgCj4gICAg ICAvKiBVc2VkIHRvIHRyYWNrIHRoZSBzdGF0ZSBvZiBlYWNoIGRlc2NyaXB0b3IgaW4gZGVzY3Jp cHRvciB0YWJsZSAqLwo+IC0gICAgVnVEZXNjU3RhdGVTcGxpdCBkZXNjWzBdOwo+ICsgICAgVnVE ZXNjU3RhdGVTcGxpdCBkZXNjW107Cj4gIH0gVnVWaXJ0cUluZmxpZ2h0Owo+ICAKPiAgdHlwZWRl ZiBzdHJ1Y3QgVnVWaXJ0cUluZmxpZ2h0RGVzYyB7Cj4gZGlmZiAtLWdpdCBhL2h3L202OGsvYm9v dGluZm8uaCBiL2h3L202OGsvYm9vdGluZm8uaAo+IGluZGV4IDVmOGRlZDI2ODYuLmM5NTQyNzBh YWQgMTAwNjQ0Cj4gLS0tIGEvaHcvbTY4ay9ib290aW5mby5oCj4gKysrIGIvaHcvbTY4ay9ib290 aW5mby5oCj4gQEAgLTE0LDcgKzE0LDcgQEAKPiAgc3RydWN0IGJpX3JlY29yZCB7Cj4gICAgICB1 aW50MTZfdCB0YWc7ICAgICAgICAvKiB0YWcgSUQgKi8KPiAgICAgIHVpbnQxNl90IHNpemU7ICAg ICAgIC8qIHNpemUgb2YgcmVjb3JkICovCj4gLSAgICB1aW50MzJfdCBkYXRhWzBdOyAgICAvKiBk YXRhICovCj4gKyAgICB1aW50MzJfdCBkYXRhW107ICAgICAvKiBkYXRhICovCj4gIH07Cj4gIAo+ ICAvKiBtYWNoaW5lIGluZGVwZW5kZW50IHRhZ3MgKi8KPiBkaWZmIC0tZ2l0IGEvaHcvc2NzaS9z cnAuaCBiL2h3L3Njc2kvc3JwLmgKPiBpbmRleCBkMjdmMzFkMmQ1Li41NGM5NTRiYWRkIDEwMDY0 NAo+IC0tLSBhL2h3L3Njc2kvc3JwLmgKPiArKysgYi9ody9zY3NpL3NycC5oCj4gQEAgLTExMiw3 ICsxMTIsNyBAQCBzdHJ1Y3Qgc3JwX2RpcmVjdF9idWYgewo+ICBzdHJ1Y3Qgc3JwX2luZGlyZWN0 X2J1ZiB7Cj4gICAgICBzdHJ1Y3Qgc3JwX2RpcmVjdF9idWYgICAgdGFibGVfZGVzYzsKPiAgICAg IHVpbnQzMl90ICAgICAgICAgICAgICAgICBsZW47Cj4gLSAgICBzdHJ1Y3Qgc3JwX2RpcmVjdF9i dWYgICAgZGVzY19saXN0WzBdOwo+ICsgICAgc3RydWN0IHNycF9kaXJlY3RfYnVmICAgIGRlc2Nf bGlzdFtdOwo+ICB9IFFFTVVfUEFDS0VEOwo+ICAKPiAgZW51bSB7Cj4gQEAgLTIxMSw3ICsyMTEs NyBAQCBzdHJ1Y3Qgc3JwX2NtZCB7Cj4gICAgICB1aW50OF90ICAgIHJlc2VydmVkNDsKPiAgICAg IHVpbnQ4X3QgICAgYWRkX2NkYl9sZW47Cj4gICAgICB1aW50OF90ICAgIGNkYlsxNl07Cj4gLSAg ICB1aW50OF90ICAgIGFkZF9kYXRhWzBdOwo+ICsgICAgdWludDhfdCAgICBhZGRfZGF0YVtdOwo+ ICB9IFFFTVVfUEFDS0VEOwo+ICAKPiAgZW51bSB7Cj4gQEAgLTI0MSw3ICsyNDEsNyBAQCBzdHJ1 Y3Qgc3JwX3JzcCB7Cj4gICAgICB1aW50MzJfdCAgIGRhdGFfaW5fcmVzX2NudDsKPiAgICAgIHVp bnQzMl90ICAgc2Vuc2VfZGF0YV9sZW47Cj4gICAgICB1aW50MzJfdCAgIHJlc3BfZGF0YV9sZW47 Cj4gLSAgICB1aW50OF90ICAgIGRhdGFbMF07Cj4gKyAgICB1aW50OF90ICAgIGRhdGFbXTsKPiAg fSBRRU1VX1BBQ0tFRDsKPiAgCj4gICNlbmRpZiAvKiBTQ1NJX1NSUF9IICovCj4gZGlmZiAtLWdp dCBhL2h3L3hlbi94ZW5fcHQuaCBiL2h3L3hlbi94ZW5fcHQuaAo+IGluZGV4IDkxNjdiYmFmNmQu LjE3OTc3NWRiN2IgMTAwNjQ0Cj4gLS0tIGEvaHcveGVuL3hlbl9wdC5oCj4gKysrIGIvaHcveGVu L3hlbl9wdC5oCj4gQEAgLTIwMyw3ICsyMDMsNyBAQCB0eXBlZGVmIHN0cnVjdCBYZW5QVE1TSVgg ewo+ICAgICAgdWludDY0X3QgbW1pb19iYXNlX2FkZHI7Cj4gICAgICBNZW1vcnlSZWdpb24gbW1p bzsKPiAgICAgIHZvaWQgKnBoeXNfaW9tZW1fYmFzZTsKPiAtICAgIFhlblBUTVNJWEVudHJ5IG1z aXhfZW50cnlbMF07Cj4gKyAgICBYZW5QVE1TSVhFbnRyeSBtc2l4X2VudHJ5W107Cj4gIH0gWGVu UFRNU0lYOwo+ICAKPiAgc3RydWN0IFhlblBDSVBhc3N0aHJvdWdoU3RhdGUgewo+IGRpZmYgLS1n aXQgYS9pbmNsdWRlL2h3L2FjcGkvYWNwaS1kZWZzLmggYi9pbmNsdWRlL2h3L2FjcGkvYWNwaS1k ZWZzLmgKPiBpbmRleCA1N2EzZjU4YjBjLi4xOWY3YmE3YjcwIDEwMDY0NAo+IC0tLSBhL2luY2x1 ZGUvaHcvYWNwaS9hY3BpLWRlZnMuaAo+ICsrKyBiL2luY2x1ZGUvaHcvYWNwaS9hY3BpLWRlZnMu aAo+IEBAIC01MTgsNyArNTE4LDcgQEAgc3RydWN0IEFjcGlEbWFyRGV2aWNlU2NvcGUgewo+ICAg ICAgc3RydWN0IHsKPiAgICAgICAgICB1aW50OF90IGRldmljZTsKPiAgICAgICAgICB1aW50OF90 IGZ1bmN0aW9uOwo+IC0gICAgfSBwYXRoWzBdOwo+ICsgICAgfSBwYXRoW107Cj4gIH0gUUVNVV9Q QUNLRUQ7Cj4gIHR5cGVkZWYgc3RydWN0IEFjcGlEbWFyRGV2aWNlU2NvcGUgQWNwaURtYXJEZXZp Y2VTY29wZTsKPiAgCj4gQEAgLTUzMCw3ICs1MzAsNyBAQCBzdHJ1Y3QgQWNwaURtYXJIYXJkd2Fy ZVVuaXQgewo+ICAgICAgdWludDhfdCByZXNlcnZlZDsKPiAgICAgIHVpbnQxNl90IHBjaV9zZWdt ZW50OyAgIC8qIFRoZSBQQ0kgU2VnbWVudCBhc3NvY2lhdGVkIHdpdGggdGhpcyB1bml0ICovCj4g ICAgICB1aW50NjRfdCBhZGRyZXNzOyAgIC8qIEJhc2UgYWRkcmVzcyBvZiByZW1hcHBpbmcgaGFy ZHdhcmUgcmVnaXN0ZXItc2V0ICovCj4gLSAgICBBY3BpRG1hckRldmljZVNjb3BlIHNjb3BlWzBd Owo+ICsgICAgQWNwaURtYXJEZXZpY2VTY29wZSBzY29wZVtdOwo+ICB9IFFFTVVfUEFDS0VEOwo+ ICB0eXBlZGVmIHN0cnVjdCBBY3BpRG1hckhhcmR3YXJlVW5pdCBBY3BpRG1hckhhcmR3YXJlVW5p dDsKPiAgCj4gQEAgLTU0MSw3ICs1NDEsNyBAQCBzdHJ1Y3QgQWNwaURtYXJSb290UG9ydEFUUyB7 Cj4gICAgICB1aW50OF90IGZsYWdzOwo+ICAgICAgdWludDhfdCByZXNlcnZlZDsKPiAgICAgIHVp bnQxNl90IHBjaV9zZWdtZW50Owo+IC0gICAgQWNwaURtYXJEZXZpY2VTY29wZSBzY29wZVswXTsK PiArICAgIEFjcGlEbWFyRGV2aWNlU2NvcGUgc2NvcGVbXTsKPiAgfSBRRU1VX1BBQ0tFRDsKPiAg dHlwZWRlZiBzdHJ1Y3QgQWNwaURtYXJSb290UG9ydEFUUyBBY3BpRG1hclJvb3RQb3J0QVRTOwo+ ICAKPiBAQCAtNjA0LDcgKzYwNCw3IEBAIHR5cGVkZWYgc3RydWN0IEFjcGlJb3J0TWVtb3J5QWNj ZXNzIEFjcGlJb3J0TWVtb3J5QWNjZXNzOwo+ICBzdHJ1Y3QgQWNwaUlvcnRJdHNHcm91cCB7Cj4g ICAgICBBQ1BJX0lPUlRfTk9ERV9IRUFERVJfREVGCj4gICAgICB1aW50MzJfdCBpdHNfY291bnQ7 Cj4gLSAgICB1aW50MzJfdCBpZGVudGlmaWVyc1swXTsKPiArICAgIHVpbnQzMl90IGlkZW50aWZp ZXJzW107Cj4gIH0gUUVNVV9QQUNLRUQ7Cj4gIHR5cGVkZWYgc3RydWN0IEFjcGlJb3J0SXRzR3Jv dXAgQWNwaUlvcnRJdHNHcm91cDsKPiAgCj4gQEAgLTYyMSw3ICs2MjEsNyBAQCBzdHJ1Y3QgQWNw aUlvcnRTbW11MyB7Cj4gICAgICB1aW50MzJfdCBwcmlfZ3NpdjsKPiAgICAgIHVpbnQzMl90IGdl cnJfZ3NpdjsKPiAgICAgIHVpbnQzMl90IHN5bmNfZ3NpdjsKPiAtICAgIEFjcGlJb3J0SWRNYXBw aW5nIGlkX21hcHBpbmdfYXJyYXlbMF07Cj4gKyAgICBBY3BpSW9ydElkTWFwcGluZyBpZF9tYXBw aW5nX2FycmF5W107Cj4gIH0gUUVNVV9QQUNLRUQ7Cj4gIHR5cGVkZWYgc3RydWN0IEFjcGlJb3J0 U21tdTMgQWNwaUlvcnRTbW11MzsKPiAgCj4gQEAgLTYzMCw3ICs2MzAsNyBAQCBzdHJ1Y3QgQWNw aUlvcnRSQyB7Cj4gICAgICBBY3BpSW9ydE1lbW9yeUFjY2VzcyBtZW1vcnlfcHJvcGVydGllczsK PiAgICAgIHVpbnQzMl90IGF0c19hdHRyaWJ1dGU7Cj4gICAgICB1aW50MzJfdCBwY2lfc2VnbWVu dF9udW1iZXI7Cj4gLSAgICBBY3BpSW9ydElkTWFwcGluZyBpZF9tYXBwaW5nX2FycmF5WzBdOwo+ ICsgICAgQWNwaUlvcnRJZE1hcHBpbmcgaWRfbWFwcGluZ19hcnJheVtdOwo+ICB9IFFFTVVfUEFD S0VEOwo+ICB0eXBlZGVmIHN0cnVjdCBBY3BpSW9ydFJDIEFjcGlJb3J0UkM7Cj4gIAo+IGRpZmYg LS1naXQgYS9pbmNsdWRlL2h3L2FybS9zbW11LWNvbW1vbi5oIGIvaW5jbHVkZS9ody9hcm0vc21t dS1jb21tb24uaAo+IGluZGV4IDFmMzc4NDRlNWMuLmNhNGE0YjFhZDEgMTAwNjQ0Cj4gLS0tIGEv aW5jbHVkZS9ody9hcm0vc21tdS1jb21tb24uaAo+ICsrKyBiL2luY2x1ZGUvaHcvYXJtL3NtbXUt Y29tbW9uLmgKPiBAQCAtODUsNyArODUsNyBAQCB0eXBlZGVmIHN0cnVjdCBTTU1VRGV2aWNlIHsK PiAgCj4gIHR5cGVkZWYgc3RydWN0IFNNTVVQY2lCdXMgewo+ICAgICAgUENJQnVzICAgICAgICpi dXM7Cj4gLSAgICBTTU1VRGV2aWNlICAgKnBiZGV2WzBdOyAvKiBQYXJlbnQgYXJyYXkgaXMgc3Bh cnNlLCBzbyBkeW5hbWljYWxseSBhbGxvYyAqLwo+ICsgICAgU01NVURldmljZSAgICpwYmRldltd OyAvKiBQYXJlbnQgYXJyYXkgaXMgc3BhcnNlLCBzbyBkeW5hbWljYWxseSBhbGxvYyAqLwo+ICB9 IFNNTVVQY2lCdXM7Cj4gIAo+ICB0eXBlZGVmIHN0cnVjdCBTTU1VSU9UTEJLZXkgewo+IGRpZmYg LS1naXQgYS9pbmNsdWRlL2h3L2kzODYvaW50ZWxfaW9tbXUuaCBiL2luY2x1ZGUvaHcvaTM4Ni9p bnRlbF9pb21tdS5oCj4gaW5kZXggNjZiOTMxZTUyNi4uNjdhYWE2NGMxYiAxMDA2NDQKPiAtLS0g YS9pbmNsdWRlL2h3L2kzODYvaW50ZWxfaW9tbXUuaAo+ICsrKyBiL2luY2x1ZGUvaHcvaTM4Ni9p bnRlbF9pb21tdS5oCj4gQEAgLTExOCw3ICsxMTgsOCBAQCBzdHJ1Y3QgVlREQWRkcmVzc1NwYWNl IHsKPiAgCj4gIHN0cnVjdCBWVERCdXMgewo+ICAgICAgUENJQnVzKiBidXM7CQkvKiBBIHJlZmVy ZW5jZSB0byB0aGUgYnVzIHRvIHByb3ZpZGUgdHJhbnNsYXRpb24gZm9yICovCj4gLSAgICBWVERB ZGRyZXNzU3BhY2UgKmRldl9hc1swXTsJLyogQSB0YWJsZSBvZiBWVERBZGRyZXNzU3BhY2Ugb2Jq ZWN0cyBpbmRleGVkIGJ5IGRldmZuICovCj4gKyAgICAvKiBBIHRhYmxlIG9mIFZUREFkZHJlc3NT cGFjZSBvYmplY3RzIGluZGV4ZWQgYnkgZGV2Zm4gKi8KPiArICAgIFZUREFkZHJlc3NTcGFjZSAq ZGV2X2FzW107Cj4gIH07Cj4gIAo+ICBzdHJ1Y3QgVlRESU9UTEJFbnRyeSB7Cj4gZGlmZiAtLWdp dCBhL2luY2x1ZGUvaHcvdmlydGlvL3ZpcnRpby1pb21tdS5oIGIvaW5jbHVkZS9ody92aXJ0aW8v dmlydGlvLWlvbW11LmgKPiBpbmRleCA2ZjY3ZjEwMjBhLi5lNjUzMDA0ZDdjIDEwMDY0NAo+IC0t LSBhL2luY2x1ZGUvaHcvdmlydGlvL3ZpcnRpby1pb21tdS5oCj4gKysrIGIvaW5jbHVkZS9ody92 aXJ0aW8vdmlydGlvLWlvbW11LmgKPiBAQCAtNDEsNyArNDEsNyBAQCB0eXBlZGVmIHN0cnVjdCBJ T01NVURldmljZSB7Cj4gIAo+ICB0eXBlZGVmIHN0cnVjdCBJT01NVVBjaUJ1cyB7Cj4gICAgICBQ Q0lCdXMgICAgICAgKmJ1czsKPiAtICAgIElPTU1VRGV2aWNlICAqcGJkZXZbMF07IC8qIFBhcmVu dCBhcnJheSBpcyBzcGFyc2UsIHNvIGR5bmFtaWNhbGx5IGFsbG9jICovCj4gKyAgICBJT01NVURl dmljZSAgKnBiZGV2W107IC8qIFBhcmVudCBhcnJheSBpcyBzcGFyc2UsIHNvIGR5bmFtaWNhbGx5 IGFsbG9jICovCj4gIH0gSU9NTVVQY2lCdXM7Cj4gIAo+ICB0eXBlZGVmIHN0cnVjdCBWaXJ0SU9J T01NVSB7Cj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvc3lzZW11L2NyeXB0b2Rldi5oIGIvaW5jbHVk ZS9zeXNlbXUvY3J5cHRvZGV2LmgKPiBpbmRleCBhOWFmYjdlNWI1Li4zNWVhYjA2ZDBlIDEwMDY0 NAo+IC0tLSBhL2luY2x1ZGUvc3lzZW11L2NyeXB0b2Rldi5oCj4gKysrIGIvaW5jbHVkZS9zeXNl bXUvY3J5cHRvZGV2LmgKPiBAQCAtMTQzLDcgKzE0Myw3IEBAIHR5cGVkZWYgc3RydWN0IENyeXB0 b0RldkJhY2tlbmRTeW1PcEluZm8gewo+ICAgICAgdWludDhfdCAqZHN0Owo+ICAgICAgdWludDhf dCAqYWFkX2RhdGE7Cj4gICAgICB1aW50OF90ICpkaWdlc3RfcmVzdWx0Owo+IC0gICAgdWludDhf dCBkYXRhWzBdOwo+ICsgICAgdWludDhfdCBkYXRhW107Cj4gIH0gQ3J5cHRvRGV2QmFja2VuZFN5 bU9wSW5mbzsKPiAgCj4gIHR5cGVkZWYgc3RydWN0IENyeXB0b0RldkJhY2tlbmRDbGFzcyB7Cj4g ZGlmZiAtLWdpdCBhL2luY2x1ZGUvdGNnL3RjZy5oIGIvaW5jbHVkZS90Y2cvdGNnLmgKPiBpbmRl eCA1NGU1NDQ2ODgwLi5jNDhiZDc2YjBhIDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvdGNnL3RjZy5o Cj4gKysrIGIvaW5jbHVkZS90Y2cvdGNnLmgKPiBAQCAtMjY3LDcgKzI2Nyw3IEBAIHN0cnVjdCBU Q0dMYWJlbCB7Cj4gIHR5cGVkZWYgc3RydWN0IFRDR1Bvb2wgewo+ICAgICAgc3RydWN0IFRDR1Bv b2wgKm5leHQ7Cj4gICAgICBpbnQgc2l6ZTsKPiAtICAgIHVpbnQ4X3QgZGF0YVswXSBfX2F0dHJp YnV0ZV9fICgoYWxpZ25lZCkpOwo+ICsgICAgdWludDhfdCBkYXRhW10gX19hdHRyaWJ1dGVfXyAo KGFsaWduZWQpKTsKPiAgfSBUQ0dQb29sOwo+ICAKPiAgI2RlZmluZSBUQ0dfUE9PTF9DSFVOS19T SVpFIDMyNzY4Cj4gZGlmZiAtLWdpdCBhL3BjLWJpb3MvczM5MC1jY3cvYm9vdG1hcC5oIGIvcGMt Ymlvcy9zMzkwLWNjdy9ib290bWFwLmgKPiBpbmRleCA5NGY1M2E1ZjFlLi4xMmEwMTY2YWFlIDEw MDY0NAo+IC0tLSBhL3BjLWJpb3MvczM5MC1jY3cvYm9vdG1hcC5oCj4gKysrIGIvcGMtYmlvcy9z MzkwLWNjdy9ib290bWFwLmgKPiBAQCAtMTM2LDcgKzEzNiw3IEBAIHR5cGVkZWYgc3RydWN0IEJv b3RNYXBTY3JpcHRIZWFkZXIgewo+ICAKPiAgdHlwZWRlZiBzdHJ1Y3QgQm9vdE1hcFNjcmlwdCB7 Cj4gICAgICBCb290TWFwU2NyaXB0SGVhZGVyIGhlYWRlcjsKPiAtICAgIEJvb3RNYXBTY3JpcHRF bnRyeSAgZW50cnlbMF07Cj4gKyAgICBCb290TWFwU2NyaXB0RW50cnkgIGVudHJ5W107Cj4gIH0g X19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpIEJvb3RNYXBTY3JpcHQ7Cj4gIAo+ICAvKgo+IGRpZmYg LS1naXQgYS9wYy1iaW9zL3MzOTAtY2N3L3NjbHAuaCBiL3BjLWJpb3MvczM5MC1jY3cvc2NscC5o Cj4gaW5kZXggODQ1MDE2MWJhNy4uNjRiNTNjYWQyOSAxMDA2NDQKPiAtLS0gYS9wYy1iaW9zL3Mz OTAtY2N3L3NjbHAuaAo+ICsrKyBiL3BjLWJpb3MvczM5MC1jY3cvc2NscC5oCj4gQEAgLTk1LDcg Kzk1LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgRXZlbnRCdWZmZXJIZWFkZXIgewo+ICB0eXBlZGVmIHN0 cnVjdCBXcml0ZUV2ZW50RGF0YSB7Cj4gICAgICBTQ0NCSGVhZGVyIGg7Cj4gICAgICBFdmVudEJ1 ZmZlckhlYWRlciBlYmg7Cj4gLSAgICBjaGFyIGRhdGFbMF07Cj4gKyAgICBjaGFyIGRhdGFbXTsK PiAgfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKSBXcml0ZUV2ZW50RGF0YTsKPiAgCj4gIHR5cGVk ZWYgc3RydWN0IFJlYWRFdmVudERhdGEgewo+IGRpZmYgLS1naXQgYS90ZXN0cy9xdGVzdC9saWJx b3MvYWhjaS5oIGIvdGVzdHMvcXRlc3QvbGlicW9zL2FoY2kuaAo+IGluZGV4IGYwNWIzZTVmY2Uu LjQ0YWIxMTA0YjUgMTAwNjQ0Cj4gLS0tIGEvdGVzdHMvcXRlc3QvbGlicW9zL2FoY2kuaAo+ICsr KyBiL3Rlc3RzL3F0ZXN0L2xpYnFvcy9haGNpLmgKPiBAQCAtMzUxLDcgKzM1MSw3IEBAIHR5cGVk ZWYgc3RydWN0IEFIQ0lRU3RhdGUgewo+ICB0eXBlZGVmIHN0cnVjdCBGSVMgewo+ICAgICAgdWlu dDhfdCBmaXNfdHlwZTsKPiAgICAgIHVpbnQ4X3QgZmxhZ3M7Cj4gLSAgICBjaGFyIGRhdGFbMF07 Cj4gKyAgICBjaGFyIGRhdGFbXTsKPiAgfSBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fKSkgRklT Owo+ICAKPiAgLyoqCj4gZGlmZiAtLWdpdCBhL2Jsb2NrL2xpbnV4LWFpby5jIGIvYmxvY2svbGlu dXgtYWlvLmMKPiBpbmRleCA5MTIwNGEyNWEyLi4zYzA1MjdjMmJmIDEwMDY0NAo+IC0tLSBhL2Js b2NrL2xpbnV4LWFpby5jCj4gKysrIGIvYmxvY2svbGludXgtYWlvLmMKPiBAQCAtMTIxLDcgKzEy MSw3IEBAIHN0cnVjdCBhaW9fcmluZyB7Cj4gICAgICB1bnNpZ25lZCAgICBpbmNvbXBhdF9mZWF0 dXJlczsKPiAgICAgIHVuc2lnbmVkICAgIGhlYWRlcl9sZW5ndGg7ICAvKiBzaXplIG9mIGFpb19y aW5nICovCj4gIAo+IC0gICAgc3RydWN0IGlvX2V2ZW50IGlvX2V2ZW50c1swXTsKPiArICAgIHN0 cnVjdCBpb19ldmVudCBpb19ldmVudHNbXTsKPiAgfTsKPiAgCj4gIC8qKgo+IGRpZmYgLS1naXQg YS9ody9hY3BpL252ZGltbS5jIGIvaHcvYWNwaS9udmRpbW0uYwo+IGluZGV4IDUyMTlkZDBlMmUu LmViNmEzN2IxNGUgMTAwNjQ0Cj4gLS0tIGEvaHcvYWNwaS9udmRpbW0uYwo+ICsrKyBiL2h3L2Fj cGkvbnZkaW1tLmMKPiBAQCAtNDg1LDcgKzQ4NSw3IEBAIHN0cnVjdCBOdmRpbW1GdW5jR2V0TGFi ZWxEYXRhT3V0IHsKPiAgICAgIC8qIHRoZSBzaXplIG9mIGJ1ZmZlciBmaWxsZWQgYnkgUUVNVS4g Ki8KPiAgICAgIHVpbnQzMl90IGxlbjsKPiAgICAgIHVpbnQzMl90IGZ1bmNfcmV0X3N0YXR1czsg LyogcmV0dXJuIHN0YXR1cyBjb2RlLiAqLwo+IC0gICAgdWludDhfdCBvdXRfYnVmWzBdOyAvKiB0 aGUgZGF0YSBnb3QgdmlhIEdldCBOYW1lc2FwY2UgTGFiZWwgZnVuY3Rpb24uICovCj4gKyAgICB1 aW50OF90IG91dF9idWZbXTsgLyogdGhlIGRhdGEgZ290IHZpYSBHZXQgTmFtZXNhcGNlIExhYmVs IGZ1bmN0aW9uLiAqLwo+ICB9IFFFTVVfUEFDS0VEOwo+ICB0eXBlZGVmIHN0cnVjdCBOdmRpbW1G dW5jR2V0TGFiZWxEYXRhT3V0IE52ZGltbUZ1bmNHZXRMYWJlbERhdGFPdXQ7Cj4gIFFFTVVfQlVJ TERfQlVHX09OKHNpemVvZihOdmRpbW1GdW5jR2V0TGFiZWxEYXRhT3V0KSA+IE5WRElNTV9EU01f TUVNT1JZX1NJWkUpOwo+IEBAIC00OTMsNyArNDkzLDcgQEAgUUVNVV9CVUlMRF9CVUdfT04oc2l6 ZW9mKE52ZGltbUZ1bmNHZXRMYWJlbERhdGFPdXQpID4gTlZESU1NX0RTTV9NRU1PUllfU0laRSk7 Cj4gIHN0cnVjdCBOdmRpbW1GdW5jU2V0TGFiZWxEYXRhSW4gewo+ICAgICAgdWludDMyX3Qgb2Zm c2V0OyAvKiB0aGUgb2Zmc2V0IGluIHRoZSBuYW1lc3BhY2UgbGFiZWwgZGF0YSBhcmVhLiAqLwo+ ICAgICAgdWludDMyX3QgbGVuZ3RoOyAvKiB0aGUgc2l6ZSBvZiBkYXRhIGlzIHRvIGJlIHdyaXR0 ZW4gdmlhIHRoZSBmdW5jdGlvbi4gKi8KPiAtICAgIHVpbnQ4X3QgaW5fYnVmWzBdOyAvKiB0aGUg ZGF0YSB3cml0dGVuIHRvIGxhYmVsIGRhdGEgYXJlYS4gKi8KPiArICAgIHVpbnQ4X3QgaW5fYnVm W107IC8qIHRoZSBkYXRhIHdyaXR0ZW4gdG8gbGFiZWwgZGF0YSBhcmVhLiAqLwo+ICB9IFFFTVVf UEFDS0VEOwo+ICB0eXBlZGVmIHN0cnVjdCBOdmRpbW1GdW5jU2V0TGFiZWxEYXRhSW4gTnZkaW1t RnVuY1NldExhYmVsRGF0YUluOwo+ICBRRU1VX0JVSUxEX0JVR19PTihzaXplb2YoTnZkaW1tRnVu Y1NldExhYmVsRGF0YUluKSArCj4gQEAgLTUxMCw3ICs1MTAsNyBAQCBzdHJ1Y3QgTnZkaW1tRnVu Y1JlYWRGSVRPdXQgewo+ICAgICAgLyogdGhlIHNpemUgb2YgYnVmZmVyIGZpbGxlZCBieSBRRU1V LiAqLwo+ICAgICAgdWludDMyX3QgbGVuOwo+ICAgICAgdWludDMyX3QgZnVuY19yZXRfc3RhdHVz OyAvKiByZXR1cm4gc3RhdHVzIGNvZGUuICovCj4gLSAgICB1aW50OF90IGZpdFswXTsgLyogdGhl IEZJVCBkYXRhLiAqLwo+ICsgICAgdWludDhfdCBmaXRbXTsgLyogdGhlIEZJVCBkYXRhLiAqLwo+ ICB9IFFFTVVfUEFDS0VEOwo+ICB0eXBlZGVmIHN0cnVjdCBOdmRpbW1GdW5jUmVhZEZJVE91dCBO dmRpbW1GdW5jUmVhZEZJVE91dDsKPiAgUUVNVV9CVUlMRF9CVUdfT04oc2l6ZW9mKE52ZGltbUZ1 bmNSZWFkRklUT3V0KSA+IE5WRElNTV9EU01fTUVNT1JZX1NJWkUpOwo+IGRpZmYgLS1naXQgYS9o dy9kbWEvc29jX2RtYS5jIGIvaHcvZG1hL3NvY19kbWEuYwo+IGluZGV4IGMzZTQxNTgxYjYuLjNh NDMwMDU3ZjUgMTAwNjQ0Cj4gLS0tIGEvaHcvZG1hL3NvY19kbWEuYwo+ICsrKyBiL2h3L2RtYS9z b2NfZG1hLmMKPiBAQCAtODAsNyArODAsNyBAQCBzdHJ1Y3QgZG1hX3Mgewo+ICAgICAgfSAqbWVt bWFwOwo+ICAgICAgaW50IG1lbW1hcF9zaXplOwo+ICAKPiAtICAgIHN0cnVjdCBzb2NfZG1hX2No X3MgY2hbMF07Cj4gKyAgICBzdHJ1Y3Qgc29jX2RtYV9jaF9zIGNoW107Cj4gIH07Cj4gIAo+ICBz dGF0aWMgdm9pZCBzb2NfZG1hX2NoX3NjaGVkdWxlKHN0cnVjdCBzb2NfZG1hX2NoX3MgKmNoLCBp bnQgZGVsYXlfYnl0ZXMpCj4gZGlmZiAtLWdpdCBhL2h3L2kzODYveDg2LmMgYi9ody9pMzg2L3g4 Ni5jCj4gaW5kZXggN2YzOGU2YmE4Yi4uMDgyNDY1MjNmMiAxMDA2NDQKPiAtLS0gYS9ody9pMzg2 L3g4Ni5jCj4gKysrIGIvaHcvaTM4Ni94ODYuYwo+IEBAIC0zMjgsNyArMzI4LDcgQEAgc3RydWN0 IHNldHVwX2RhdGEgewo+ICAgICAgdWludDY0X3QgbmV4dDsKPiAgICAgIHVpbnQzMl90IHR5cGU7 Cj4gICAgICB1aW50MzJfdCBsZW47Cj4gLSAgICB1aW50OF90IGRhdGFbMF07Cj4gKyAgICB1aW50 OF90IGRhdGFbXTsKPiAgfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKPiAgCj4gIAo+IGRpZmYg LS1naXQgYS9ody9taXNjL29tYXBfbDQuYyBiL2h3L21pc2Mvb21hcF9sNC5jCj4gaW5kZXggNjFi NmRmNTY0YS4uNTRhZWFlY2Q2OSAxMDA2NDQKPiAtLS0gYS9ody9taXNjL29tYXBfbDQuYwo+ICsr KyBiL2h3L21pc2Mvb21hcF9sNC5jCj4gQEAgLTI0LDcgKzI0LDcgQEAgc3RydWN0IG9tYXBfbDRf cyB7Cj4gICAgICBNZW1vcnlSZWdpb24gKmFkZHJlc3Nfc3BhY2U7Cj4gICAgICBod2FkZHIgYmFz ZTsKPiAgICAgIGludCB0YV9udW07Cj4gLSAgICBzdHJ1Y3Qgb21hcF90YXJnZXRfYWdlbnRfcyB0 YVswXTsKPiArICAgIHN0cnVjdCBvbWFwX3RhcmdldF9hZ2VudF9zIHRhW107Cj4gIH07Cj4gIAo+ ICBzdHJ1Y3Qgb21hcF9sNF9zICpvbWFwX2w0X2luaXQoTWVtb3J5UmVnaW9uICphZGRyZXNzX3Nw YWNlLAo+IGRpZmYgLS1naXQgYS9ody9udnJhbS9lZXByb205M3h4LmMgYi9ody9udnJhbS9lZXBy b205M3h4LmMKPiBpbmRleCAwN2YwOTU0OWVkLi5jYTZmNTkxYzg0IDEwMDY0NAo+IC0tLSBhL2h3 L252cmFtL2VlcHJvbTkzeHguYwo+ICsrKyBiL2h3L252cmFtL2VlcHJvbTkzeHguYwo+IEBAIC04 Niw3ICs4Niw3IEBAIHN0cnVjdCBfZWVwcm9tX3Qgewo+ICAgICAgdWludDhfdCAgYWRkcmJpdHM7 Cj4gICAgICB1aW50MTZfdCBzaXplOwo+ICAgICAgdWludDE2X3QgZGF0YTsKPiAtICAgIHVpbnQx Nl90IGNvbnRlbnRzWzBdOwo+ICsgICAgdWludDE2X3QgY29udGVudHNbXTsKPiAgfTsKPiAgCj4g IC8qIENvZGUgZm9yIHNhdmluZyBhbmQgcmVzdG9yaW5nIG9mIEVFUFJPTSBzdGF0ZS4gKi8KPiBk aWZmIC0tZ2l0IGEvaHcvcmRtYS92bXcvcHZyZG1hX3FwX29wcy5jIGIvaHcvcmRtYS92bXcvcHZy ZG1hX3FwX29wcy5jCj4gaW5kZXggYmQ2ZGI4NThkZS4uODA1MDI4N2E2YyAxMDA2NDQKPiAtLS0g YS9ody9yZG1hL3Ztdy9wdnJkbWFfcXBfb3BzLmMKPiArKysgYi9ody9yZG1hL3Ztdy9wdnJkbWFf cXBfb3BzLmMKPiBAQCAtMzQsMTMgKzM0LDEzIEBAIHR5cGVkZWYgc3RydWN0IENvbXBIYW5kbGVy Q3R4IHsKPiAgLyogU2VuZCBRdWV1ZSBXUUUgKi8KPiAgdHlwZWRlZiBzdHJ1Y3QgUHZyZG1hU3FX cWUgewo+ICAgICAgc3RydWN0IHB2cmRtYV9zcV93cWVfaGRyIGhkcjsKPiAtICAgIHN0cnVjdCBw dnJkbWFfc2dlIHNnZVswXTsKPiArICAgIHN0cnVjdCBwdnJkbWFfc2dlIHNnZVtdOwo+ICB9IFB2 cmRtYVNxV3FlOwo+ICAKPiAgLyogUmVjdiBRdWV1ZSBXUUUgKi8KPiAgdHlwZWRlZiBzdHJ1Y3Qg UHZyZG1hUnFXcWUgewo+ICAgICAgc3RydWN0IHB2cmRtYV9ycV93cWVfaGRyIGhkcjsKPiAtICAg IHN0cnVjdCBwdnJkbWFfc2dlIHNnZVswXTsKPiArICAgIHN0cnVjdCBwdnJkbWFfc2dlIHNnZVtd Owo+ICB9IFB2cmRtYVJxV3FlOwo+ICAKPiAgLyoKPiBkaWZmIC0tZ2l0IGEvaHcvdXNiL2Rldi1u ZXR3b3JrLmMgYi9ody91c2IvZGV2LW5ldHdvcmsuYwo+IGluZGV4IDlhNzhhZDkyOGIuLjYyMTA0 Mjc1NDQgMTAwNjQ0Cj4gLS0tIGEvaHcvdXNiL2Rldi1uZXR3b3JrLmMKPiArKysgYi9ody91c2Iv ZGV2LW5ldHdvcmsuYwo+IEBAIC02MjYsNyArNjI2LDcgQEAgc3RhdGljIGNvbnN0IHVpbnQzMl90 IG9pZF9zdXBwb3J0ZWRfbGlzdFtdID0KPiAgc3RydWN0IHJuZGlzX3Jlc3BvbnNlIHsKPiAgICAg IFFUQUlMUV9FTlRSWShybmRpc19yZXNwb25zZSkgZW50cmllczsKPiAgICAgIHVpbnQzMl90IGxl bmd0aDsKPiAtICAgIHVpbnQ4X3QgYnVmWzBdOwo+ICsgICAgdWludDhfdCBidWZbXTsKPiAgfTsK PiAgCj4gIHR5cGVkZWYgc3RydWN0IFVTQk5ldFN0YXRlIHsKPiBkaWZmIC0tZ2l0IGEvaHcvdXNi L2Rldi1zbWFydGNhcmQtcmVhZGVyLmMgYi9ody91c2IvZGV2LXNtYXJ0Y2FyZC1yZWFkZXIuYwo+ IGluZGV4IDAyNjkzYTI2YWQuLmVmNzI3MzhjZWQgMTAwNjQ0Cj4gLS0tIGEvaHcvdXNiL2Rldi1z bWFydGNhcmQtcmVhZGVyLmMKPiArKysgYi9ody91c2IvZGV2LXNtYXJ0Y2FyZC1yZWFkZXIuYwo+ IEBAIC0yMjcsNyArMjI3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUUVNVV9QQUNLRUQgQ0NJRF9QYXJh bWV0ZXIgewo+ICB0eXBlZGVmIHN0cnVjdCBRRU1VX1BBQ0tFRCBDQ0lEX0RhdGFCbG9jayB7Cj4g ICAgICBDQ0lEX0JVTEtfSU4gYjsKPiAgICAgIHVpbnQ4X3QgICAgICBiQ2hhaW5QYXJhbWV0ZXI7 Cj4gLSAgICB1aW50OF90ICAgICAgYWJEYXRhWzBdOwo+ICsgICAgdWludDhfdCAgICAgIGFiRGF0 YVtdOwo+ICB9IENDSURfRGF0YUJsb2NrOwo+ICAKPiAgLyogNi4xLjQgUENfdG9fUkRSX1hmckJs b2NrICovCj4gQEAgLTIzNSw3ICsyMzUsNyBAQCB0eXBlZGVmIHN0cnVjdCBRRU1VX1BBQ0tFRCBD Q0lEX1hmZXJCbG9jayB7Cj4gICAgICBDQ0lEX0hlYWRlciAgaGRyOwo+ICAgICAgdWludDhfdCAg ICAgIGJCV0k7IC8qIEJsb2NrIFdhaXRpbmcgVGltZW91dCAqLwo+ICAgICAgdWludDE2X3QgICAg IHdMZXZlbFBhcmFtZXRlcjsgLyogWFhYIGN1cnJlbnRseSB1bnVzZWQgKi8KPiAtICAgIHVpbnQ4 X3QgICAgICBhYkRhdGFbMF07Cj4gKyAgICB1aW50OF90ICAgICAgYWJEYXRhW107Cj4gIH0gQ0NJ RF9YZmVyQmxvY2s7Cj4gIAo+ICB0eXBlZGVmIHN0cnVjdCBRRU1VX1BBQ0tFRCBDQ0lEX0ljY1Bv d2VyT24gewo+IGRpZmYgLS1naXQgYS9ody92aXJ0aW8vdmlydGlvLmMgYi9ody92aXJ0aW8vdmly dGlvLmMKPiBpbmRleCBiMmQ0MTVlNWRkLi5iNmM4ZWY1YmMwIDEwMDY0NAo+IC0tLSBhL2h3L3Zp cnRpby92aXJ0aW8uYwo+ICsrKyBiL2h3L3ZpcnRpby92aXJ0aW8uYwo+IEBAIC01NCw3ICs1NCw3 IEBAIHR5cGVkZWYgc3RydWN0IFZSaW5nQXZhaWwKPiAgewo+ICAgICAgdWludDE2X3QgZmxhZ3M7 Cj4gICAgICB1aW50MTZfdCBpZHg7Cj4gLSAgICB1aW50MTZfdCByaW5nWzBdOwo+ICsgICAgdWlu dDE2X3QgcmluZ1tdOwo+ICB9IFZSaW5nQXZhaWw7Cj4gIAo+ICB0eXBlZGVmIHN0cnVjdCBWUmlu Z1VzZWRFbGVtCj4gQEAgLTY3LDcgKzY3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgVlJpbmdVc2VkCj4g IHsKPiAgICAgIHVpbnQxNl90IGZsYWdzOwo+ICAgICAgdWludDE2X3QgaWR4Owo+IC0gICAgVlJp bmdVc2VkRWxlbSByaW5nWzBdOwo+ICsgICAgVlJpbmdVc2VkRWxlbSByaW5nW107Cj4gIH0gVlJp bmdVc2VkOwo+ICAKPiAgdHlwZWRlZiBzdHJ1Y3QgVlJpbmdNZW1vcnlSZWdpb25DYWNoZXMgewo+ IGRpZmYgLS1naXQgYS9uZXQvcXVldWUuYyBiL25ldC9xdWV1ZS5jCj4gaW5kZXggNjEyNzZjYTRi ZS4uMDE2NDcyN2UzOSAxMDA2NDQKPiAtLS0gYS9uZXQvcXVldWUuYwo+ICsrKyBiL25ldC9xdWV1 ZS5jCj4gQEAgLTQ2LDcgKzQ2LDcgQEAgc3RydWN0IE5ldFBhY2tldCB7Cj4gICAgICB1bnNpZ25l ZCBmbGFnczsKPiAgICAgIGludCBzaXplOwo+ICAgICAgTmV0UGFja2V0U2VudCAqc2VudF9jYjsK PiAtICAgIHVpbnQ4X3QgZGF0YVswXTsKPiArICAgIHVpbnQ4X3QgZGF0YVtdOwo+ICB9Owo+ICAK PiAgc3RydWN0IE5ldFF1ZXVlIHsKPiAtLSAKPiAyLjIxLjEKCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1k ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21h aWxtYW4vbGlzdGluZm8veGVuLWRldmVs From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-11.6 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MENTIONS_GIT_HOSTING,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A744FC10F28 for ; Sun, 8 Mar 2020 07:56:33 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 6257220663 for ; Sun, 8 Mar 2020 07:56:33 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="E2NQq5QT" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6257220663 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:55704 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jAqnY-0000PV-Gt for qemu-devel@archiver.kernel.org; Sun, 08 Mar 2020 03:56:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46164) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jAqmq-0008Fc-Uj for qemu-devel@nongnu.org; Sun, 08 Mar 2020 03:55:51 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1jAqmn-00007w-Rr for qemu-devel@nongnu.org; Sun, 08 Mar 2020 03:55:48 -0400 Received: from us-smtp-delivery-1.mimecast.com ([207.211.31.120]:23555 helo=us-smtp-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1jAqmn-0008VR-K5 for qemu-devel@nongnu.org; Sun, 08 Mar 2020 03:55:45 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1583654144; 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=bk1eJFHWPNYwXgmgIgrCTgUnIxpdqLjzS3WY9m+6e2s=; b=E2NQq5QTtknLcMJDAsmnZatnN2qJ8gy9pJ7SPY3+23LTRcSrGcu2qxBJ8vLQt0MtMq8YHi NKIwyuCvjerCU169H+80gwaqBXG3VJDyFWKJqk0sa5zQBBv4DZ2eIRRaoCFoKLHA1knjgL j0fq2lMxpXpCVkQCYzmn3tnXFOpenaw= Received: from mail-qk1-f198.google.com (mail-qk1-f198.google.com [209.85.222.198]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-249-VU4ESeJjMJ2EY9n5hOfsow-1; Sun, 08 Mar 2020 03:55:43 -0400 X-MC-Unique: VU4ESeJjMJ2EY9n5hOfsow-1 Received: by mail-qk1-f198.google.com with SMTP id m6so1609229qkm.2 for ; Sat, 07 Mar 2020 23:55:43 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to; bh=dcVUm4B4vO68jLIPB1CjCTQUpwYAA3Uz1MtdhFz4cpA=; b=sw8si567NnV475CXlsrVFaTnCr7vKAyw3JKSPIqX47Wzl2lqfx2Te716Tc+lKJvqDh Y5+3eMkL7m7DpH2eCG5KSt3Alc0il/7z4+XU8ekAdivZx3Ex1L+mqkztweeoklEWLNEW T0lyKix5+pP8mMxGJ7IhqMunFZFJiHugGqU+c6jwuZLbmNH1XUFi7BEJm8tvKd0HKZnt GNG6+sL/olCRUyieuDdyUAcjKCXKMiwci5S4tazfcul6lbwdZbNCBEciAXIaVFao+0W1 O7BCjmzrCzbLwFETHiynoU+htTyLFlI6xhydmRm+ZVpA7tRl6ixSd22yH3l2LPKfq5g3 bPmA== X-Gm-Message-State: ANhLgQ1cNrWUEkyTF6cCJvXtJHd0L1+nJApFuH1BZFFvPhHoOeZeUmUn OGVsG3gX/CbqPq7P9H/jolNwLwPc1N1UnvLBeyCvCImy1l9ZYP2c32pJ2xNwGPH9SFBHy34+iqV 1T3e97aVDnuZR9qM= X-Received: by 2002:ac8:3003:: with SMTP id f3mr3937570qte.293.1583654139382; Sat, 07 Mar 2020 23:55:39 -0800 (PST) X-Google-Smtp-Source: ADFU+vtfAw5DMrD9wr3mY99Z3Fb0dw8CfFlnU5VZhafbDirTOpvwlP+EG1w2C7UqPgVExpcGRi/0nw== X-Received: by 2002:ac8:3003:: with SMTP id f3mr3937531qte.293.1583654138862; Sat, 07 Mar 2020 23:55:38 -0800 (PST) Received: from redhat.com (bzq-79-178-2-19.red.bezeqint.net. [79.178.2.19]) by smtp.gmail.com with ESMTPSA id 6sm7644717qky.30.2020.03.07.23.55.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 07 Mar 2020 23:55:38 -0800 (PST) Date: Sun, 8 Mar 2020 03:55:28 -0400 From: "Michael S. Tsirkin" To: Philippe =?iso-8859-1?Q?Mathieu-Daud=E9?= Subject: Re: [PATCH v2 1/2] misc: Replace zero-length arrays with flexible array member (automatic) Message-ID: <20200308035457-mutt-send-email-mst@kernel.org> References: <20200304153816.23636-1-philmd@redhat.com> <20200304153816.23636-2-philmd@redhat.com> MIME-Version: 1.0 In-Reply-To: <20200304153816.23636-2-philmd@redhat.com> X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 207.211.31.120 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Fam Zheng , Peter Maydell , Paul Durrant , Jason Wang , qemu-devel@nongnu.org, Gerd Hoffmann , Stefano Stabellini , qemu-block@nongnu.org, David Hildenbrand , "Gustavo A . R . Silva" , Halil Pasic , Christian Borntraeger , "Gonglei \(Arei\)" , Anthony Perard , xen-devel@lists.xenproject.org, Thomas Huth , Eduardo Habkost , Yuval Shaia , =?iso-8859-1?Q?Marc-Andr=E9?= Lureau , qemu-s390x@nongnu.org, qemu-arm@nongnu.org, Paolo Bonzini , John Snow , Richard Henderson , Kevin Wolf , Xiao Guangrong , Eric Auger , Cornelia Huck , Laurent Vivier , Max Reitz , Igor Mammedov Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" On Wed, Mar 04, 2020 at 04:38:15PM +0100, Philippe Mathieu-Daud=E9 wrote: > Description copied from Linux kernel commit from Gustavo A. R. Silva > (see [3]): >=20 > --v-- description start --v-- >=20 > The current codebase makes use of the zero-length array language > extension to the C90 standard, but the preferred mechanism to > declare variable-length types such as these ones is a flexible > array member [1], introduced in C99: >=20 > struct foo { > int stuff; > struct boo array[]; > }; >=20 > By making use of the mechanism above, we will get a compiler > warning in case the flexible array does not occur last in the > structure, which will help us prevent some kind of undefined > behavior bugs from being unadvertenly introduced [2] to the > Linux codebase from now on. >=20 > --^-- description end --^-- >=20 > Do the similar housekeeping in the QEMU codebase (which uses > C99 since commit 7be41675f7cb). >=20 > All these instances of code were found with the help of the > following Coccinelle script: >=20 > @@ > identifier s, m, a; > type t, T; > @@ > struct s { > ... > t m; > - T a[0]; > + T a[]; > }; > @@ > identifier s, m, a; > type t, T; > @@ > struct s { > ... > t m; > - T a[0]; > + T a[]; > } QEMU_PACKED; >=20 > [1] https://gcc.gnu.org/onlinedocs/gcc/Zero-Length.html > [2] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/co= mmit/?id=3D76497732932f > [3] https://git.kernel.org/pub/scm/linux/kernel/git/gustavoars/linux.git/= commit/?id=3D17642a2fbd2c1 >=20 > Inspired-by: Gustavo A. R. Silva > Reviewed-by: David Hildenbrand > Signed-off-by: Philippe Mathieu-Daud=E9 Acked-by: Michael S. Tsirkin Reviewed-by: Michael S. Tsirkin > --- > v2: cocci script updated to not match structures of onlyi > a single flexible array member: >=20 > block/qed.h:106:14: error: flexible array member 'offsets' not allowed = in otherwise empty struct > uint64_t offsets[]; /* in bytes */ > ^ > --- > bsd-user/qemu.h | 2 +- > contrib/libvhost-user/libvhost-user.h | 2 +- > hw/m68k/bootinfo.h | 2 +- > hw/scsi/srp.h | 6 +++--- > hw/xen/xen_pt.h | 2 +- > include/hw/acpi/acpi-defs.h | 12 ++++++------ > include/hw/arm/smmu-common.h | 2 +- > include/hw/i386/intel_iommu.h | 3 ++- > include/hw/virtio/virtio-iommu.h | 2 +- > include/sysemu/cryptodev.h | 2 +- > include/tcg/tcg.h | 2 +- > pc-bios/s390-ccw/bootmap.h | 2 +- > pc-bios/s390-ccw/sclp.h | 2 +- > tests/qtest/libqos/ahci.h | 2 +- > block/linux-aio.c | 2 +- > hw/acpi/nvdimm.c | 6 +++--- > hw/dma/soc_dma.c | 2 +- > hw/i386/x86.c | 2 +- > hw/misc/omap_l4.c | 2 +- > hw/nvram/eeprom93xx.c | 2 +- > hw/rdma/vmw/pvrdma_qp_ops.c | 4 ++-- > hw/usb/dev-network.c | 2 +- > hw/usb/dev-smartcard-reader.c | 4 ++-- > hw/virtio/virtio.c | 4 ++-- > net/queue.c | 2 +- > 25 files changed, 38 insertions(+), 37 deletions(-) >=20 > diff --git a/bsd-user/qemu.h b/bsd-user/qemu.h > index 09e8aed9c7..f8bb1e5459 100644 > --- a/bsd-user/qemu.h > +++ b/bsd-user/qemu.h > @@ -95,7 +95,7 @@ typedef struct TaskState { > struct sigqueue *first_free; /* first free siginfo queue entry */ > int signal_pending; /* non zero if a signal may be pending */ > =20 > - uint8_t stack[0]; > + uint8_t stack[]; > } __attribute__((aligned(16))) TaskState; > =20 > void init_task_state(TaskState *ts); > diff --git a/contrib/libvhost-user/libvhost-user.h b/contrib/libvhost-use= r/libvhost-user.h > index 6fc8000e99..f30394fab6 100644 > --- a/contrib/libvhost-user/libvhost-user.h > +++ b/contrib/libvhost-user/libvhost-user.h > @@ -286,7 +286,7 @@ typedef struct VuVirtqInflight { > uint16_t used_idx; > =20 > /* Used to track the state of each descriptor in descriptor table */ > - VuDescStateSplit desc[0]; > + VuDescStateSplit desc[]; > } VuVirtqInflight; > =20 > typedef struct VuVirtqInflightDesc { > diff --git a/hw/m68k/bootinfo.h b/hw/m68k/bootinfo.h > index 5f8ded2686..c954270aad 100644 > --- a/hw/m68k/bootinfo.h > +++ b/hw/m68k/bootinfo.h > @@ -14,7 +14,7 @@ > struct bi_record { > uint16_t tag; /* tag ID */ > uint16_t size; /* size of record */ > - uint32_t data[0]; /* data */ > + uint32_t data[]; /* data */ > }; > =20 > /* machine independent tags */ > diff --git a/hw/scsi/srp.h b/hw/scsi/srp.h > index d27f31d2d5..54c954badd 100644 > --- a/hw/scsi/srp.h > +++ b/hw/scsi/srp.h > @@ -112,7 +112,7 @@ struct srp_direct_buf { > struct srp_indirect_buf { > struct srp_direct_buf table_desc; > uint32_t len; > - struct srp_direct_buf desc_list[0]; > + struct srp_direct_buf desc_list[]; > } QEMU_PACKED; > =20 > enum { > @@ -211,7 +211,7 @@ struct srp_cmd { > uint8_t reserved4; > uint8_t add_cdb_len; > uint8_t cdb[16]; > - uint8_t add_data[0]; > + uint8_t add_data[]; > } QEMU_PACKED; > =20 > enum { > @@ -241,7 +241,7 @@ struct srp_rsp { > uint32_t data_in_res_cnt; > uint32_t sense_data_len; > uint32_t resp_data_len; > - uint8_t data[0]; > + uint8_t data[]; > } QEMU_PACKED; > =20 > #endif /* SCSI_SRP_H */ > diff --git a/hw/xen/xen_pt.h b/hw/xen/xen_pt.h > index 9167bbaf6d..179775db7b 100644 > --- a/hw/xen/xen_pt.h > +++ b/hw/xen/xen_pt.h > @@ -203,7 +203,7 @@ typedef struct XenPTMSIX { > uint64_t mmio_base_addr; > MemoryRegion mmio; > void *phys_iomem_base; > - XenPTMSIXEntry msix_entry[0]; > + XenPTMSIXEntry msix_entry[]; > } XenPTMSIX; > =20 > struct XenPCIPassthroughState { > diff --git a/include/hw/acpi/acpi-defs.h b/include/hw/acpi/acpi-defs.h > index 57a3f58b0c..19f7ba7b70 100644 > --- a/include/hw/acpi/acpi-defs.h > +++ b/include/hw/acpi/acpi-defs.h > @@ -518,7 +518,7 @@ struct AcpiDmarDeviceScope { > struct { > uint8_t device; > uint8_t function; > - } path[0]; > + } path[]; > } QEMU_PACKED; > typedef struct AcpiDmarDeviceScope AcpiDmarDeviceScope; > =20 > @@ -530,7 +530,7 @@ struct AcpiDmarHardwareUnit { > uint8_t reserved; > uint16_t pci_segment; /* The PCI Segment associated with this unit= */ > uint64_t address; /* Base address of remapping hardware register-s= et */ > - AcpiDmarDeviceScope scope[0]; > + AcpiDmarDeviceScope scope[]; > } QEMU_PACKED; > typedef struct AcpiDmarHardwareUnit AcpiDmarHardwareUnit; > =20 > @@ -541,7 +541,7 @@ struct AcpiDmarRootPortATS { > uint8_t flags; > uint8_t reserved; > uint16_t pci_segment; > - AcpiDmarDeviceScope scope[0]; > + AcpiDmarDeviceScope scope[]; > } QEMU_PACKED; > typedef struct AcpiDmarRootPortATS AcpiDmarRootPortATS; > =20 > @@ -604,7 +604,7 @@ typedef struct AcpiIortMemoryAccess AcpiIortMemoryAcc= ess; > struct AcpiIortItsGroup { > ACPI_IORT_NODE_HEADER_DEF > uint32_t its_count; > - uint32_t identifiers[0]; > + uint32_t identifiers[]; > } QEMU_PACKED; > typedef struct AcpiIortItsGroup AcpiIortItsGroup; > =20 > @@ -621,7 +621,7 @@ struct AcpiIortSmmu3 { > uint32_t pri_gsiv; > uint32_t gerr_gsiv; > uint32_t sync_gsiv; > - AcpiIortIdMapping id_mapping_array[0]; > + AcpiIortIdMapping id_mapping_array[]; > } QEMU_PACKED; > typedef struct AcpiIortSmmu3 AcpiIortSmmu3; > =20 > @@ -630,7 +630,7 @@ struct AcpiIortRC { > AcpiIortMemoryAccess memory_properties; > uint32_t ats_attribute; > uint32_t pci_segment_number; > - AcpiIortIdMapping id_mapping_array[0]; > + AcpiIortIdMapping id_mapping_array[]; > } QEMU_PACKED; > typedef struct AcpiIortRC AcpiIortRC; > =20 > diff --git a/include/hw/arm/smmu-common.h b/include/hw/arm/smmu-common.h > index 1f37844e5c..ca4a4b1ad1 100644 > --- a/include/hw/arm/smmu-common.h > +++ b/include/hw/arm/smmu-common.h > @@ -85,7 +85,7 @@ typedef struct SMMUDevice { > =20 > typedef struct SMMUPciBus { > PCIBus *bus; > - SMMUDevice *pbdev[0]; /* Parent array is sparse, so dynamically al= loc */ > + SMMUDevice *pbdev[]; /* Parent array is sparse, so dynamically all= oc */ > } SMMUPciBus; > =20 > typedef struct SMMUIOTLBKey { > diff --git a/include/hw/i386/intel_iommu.h b/include/hw/i386/intel_iommu.= h > index 66b931e526..67aaa64c1b 100644 > --- a/include/hw/i386/intel_iommu.h > +++ b/include/hw/i386/intel_iommu.h > @@ -118,7 +118,8 @@ struct VTDAddressSpace { > =20 > struct VTDBus { > PCIBus* bus;=09=09/* A reference to the bus to provide translation f= or */ > - VTDAddressSpace *dev_as[0];=09/* A table of VTDAddressSpace objects = indexed by devfn */ > + /* A table of VTDAddressSpace objects indexed by devfn */ > + VTDAddressSpace *dev_as[]; > }; > =20 > struct VTDIOTLBEntry { > diff --git a/include/hw/virtio/virtio-iommu.h b/include/hw/virtio/virtio-= iommu.h > index 6f67f1020a..e653004d7c 100644 > --- a/include/hw/virtio/virtio-iommu.h > +++ b/include/hw/virtio/virtio-iommu.h > @@ -41,7 +41,7 @@ typedef struct IOMMUDevice { > =20 > typedef struct IOMMUPciBus { > PCIBus *bus; > - IOMMUDevice *pbdev[0]; /* Parent array is sparse, so dynamically al= loc */ > + IOMMUDevice *pbdev[]; /* Parent array is sparse, so dynamically all= oc */ > } IOMMUPciBus; > =20 > typedef struct VirtIOIOMMU { > diff --git a/include/sysemu/cryptodev.h b/include/sysemu/cryptodev.h > index a9afb7e5b5..35eab06d0e 100644 > --- a/include/sysemu/cryptodev.h > +++ b/include/sysemu/cryptodev.h > @@ -143,7 +143,7 @@ typedef struct CryptoDevBackendSymOpInfo { > uint8_t *dst; > uint8_t *aad_data; > uint8_t *digest_result; > - uint8_t data[0]; > + uint8_t data[]; > } CryptoDevBackendSymOpInfo; > =20 > typedef struct CryptoDevBackendClass { > diff --git a/include/tcg/tcg.h b/include/tcg/tcg.h > index 54e5446880..c48bd76b0a 100644 > --- a/include/tcg/tcg.h > +++ b/include/tcg/tcg.h > @@ -267,7 +267,7 @@ struct TCGLabel { > typedef struct TCGPool { > struct TCGPool *next; > int size; > - uint8_t data[0] __attribute__ ((aligned)); > + uint8_t data[] __attribute__ ((aligned)); > } TCGPool; > =20 > #define TCG_POOL_CHUNK_SIZE 32768 > diff --git a/pc-bios/s390-ccw/bootmap.h b/pc-bios/s390-ccw/bootmap.h > index 94f53a5f1e..12a0166aae 100644 > --- a/pc-bios/s390-ccw/bootmap.h > +++ b/pc-bios/s390-ccw/bootmap.h > @@ -136,7 +136,7 @@ typedef struct BootMapScriptHeader { > =20 > typedef struct BootMapScript { > BootMapScriptHeader header; > - BootMapScriptEntry entry[0]; > + BootMapScriptEntry entry[]; > } __attribute__ ((packed)) BootMapScript; > =20 > /* > diff --git a/pc-bios/s390-ccw/sclp.h b/pc-bios/s390-ccw/sclp.h > index 8450161ba7..64b53cad29 100644 > --- a/pc-bios/s390-ccw/sclp.h > +++ b/pc-bios/s390-ccw/sclp.h > @@ -95,7 +95,7 @@ typedef struct EventBufferHeader { > typedef struct WriteEventData { > SCCBHeader h; > EventBufferHeader ebh; > - char data[0]; > + char data[]; > } __attribute__((packed)) WriteEventData; > =20 > typedef struct ReadEventData { > diff --git a/tests/qtest/libqos/ahci.h b/tests/qtest/libqos/ahci.h > index f05b3e5fce..44ab1104b5 100644 > --- a/tests/qtest/libqos/ahci.h > +++ b/tests/qtest/libqos/ahci.h > @@ -351,7 +351,7 @@ typedef struct AHCIQState { > typedef struct FIS { > uint8_t fis_type; > uint8_t flags; > - char data[0]; > + char data[]; > } __attribute__((__packed__)) FIS; > =20 > /** > diff --git a/block/linux-aio.c b/block/linux-aio.c > index 91204a25a2..3c0527c2bf 100644 > --- a/block/linux-aio.c > +++ b/block/linux-aio.c > @@ -121,7 +121,7 @@ struct aio_ring { > unsigned incompat_features; > unsigned header_length; /* size of aio_ring */ > =20 > - struct io_event io_events[0]; > + struct io_event io_events[]; > }; > =20 > /** > diff --git a/hw/acpi/nvdimm.c b/hw/acpi/nvdimm.c > index 5219dd0e2e..eb6a37b14e 100644 > --- a/hw/acpi/nvdimm.c > +++ b/hw/acpi/nvdimm.c > @@ -485,7 +485,7 @@ struct NvdimmFuncGetLabelDataOut { > /* the size of buffer filled by QEMU. */ > uint32_t len; > uint32_t func_ret_status; /* return status code. */ > - uint8_t out_buf[0]; /* the data got via Get Namesapce Label function= . */ > + uint8_t out_buf[]; /* the data got via Get Namesapce Label function.= */ > } QEMU_PACKED; > typedef struct NvdimmFuncGetLabelDataOut NvdimmFuncGetLabelDataOut; > QEMU_BUILD_BUG_ON(sizeof(NvdimmFuncGetLabelDataOut) > NVDIMM_DSM_MEMORY_= SIZE); > @@ -493,7 +493,7 @@ QEMU_BUILD_BUG_ON(sizeof(NvdimmFuncGetLabelDataOut) >= NVDIMM_DSM_MEMORY_SIZE); > struct NvdimmFuncSetLabelDataIn { > uint32_t offset; /* the offset in the namespace label data area. */ > uint32_t length; /* the size of data is to be written via the functi= on. */ > - uint8_t in_buf[0]; /* the data written to label data area. */ > + uint8_t in_buf[]; /* the data written to label data area. */ > } QEMU_PACKED; > typedef struct NvdimmFuncSetLabelDataIn NvdimmFuncSetLabelDataIn; > QEMU_BUILD_BUG_ON(sizeof(NvdimmFuncSetLabelDataIn) + > @@ -510,7 +510,7 @@ struct NvdimmFuncReadFITOut { > /* the size of buffer filled by QEMU. */ > uint32_t len; > uint32_t func_ret_status; /* return status code. */ > - uint8_t fit[0]; /* the FIT data. */ > + uint8_t fit[]; /* the FIT data. */ > } QEMU_PACKED; > typedef struct NvdimmFuncReadFITOut NvdimmFuncReadFITOut; > QEMU_BUILD_BUG_ON(sizeof(NvdimmFuncReadFITOut) > NVDIMM_DSM_MEMORY_SIZE)= ; > diff --git a/hw/dma/soc_dma.c b/hw/dma/soc_dma.c > index c3e41581b6..3a430057f5 100644 > --- a/hw/dma/soc_dma.c > +++ b/hw/dma/soc_dma.c > @@ -80,7 +80,7 @@ struct dma_s { > } *memmap; > int memmap_size; > =20 > - struct soc_dma_ch_s ch[0]; > + struct soc_dma_ch_s ch[]; > }; > =20 > static void soc_dma_ch_schedule(struct soc_dma_ch_s *ch, int delay_bytes= ) > diff --git a/hw/i386/x86.c b/hw/i386/x86.c > index 7f38e6ba8b..08246523f2 100644 > --- a/hw/i386/x86.c > +++ b/hw/i386/x86.c > @@ -328,7 +328,7 @@ struct setup_data { > uint64_t next; > uint32_t type; > uint32_t len; > - uint8_t data[0]; > + uint8_t data[]; > } __attribute__((packed)); > =20 > =20 > diff --git a/hw/misc/omap_l4.c b/hw/misc/omap_l4.c > index 61b6df564a..54aeaecd69 100644 > --- a/hw/misc/omap_l4.c > +++ b/hw/misc/omap_l4.c > @@ -24,7 +24,7 @@ struct omap_l4_s { > MemoryRegion *address_space; > hwaddr base; > int ta_num; > - struct omap_target_agent_s ta[0]; > + struct omap_target_agent_s ta[]; > }; > =20 > struct omap_l4_s *omap_l4_init(MemoryRegion *address_space, > diff --git a/hw/nvram/eeprom93xx.c b/hw/nvram/eeprom93xx.c > index 07f09549ed..ca6f591c84 100644 > --- a/hw/nvram/eeprom93xx.c > +++ b/hw/nvram/eeprom93xx.c > @@ -86,7 +86,7 @@ struct _eeprom_t { > uint8_t addrbits; > uint16_t size; > uint16_t data; > - uint16_t contents[0]; > + uint16_t contents[]; > }; > =20 > /* Code for saving and restoring of EEPROM state. */ > diff --git a/hw/rdma/vmw/pvrdma_qp_ops.c b/hw/rdma/vmw/pvrdma_qp_ops.c > index bd6db858de..8050287a6c 100644 > --- a/hw/rdma/vmw/pvrdma_qp_ops.c > +++ b/hw/rdma/vmw/pvrdma_qp_ops.c > @@ -34,13 +34,13 @@ typedef struct CompHandlerCtx { > /* Send Queue WQE */ > typedef struct PvrdmaSqWqe { > struct pvrdma_sq_wqe_hdr hdr; > - struct pvrdma_sge sge[0]; > + struct pvrdma_sge sge[]; > } PvrdmaSqWqe; > =20 > /* Recv Queue WQE */ > typedef struct PvrdmaRqWqe { > struct pvrdma_rq_wqe_hdr hdr; > - struct pvrdma_sge sge[0]; > + struct pvrdma_sge sge[]; > } PvrdmaRqWqe; > =20 > /* > diff --git a/hw/usb/dev-network.c b/hw/usb/dev-network.c > index 9a78ad928b..6210427544 100644 > --- a/hw/usb/dev-network.c > +++ b/hw/usb/dev-network.c > @@ -626,7 +626,7 @@ static const uint32_t oid_supported_list[] =3D > struct rndis_response { > QTAILQ_ENTRY(rndis_response) entries; > uint32_t length; > - uint8_t buf[0]; > + uint8_t buf[]; > }; > =20 > typedef struct USBNetState { > diff --git a/hw/usb/dev-smartcard-reader.c b/hw/usb/dev-smartcard-reader.= c > index 02693a26ad..ef72738ced 100644 > --- a/hw/usb/dev-smartcard-reader.c > +++ b/hw/usb/dev-smartcard-reader.c > @@ -227,7 +227,7 @@ typedef struct QEMU_PACKED CCID_Parameter { > typedef struct QEMU_PACKED CCID_DataBlock { > CCID_BULK_IN b; > uint8_t bChainParameter; > - uint8_t abData[0]; > + uint8_t abData[]; > } CCID_DataBlock; > =20 > /* 6.1.4 PC_to_RDR_XfrBlock */ > @@ -235,7 +235,7 @@ typedef struct QEMU_PACKED CCID_XferBlock { > CCID_Header hdr; > uint8_t bBWI; /* Block Waiting Timeout */ > uint16_t wLevelParameter; /* XXX currently unused */ > - uint8_t abData[0]; > + uint8_t abData[]; > } CCID_XferBlock; > =20 > typedef struct QEMU_PACKED CCID_IccPowerOn { > diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c > index b2d415e5dd..b6c8ef5bc0 100644 > --- a/hw/virtio/virtio.c > +++ b/hw/virtio/virtio.c > @@ -54,7 +54,7 @@ typedef struct VRingAvail > { > uint16_t flags; > uint16_t idx; > - uint16_t ring[0]; > + uint16_t ring[]; > } VRingAvail; > =20 > typedef struct VRingUsedElem > @@ -67,7 +67,7 @@ typedef struct VRingUsed > { > uint16_t flags; > uint16_t idx; > - VRingUsedElem ring[0]; > + VRingUsedElem ring[]; > } VRingUsed; > =20 > typedef struct VRingMemoryRegionCaches { > diff --git a/net/queue.c b/net/queue.c > index 61276ca4be..0164727e39 100644 > --- a/net/queue.c > +++ b/net/queue.c > @@ -46,7 +46,7 @@ struct NetPacket { > unsigned flags; > int size; > NetPacketSent *sent_cb; > - uint8_t data[0]; > + uint8_t data[]; > }; > =20 > struct NetQueue { > --=20 > 2.21.1