qemu/hw/timer
Peter Maydell 81b3ddaf87 hw/timer/renesas_tmr: Fix use of uninitialized data in read_tcnt()
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
2021-03-10 13:54:51 +00:00
..
a9gtimer.c qdev: set properties with device_class_set_props() 2020-01-24 20:59:15 +01:00
allwinner-a10-pit.c allwinner-a10-pit: Use ptimer_free() in the finalize function to avoid memleaks 2021-01-08 15:13:38 +00:00
altera_timer.c Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
arm_mptimer.c qdev: set properties with device_class_set_props() 2020-01-24 20:59:15 +01:00
arm_timer.c arm: Update infocenter.arm.com URLs 2021-02-11 11:50:14 +00:00
armv7m_systick.c hw/timer/armv7m_systick: Rewrite to use ptimers 2020-10-27 11:15:31 +00:00
aspeed_timer.c qdev: set properties with device_class_set_props() 2020-01-24 20:59:15 +01:00
avr_timer16.c hw/timer: avr: Add limited support for 16-bit timer peripheral 2020-07-11 11:02:05 +02:00
bcm2835_systmr.c hw/timer/bcm2835: Support the timer COMPARE registers 2020-10-20 16:12:00 +01:00
cadence_ttc.c Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
cmsdk-apb-dualtimer.c clock: Add ClockEvent parameter to callbacks 2021-03-08 17:20:01 +00:00
cmsdk-apb-timer.c clock: Add ClockEvent parameter to callbacks 2021-03-08 17:20:01 +00:00
digic-timer.c digic-timer: Use ptimer_free() in the finalize function to avoid memleaks 2021-01-08 15:13:38 +00:00
etraxfs_timer.c Use DECLARE_*CHECKER* macros 2020-09-09 09:27:09 -04:00
exynos4210_mct.c exynos4210_mct: Use ptimer_free() in the finalize function to avoid memleaks 2021-01-08 15:13:39 +00:00
exynos4210_pwm.c exynos4210_pwm: Use ptimer_free() in the finalize function to avoid memleaks 2021-01-08 15:13:38 +00:00
grlib_gptimer.c Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
hpet.c nomaintainer: Fix Lesser GPL version number 2020-11-15 17:04:40 +01:00
i8254_common.c hw/i386: Remove obsolete LoadStateHandler::load_state_old handlers 2019-11-05 23:33:12 +01:00
i8254.c Use DECLARE_*CHECKER* macros 2020-09-09 09:27:09 -04:00
imx_epit.c hw/timer/imx_epit: Avoid assertion when CR.SWR is written 2020-08-03 17:56:11 +01:00
imx_gpt.c hw/timer/imx_gpt.c: Switch to transaction-based ptimer API 2019-10-15 18:09:03 +01:00
Kconfig hw/timer/sse-timer: Model the SSE Subsystem System Timer 2021-03-08 17:20:01 +00:00
lm32_timer.c nomaintainer: Fix Lesser GPL version number 2020-11-15 17:04:40 +01:00
meson.build hw/timer/sse-timer: Model the SSE Subsystem System Timer 2021-03-08 17:20:01 +00:00
milkymist-sysctl.c nomaintainer: Fix Lesser GPL version number 2020-11-15 17:04:40 +01:00
mips_gictimer.c Include hw/hw.h exactly where needed 2019-08-16 13:31:52 +02:00
mss-timer.c mss-timer: Use ptimer_free() in the finalize function to avoid memleaks 2021-01-08 15:13:38 +00:00
npcm7xx_timer.c hw/timer/npcm7xx_timer: Use new clock_ns_to_ticks() 2021-03-08 17:20:01 +00:00
nrf51_timer.c hw/timer/nrf51_timer: Add trace event of counter value update 2020-05-11 11:05:52 +01:00
omap_gptimer.c Include hw/hw.h exactly where needed 2019-08-16 13:31:52 +02:00
omap_synctimer.c Include hw/hw.h exactly where needed 2019-08-16 13:31:52 +02:00
puv3_ost.c Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
pxa2xx_timer.c Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
renesas_cmt.c hw/timer: RX62N compare match timer (CMT) 2020-06-22 18:37:12 +02:00
renesas_tmr.c hw/timer/renesas_tmr: Fix use of uninitialized data in read_tcnt() 2021-03-10 13:54:51 +00:00
sh_timer.c hw/timer/sh_timer: Remove superfluous "break" statements 2020-10-27 00:22:56 +01:00
slavio_timer.c hw/timer/slavio_timer: Allow 64-bit accesses 2021-01-06 11:41:37 +00:00
sse-counter.c hw/timer/sse-counter: Model the SSE Subsystem System Counter 2021-03-08 17:20:01 +00:00
sse-timer.c hw/timer/sse-timer: Model the SSE Subsystem System Timer 2021-03-08 17:20:01 +00:00
stm32f2xx_timer.c hw/timer/stm32f2xx_timer: Remove dead assignment 2020-05-04 14:43:24 +02:00
trace-events hw/timer/sse-timer: Model the SSE Subsystem System Timer 2021-03-08 17:20:01 +00:00
trace.h trace: switch position of headers to what Meson requires 2020-08-21 06:18:24 -04:00
xilinx_timer.c Use DECLARE_*CHECKER* macros 2020-09-09 09:27:09 -04:00