[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH] hw/display/bcm2835_fb.c: Initialize all fields of struct
From: |
Peter Maydell |
Subject: |
[PATCH] hw/display/bcm2835_fb.c: Initialize all fields of struct |
Date: |
Mon, 12 Oct 2020 16:33:37 +0100 |
In bcm2835_fb_mbox_push(), Coverity complains (CID 1429989) that we
pass a pointer to a local struct to another function without
initializing all its fields. This is a real bug:
bcm2835_fb_reconfigure() copies the whole of our new BCM2385FBConfig
struct into s->config, so any fields we don't initialize will corrupt
the state of the device.
Copy the two fields which we don't want to update (pixo and alpha)
from the existing config so we don't accidentally change them.
Fixes: cfb7ba983857e40e88
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
Not sure why this wasn't a visible bug -- alpha isn't used,
but if pixo changes from zero to non-zero we flip from
RGB to BGR...
---
hw/display/bcm2835_fb.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/hw/display/bcm2835_fb.c b/hw/display/bcm2835_fb.c
index c6263808a27..7c0e5eef2d5 100644
--- a/hw/display/bcm2835_fb.c
+++ b/hw/display/bcm2835_fb.c
@@ -282,6 +282,10 @@ static void bcm2835_fb_mbox_push(BCM2835FBState *s,
uint32_t value)
newconf.base = s->vcram_base | (value & 0xc0000000);
newconf.base += BCM2835_FB_OFFSET;
+ /* Copy fields which we don't want to change from the existing config */
+ newconf.pixo = s->config.pixo;
+ newconf.alpha = s->config.alpha;
+
bcm2835_fb_validate_config(&newconf);
pitch = bcm2835_fb_get_pitch(&newconf);
--
2.20.1
- [PATCH RISU] arm.risu: Add patterns for fp16 insns, (continued)
- [PATCH RISU] arm.risu: Add patterns for fp16 insns, Peter Maydell, 2020/10/12
- [PATCH] configure: Test that gio libs from pkg-config work, Peter Maydell, 2020/10/12
- [PATCH for-5.1] docs/system/arm/virt: Document mte machine option, Peter Maydell, 2020/10/12
- [PATCH for-5.1] hw/arm/armsse: Assert info->num_cpus is in-bounds in armsse_realize(), Peter Maydell, 2020/10/12
- [PATCH 01/10] decodetree: Fix codegen for non-overlapping group inside overlapping group, Peter Maydell, 2020/10/12
- [PATCH for-5.1] hw/arm/nrf51_soc: Set system_clock_scale, Peter Maydell, 2020/10/12
- [PATCH] hw/arm/mps2: New board model mps2-386, Peter Maydell, 2020/10/12
- [PATCH for-5.1] hw/arm/netduino2, netduinoplus2: Set system_clock_scale, Peter Maydell, 2020/10/12
- [PATCH] hw/input/virtio-input-hid.c: Don't undef CONFIG_CURSES, Peter Maydell, 2020/10/12
- [PATCH] hw/display/bcm2835_fb.c: Initialize all fields of struct,
Peter Maydell <=
- [PATCH] hw/timer/armv7m_systick: assert that board code set system_clock_scale, Peter Maydell, 2020/10/12
- [PATCH] hw/virtio/virtio-iommu-pci.c: Fix typo in error message, Peter Maydell, 2020/10/12
- [PATCH] hw/intc/arm_gicv3_cpuif: Don't copy CPU's maintenance interrupt, Peter Maydell, 2020/10/12
- [PATCH for-5.1] hw/timer/imx_epit: Avoid assertion when CR.SWR is written, Peter Maydell, 2020/10/12
- [PATCH] hw/intc/arm_gicv3_cpuif: Make GIC maintenance interrupts work, Peter Maydell, 2020/10/12
- [RFC PATCH v2] linux-user: Use FD_32BIT_MODE fd flag for 32-bit guests, Peter Maydell, 2020/10/12
- [PATCH] linux-user/arm/signal.c: Drop TARGET_CONFIG_CPU_32, Peter Maydell, 2020/10/12
- [PATCH] msf2-soc, stellaris: Don't wire up SYSRESETREQ, Peter Maydell, 2020/10/12
- [PATCH] meson.build: Don't look for libudev for static builds, Peter Maydell, 2020/10/12
- [PATCH] target/arm: Delete unused ARM_FEATURE_CRC, Peter Maydell, 2020/10/12