hw/display/bcm2835_fb: Validate config settings

Validate the config settings that the guest tries to set.

The wiki page documentation is not really accurate here:
generally rather than failing requests to set bad parameters,
the hardware will just clip them to something sensible.

Validate the most important parameters: sizes and
the viewport offsets. This prevents the framebuffer
code from trying to read out-of-range memory.

In the property handling code, we validate the new parameters every
time we encounter a tag that sets them. This means we validate the
config multiple times if the request includes multiple config-setting
tags, but the code would require significant restructuring to do a
validation only once but still return the clipped settings for
get-parameter tags and the buffer allocation tag.

Validation of settings made via the older bcm2835_fb_mbox_push()
function will be done in the next commit.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20180814144436.679-8-peter.maydell@linaro.org
This commit is contained in:
Peter Maydell 2018-08-24 13:17:50 +01:00
parent 01f18af98b
commit f8add62c0c
3 changed files with 81 additions and 29 deletions

View file

@ -76,4 +76,12 @@ static inline uint32_t bcm2835_fb_get_size(BCM2835FBConfig *config)
return yres * bcm2835_fb_get_pitch(config);
}
/**
* bcm2835_fb_validate_config: check provided config
*
* Validates the configuration information provided by the guest and
* adjusts it if necessary.
*/
void bcm2835_fb_validate_config(BCM2835FBConfig *config);
#endif