aboutsummaryrefslogtreecommitdiff
path: root/include/hw/display
diff options
context:
space:
mode:
authorPeter Maydell <peter.maydell@linaro.org>2018-08-24 13:17:50 +0100
committerPeter Maydell <peter.maydell@linaro.org>2018-08-24 13:17:50 +0100
commitf8add62c0c8826ca0fa90e6e3a80b810f63fe1dd (patch)
treee278c908772cb3109c34875d643077c624685ce7 /include/hw/display
parent01f18af98b04dc3f47c37a150ae342fafd7337df (diff)
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
Diffstat (limited to 'include/hw/display')
-rw-r--r--include/hw/display/bcm2835_fb.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/include/hw/display/bcm2835_fb.h b/include/hw/display/bcm2835_fb.h
index d992c60c12..228988ba05 100644
--- a/include/hw/display/bcm2835_fb.h
+++ b/include/hw/display/bcm2835_fb.h
@@ -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