summaryrefslogtreecommitdiffstats
path: root/hw/display/sm501.c
diff options
context:
space:
mode:
authorBALATON Zoltan2020-06-20 22:56:28 +0200
committerGerd Hoffmann2020-06-30 22:46:28 +0200
commitf018edc358669d42553f4a636b7611d05ab2198f (patch)
treefc130ef56d130dae73fe84b6ca881ab26c0a9404 /hw/display/sm501.c
parentsm501: Use stn_he_p/ldn_he_p instead of switch/case (diff)
downloadqemu-f018edc358669d42553f4a636b7611d05ab2198f.tar.gz
qemu-f018edc358669d42553f4a636b7611d05ab2198f.tar.xz
qemu-f018edc358669d42553f4a636b7611d05ab2198f.zip
sm501: Do not allow guest to set invalid format
Prevent guest setting invalid format value that might trip checks in sm501_2d_operation(). Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Message-id: 26d4fa9b8ce81e2723e98d592ccba7550042752c.1592686588.git.balaton@eik.bme.hu Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Diffstat (limited to 'hw/display/sm501.c')
-rw-r--r--hw/display/sm501.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/hw/display/sm501.c b/hw/display/sm501.c
index 6349f31e64..7e4c042d52 100644
--- a/hw/display/sm501.c
+++ b/hw/display/sm501.c
@@ -1503,6 +1503,9 @@ static void sm501_2d_engine_write(void *opaque, hwaddr addr,
s->twoD_background = value;
break;
case SM501_2D_STRETCH:
+ if (((value >> 20) & 3) == 3) {
+ value &= ~BIT(20);
+ }
s->twoD_stretch = value;
break;
case SM501_2D_COLOR_COMPARE: