qemu/hw/intc
Peter Maydell 9678b9c505 hw/intc/arm_gicv3_its: Zero initialize local DTEntry etc structs
In the GICv3 ITS model, we have a common coding pattern which has a
local C struct like "DTEntry dte", which is a C representation of an
in-guest-memory data structure, and we call a function such as
get_dte() to read guest memory and fill in the C struct.  These
functions to read in the struct sometimes have cases where they will
leave early and not fill in the whole struct (for instance get_dte()
will set "dte->valid = false" and nothing else for the case where it
is passed an entry_addr implying that there is no L2 table entry for
the DTE).  This then causes potential use of uninitialized memory
later, for instance when we call a trace event which prints all the
fields of the struct.  Sufficiently advanced compilers may produce
-Wmaybe-uninitialized warnings about this, especially if LTO is
enabled.

Rather than trying to carefully separate out these trace events into
"only the 'valid' field is initialized" and "all fields can be
printed", zero-init all the structs when we define them. None of
these structs are large (the biggest is 24 bytes) and having
consistent behaviour is less likely to be buggy.

Cc: qemu-stable@nongnu.org
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2718
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Message-id: 20241213182337.3343068-1-peter.maydell@linaro.org
2024-12-17 15:19:06 +00:00
..
allwinner-a10-pic.c hw: Use device_class_set_legacy_reset() instead of opencoding 2024-09-13 15:31:44 +01:00
apic.c hw/intc/apic: fix memory leak 2024-03-09 18:51:45 +01:00
apic_common.c hw/intc: Constify all Property 2024-12-15 12:55:11 -06:00
arm_gic.c hw/intc/arm_gic: fix spurious level triggered interrupts 2024-09-13 15:31:50 +01:00
arm_gic_common.c hw/intc: Constify all Property 2024-12-15 12:55:11 -06:00
arm_gic_kvm.c target/arm: kvm: require KVM_CAP_DEVICE_CTRL 2024-10-29 15:04:47 +00:00
arm_gicv2m.c hw/intc: Constify all Property 2024-12-15 12:55:11 -06:00
arm_gicv3.c hw/intc/arm_gicv3: Implement NMI interrupt priority 2024-04-25 10:21:05 +01:00
arm_gicv3_common.c hw/intc: Constify all Property 2024-12-15 12:55:11 -06:00
arm_gicv3_cpuif.c hw/intc/arm_gicv3_cpuif: Add cast to match the documentation 2024-10-15 11:29:45 +01:00
arm_gicv3_cpuif_common.c hw/intc/arm_gicv3: Extract gicv3_set_gicv3state from arm_gicv3_cpuif.c 2021-12-15 10:11:34 +00:00
arm_gicv3_dist.c hw/intc/arm_gicv3: Implement GICD_INMIR 2024-04-25 10:21:05 +01:00
arm_gicv3_its.c hw/intc/arm_gicv3_its: Zero initialize local DTEntry etc structs 2024-12-17 15:19:06 +00:00
arm_gicv3_its_common.c hw, target: Add ResetType argument to hold and exit phase methods 2024-04-25 10:21:06 +01:00
arm_gicv3_its_kvm.c hw/intc: Constify all Property 2024-12-15 12:55:11 -06:00
arm_gicv3_kvm.c hw, target: Add ResetType argument to hold and exit phase methods 2024-04-25 10:21:06 +01:00
arm_gicv3_redist.c hw/intc/arm_gicv3: Implement NMI interrupt priority 2024-04-25 10:21:05 +01:00
armv7m_nvic.c hw/intc: Constify all Property 2024-12-15 12:55:11 -06:00
aspeed_intc.c hw: Use device_class_set_legacy_reset() instead of opencoding 2024-09-13 15:31:44 +01:00
aspeed_vic.c hw: Use device_class_set_legacy_reset() instead of opencoding 2024-09-13 15:31:44 +01:00
bcm2835_ic.c hw: Use device_class_set_legacy_reset() instead of opencoding 2024-09-13 15:31:44 +01:00
bcm2836_control.c hw: Use device_class_set_legacy_reset() instead of opencoding 2024-09-13 15:31:44 +01:00
exynos4210_combiner.c hw/intc: Constify all Property 2024-12-15 12:55:11 -06:00
exynos4210_gic.c hw/intc: Constify all Property 2024-12-15 12:55:11 -06:00
gic_internal.h hw/intc/arm_gic: Fix deactivation of SPI lines 2024-06-21 14:01:58 +01:00
gicv3_internal.h hw/intc/arm_gicv3: Handle icv_nmiar1_read() for icc_nmiar1_read() 2024-04-25 10:21:05 +01:00
goldfish_pic.c hw/intc: Constify all Property 2024-12-15 12:55:11 -06:00
grlib_irqmp.c hw/intc: Constify all Property 2024-12-15 12:55:11 -06:00
heathrow_pic.c hw: Use device_class_set_legacy_reset() instead of opencoding 2024-09-13 15:31:44 +01:00
i8259.c hw: Use device_class_set_legacy_reset() instead of opencoding 2024-09-13 15:31:44 +01:00
i8259_common.c hw/intc: Constify all Property 2024-12-15 12:55:11 -06:00
imx_avic.c hw: Use device_class_set_legacy_reset() instead of opencoding 2024-09-13 15:31:44 +01:00
imx_gpcv2.c hw: Use device_class_set_legacy_reset() instead of opencoding 2024-09-13 15:31:44 +01:00
intc.c intc: add an interface to gather statistics/informations on interrupt controllers 2016-10-04 10:00:25 +02:00
ioapic-stub.c i386: select correct components for no-board build 2024-05-10 15:45:15 +02:00
ioapic.c hw/intc: Constify all Property 2024-12-15 12:55:11 -06:00
ioapic_common.c hw/intc: Avoid using Monitor in INTERRUPT_STATS_PROVIDER::print_info() 2024-06-19 12:40:49 +02:00
ioapic_internal.h hw: Move ioapic*.h to intc/ 2023-02-27 22:29:01 +01:00
Kconfig hw/intc/loongarch_ipi: Add loongarch IPI support 2024-08-06 10:22:52 +02:00
kvm_irqcount.c hw/intc: Extract the IRQ counting functions into a separate file 2023-01-13 16:22:57 +01:00
loongarch_extioi.c hw/intc: Constify all Property 2024-12-15 12:55:11 -06:00
loongarch_ipi.c hw/intc/loongarch_ipi: Add loongarch IPI support 2024-08-06 10:22:52 +02:00
loongarch_pch_msi.c hw/intc: Constify all Property 2024-12-15 12:55:11 -06:00
loongarch_pch_pic.c hw/intc: Constify all Property 2024-12-15 12:55:11 -06:00
loongson_ipi.c hw/intc/loongson_ipi: Remove unused headers 2024-09-13 20:10:49 +02:00
loongson_ipi_common.c hw/intc: Constify all Property 2024-12-15 12:55:11 -06:00
loongson_liointc.c hw/other: spelling fixes 2023-09-21 11:31:16 +03:00
m68k_irqc.c hw/intc: Constify all Property 2024-12-15 12:55:11 -06:00
meson.build hw/intc: Remove TYPE_ETRAX_FS_PIC device 2024-09-13 20:10:50 +02:00
mips_gic.c hw/intc: Constify all Property 2024-12-15 12:55:11 -06:00
omap_intc.c hw/intc: Constify all Property 2024-12-15 12:55:11 -06:00
ompic.c hw/intc: Constify all Property 2024-12-15 12:55:11 -06:00
openpic.c hw/intc: Constify all Property 2024-12-15 12:55:11 -06:00
openpic_kvm.c hw/intc: Constify all Property 2024-12-15 12:55:11 -06:00
pl190.c hw: Use device_class_set_legacy_reset() instead of opencoding 2024-09-13 15:31:44 +01:00
pnv_xive.c hw/intc: Constify all Property 2024-12-15 12:55:11 -06:00
pnv_xive2.c hw/intc: Constify all Property 2024-12-15 12:55:11 -06:00
pnv_xive2_regs.h pnv/xive2: Enable VST NVG and NVC index compression 2024-07-26 09:51:33 +10:00
pnv_xive_regs.h ppc/xive: Handle END triggers between chips with MMIOs 2023-09-06 11:19:33 +02:00
ppc-uic.c hw/intc: Constify all Property 2024-12-15 12:55:11 -06:00
realview_gic.c error: Eliminate error_propagate() with Coccinelle, part 1 2020-07-10 15:18:08 +02:00
riscv_aclint.c hw/intc: Constify all Property 2024-12-15 12:55:11 -06:00
riscv_aplic.c hw/intc: Constify all Property 2024-12-15 12:55:11 -06:00
riscv_imsic.c hw/intc: Constify all Property 2024-12-15 12:55:11 -06:00
rx_icu.c hw/intc: Constify all Property 2024-12-15 12:55:11 -06:00
s390_flic.c hw/intc: Constify all Property 2024-12-15 12:55:11 -06:00
s390_flic_kvm.c hw: Use device_class_set_legacy_reset() instead of opencoding 2024-09-13 15:31:44 +01:00
sh_intc.c hw/intc/sh_intc: Remove unneeded local variable initialisers 2021-10-30 18:39:37 +02:00
sifive_plic.c hw/intc: Constify all Property 2024-12-15 12:55:11 -06:00
slavio_intctl.c hw: Use device_class_set_legacy_reset() instead of opencoding 2024-09-13 15:31:44 +01:00
spapr_xive.c hw/intc: Constify all Property 2024-12-15 12:55:11 -06:00
spapr_xive_kvm.c ppc/xive: Fix ESB length overflow on 32-bit hosts 2024-11-04 09:14:10 +10:00
trace-events aspeed/intc: Add AST2700 support 2024-06-16 21:08:54 +02:00
trace.h trace: switch position of headers to what Meson requires 2020-08-21 06:18:24 -04:00
vgic_common.h intc/gic: Extract some reusable vGIC code 2015-09-24 01:29:36 +01:00
xics.c hw/intc: Constify all Property 2024-12-15 12:55:11 -06:00
xics_kvm.c Remove qemu-common.h include from most units 2022-04-06 14:31:55 +02:00
xics_pnv.c non-virt: Fix Lesser GPL version number 2020-11-15 16:38:24 +01:00
xics_spapr.c hw/ppc: Avoid using Monitor in SpaprInterruptControllerClass::print_info() 2024-06-19 12:40:49 +02:00
xilinx_intc.c hw/intc: Constify all Property 2024-12-15 12:55:11 -06:00
xive.c hw/intc: Constify all Property 2024-12-15 12:55:11 -06:00
xive2.c hw/intc: Constify all Property 2024-12-15 12:55:11 -06:00
xlnx-pmu-iomod-intc.c hw/intc: Constify all Property 2024-12-15 12:55:11 -06:00
xlnx-zynqmp-ipi.c hw: Use device_class_set_legacy_reset() instead of opencoding 2024-09-13 15:31:44 +01:00