]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
Fonts: Support FONT_EXTRA_WORDS macros for font_6x8
authorPeilin Ye <yepeilin.cs@gmail.com>
Sun, 18 Oct 2020 18:12:04 +0000 (14:12 -0400)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Mon, 19 Oct 2020 15:55:10 +0000 (17:55 +0200)
Recently, in commit 6735b4632def ("Fonts: Support FONT_EXTRA_WORDS macros
for built-in fonts"), we wrapped each of our built-in data buffers in a
`font_data` structure, in order to use the following macros on them, see
include/linux/font.h:

#define REFCOUNT(fd) (((int *)(fd))[-1])
#define FNTSIZE(fd) (((int *)(fd))[-2])
#define FNTCHARCNT(fd) (((int *)(fd))[-3])
#define FNTSUM(fd) (((int *)(fd))[-4])

#define FONT_EXTRA_WORDS 4

Do the same thing to our new 6x8 font. For built-in fonts, currently we
only use FNTSIZE(). Since this is only a temporary solution for an
out-of-bounds issue in the framebuffer layer (see commit 5af08640795b
("fbcon: Fix global-out-of-bounds read in fbcon_get_font()")), all the
three other fields are intentionally set to zero in order to discourage
using these negative-indexing macros.

Signed-off-by: Peilin Ye <yepeilin.cs@gmail.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: https://patchwork.freedesktop.org/patch/msgid/926453876c92caac34cba8545716a491754d04d5.1603037079.git.yepeilin.cs@gmail.com
lib/fonts/font_6x8.c

index e064477884186fca2273b980fa91e27d8012874b..700039a9ceaec00a5316dcd3b443ab43ca737b08 100644 (file)
@@ -3,8 +3,8 @@
 
 #define FONTDATAMAX 2048
 
-static const unsigned char fontdata_6x8[FONTDATAMAX] = {
-
+static struct font_data fontdata_6x8 = {
+       { 0, 0, FONTDATAMAX, 0 }, {
        /* 0 0x00 '^@' */
        0x00, /* 000000 */
        0x00, /* 000000 */
@@ -2564,13 +2564,13 @@ static const unsigned char fontdata_6x8[FONTDATAMAX] = {
        0x00, /* 000000 */
        0x00, /* 000000 */
        0x00, /* 000000 */
-};
+} };
 
 const struct font_desc font_6x8 = {
        .idx    = FONT6x8_IDX,
        .name   = "6x8",
        .width  = 6,
        .height = 8,
-       .data   = fontdata_6x8,
+       .data   = fontdata_6x8.data,
        .pref   = 0,
 };