diff options
author | jkim <jkim@FreeBSD.org> | 2012-02-16 22:46:00 +0000 |
---|---|---|
committer | jkim <jkim@FreeBSD.org> | 2012-02-16 22:46:00 +0000 |
commit | fec287ef071d2f1734f7133185c98e15403999e1 (patch) | |
tree | 98287d5f14eceff3b9898d18a77fec38bdd2183e | |
parent | d6ff96837a93f52962a71bd9b5e9b2f6b9e39293 (diff) | |
download | FreeBSD-src-fec287ef071d2f1734f7133185c98e15403999e1.zip FreeBSD-src-fec287ef071d2f1734f7133185c98e15403999e1.tar.gz |
Make sure the VESA mode number is between 256 and 511 inclusive.
-rw-r--r-- | sys/dev/fb/vesa.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/dev/fb/vesa.c b/sys/dev/fb/vesa.c index ee97ff1..0ec8a55 100644 --- a/sys/dev/fb/vesa.c +++ b/sys/dev/fb/vesa.c @@ -1311,7 +1311,9 @@ vesa_set_mode(video_adapter_t *adp, int mode) if (!(info.vi_flags & V_INFO_GRAPHICS)) info.vi_flags &= ~V_INFO_LINEAR; - if (vesa_bios_set_mode(mode | ((info.vi_flags & V_INFO_LINEAR) ? 0x4000 : 0))) + if ((info.vi_flags & V_INFO_LINEAR) != 0) + mode |= 0x4000; + if (vesa_bios_set_mode(mode)) return (1); /* Palette format is reset by the above VBE function call. */ @@ -1329,7 +1331,7 @@ vesa_set_mode(video_adapter_t *adp, int mode) #if VESA_DEBUG > 0 printf("VESA: mode set!\n"); #endif - vesa_adp->va_mode = mode; + vesa_adp->va_mode = mode & 0x1ff; /* Mode number is 9-bit. */ vesa_adp->va_flags &= ~V_ADP_COLOR; vesa_adp->va_flags |= (info.vi_flags & V_INFO_COLOR) ? V_ADP_COLOR : 0; |