On Wed, 23 Jan 2019 15:07:11 +1100 Alexey Kardashevskiy <aik@xxxxxxxxx> wrote: > Using the {0} construct as a generic initializer is perfectly fine in C, > however due to a bug in old gcc there is a warning: > > + /kisskb/src/drivers/vfio/pci/vfio_pci_nvlink2.c: warning: (near > initialization for 'cap.header') [-Wmissing-braces]: => 181:9 > > Since for whatever reason we still want to compile the modern kernel > with such an old gcc without warnings, this changes the capabilities > initialization. > > The gcc bugzilla: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53119 > > Signed-off-by: Alexey Kardashevskiy <aik@xxxxxxxxx> Added Fixes: and Reported-by: tags. Applied to for-linus branch for v5.0. Thanks, Alex > --- > drivers/vfio/pci/vfio_pci_nvlink2.c | 30 ++++++++++++++--------------- > 1 file changed, 15 insertions(+), 15 deletions(-) > > diff --git a/drivers/vfio/pci/vfio_pci_nvlink2.c b/drivers/vfio/pci/vfio_pci_nvlink2.c > index 054a2cf..91d945b 100644 > --- a/drivers/vfio/pci/vfio_pci_nvlink2.c > +++ b/drivers/vfio/pci/vfio_pci_nvlink2.c > @@ -178,11 +178,11 @@ static int vfio_pci_nvgpu_add_capability(struct vfio_pci_device *vdev, > struct vfio_pci_region *region, struct vfio_info_cap *caps) > { > struct vfio_pci_nvgpu_data *data = region->data; > - struct vfio_region_info_cap_nvlink2_ssatgt cap = { 0 }; > - > - cap.header.id = VFIO_REGION_INFO_CAP_NVLINK2_SSATGT; > - cap.header.version = 1; > - cap.tgt = data->gpu_tgt; > + struct vfio_region_info_cap_nvlink2_ssatgt cap = { > + .header.id = VFIO_REGION_INFO_CAP_NVLINK2_SSATGT, > + .header.version = 1, > + .tgt = data->gpu_tgt > + }; > > return vfio_info_add_capability(caps, &cap.header, sizeof(cap)); > } > @@ -365,18 +365,18 @@ static int vfio_pci_npu2_add_capability(struct vfio_pci_device *vdev, > struct vfio_pci_region *region, struct vfio_info_cap *caps) > { > struct vfio_pci_npu2_data *data = region->data; > - struct vfio_region_info_cap_nvlink2_ssatgt captgt = { 0 }; > - struct vfio_region_info_cap_nvlink2_lnkspd capspd = { 0 }; > + struct vfio_region_info_cap_nvlink2_ssatgt captgt = { > + .header.id = VFIO_REGION_INFO_CAP_NVLINK2_SSATGT, > + .header.version = 1, > + .tgt = data->gpu_tgt > + }; > + struct vfio_region_info_cap_nvlink2_lnkspd capspd = { > + .header.id = VFIO_REGION_INFO_CAP_NVLINK2_LNKSPD, > + .header.version = 1, > + .link_speed = data->link_speed > + }; > int ret; > > - captgt.header.id = VFIO_REGION_INFO_CAP_NVLINK2_SSATGT; > - captgt.header.version = 1; > - captgt.tgt = data->gpu_tgt; > - > - capspd.header.id = VFIO_REGION_INFO_CAP_NVLINK2_LNKSPD; > - capspd.header.version = 1; > - capspd.link_speed = data->link_speed; > - > ret = vfio_info_add_capability(caps, &captgt.header, sizeof(captgt)); > if (ret) > return ret;