81b3ddaf87
The read_tcnt() function calculates the TCNT register values for the two channels of the timer module; it sets these up in the local tcnt[] array, and eventually returns either one or both of them, depending on whether the access is 8 or 16 bits. However, not all of the code paths through this function set both elements of this array: if the guest has programmed the TCCR.CSS register fields to values which are either documented as not to be used or which QEMU does not implement, then the function will return uninitialized data. (This was spotted by Coverity.) Add the missing CSS cases to this code, so that we return a consistent value instead of uninitialized data, and so the code structure indicates what's happening. Fixes: CID 1429976 Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Message-id: 20210219223241.16344-3-peter.maydell@linaro.org |
||
---|---|---|
.. | ||
a9gtimer.c | ||
allwinner-a10-pit.c | ||
altera_timer.c | ||
arm_mptimer.c | ||
arm_timer.c | ||
armv7m_systick.c | ||
aspeed_timer.c | ||
avr_timer16.c | ||
bcm2835_systmr.c | ||
cadence_ttc.c | ||
cmsdk-apb-dualtimer.c | ||
cmsdk-apb-timer.c | ||
digic-timer.c | ||
etraxfs_timer.c | ||
exynos4210_mct.c | ||
exynos4210_pwm.c | ||
grlib_gptimer.c | ||
hpet.c | ||
i8254_common.c | ||
i8254.c | ||
imx_epit.c | ||
imx_gpt.c | ||
Kconfig | ||
lm32_timer.c | ||
meson.build | ||
milkymist-sysctl.c | ||
mips_gictimer.c | ||
mss-timer.c | ||
npcm7xx_timer.c | ||
nrf51_timer.c | ||
omap_gptimer.c | ||
omap_synctimer.c | ||
puv3_ost.c | ||
pxa2xx_timer.c | ||
renesas_cmt.c | ||
renesas_tmr.c | ||
sh_timer.c | ||
slavio_timer.c | ||
sse-counter.c | ||
sse-timer.c | ||
stm32f2xx_timer.c | ||
trace-events | ||
trace.h | ||
xilinx_timer.c |