This code change is to make code bit more readable.
Optimise array size align to HDMI macro define.
Add check if len is overange.

Signed-off-by: Bernard Zhao <bern...@vivo.com>
---
 drivers/gpu/drm/mediatek/mtk_hdmi.c | 22 +++++++++++-----------
 1 file changed, 11 insertions(+), 11 deletions(-)

diff --git a/drivers/gpu/drm/mediatek/mtk_hdmi.c 
b/drivers/gpu/drm/mediatek/mtk_hdmi.c
index ff43a3d80410..40fb5154ed5d 100644
--- a/drivers/gpu/drm/mediatek/mtk_hdmi.c
+++ b/drivers/gpu/drm/mediatek/mtk_hdmi.c
@@ -311,15 +311,15 @@ static void mtk_hdmi_hw_send_info_frame(struct mtk_hdmi 
*hdmi, u8 *buffer,
        u8 checksum;
        int ctrl_frame_en = 0;
 
-       frame_type = *buffer;
-       buffer += 1;
-       frame_ver = *buffer;
-       buffer += 1;
-       frame_len = *buffer;
-       buffer += 1;
-       checksum = *buffer;
-       buffer += 1;
+       frame_type = *buffer++;
+       frame_ver = *buffer++;
+       frame_len = *buffer++;
+       checksum = *buffer++;
        frame_data = buffer;
+       if ((frame_len + HDMI_INFOFRAME_HEADER_SIZE) > len) {
+               dev_err(hdmi->dev, "Wrong frame len: %d\n", frame_len;
+               return;
+       }
 
        dev_dbg(hdmi->dev,
                "frame_type:0x%x,frame_ver:0x%x,frame_len:0x%x,checksum:0x%x\n",
@@ -982,7 +982,7 @@ static int mtk_hdmi_setup_avi_infoframe(struct mtk_hdmi 
*hdmi,
                                        struct drm_display_mode *mode)
 {
        struct hdmi_avi_infoframe frame;
-       u8 buffer[17];
+       u8 buffer[HDMI_INFOFRAME_HEADER_SIZE + HDMI_AVI_INFOFRAME_SIZE];
        ssize_t err;
 
        err = drm_hdmi_avi_infoframe_from_display_mode(&frame,
@@ -1008,7 +1008,7 @@ static int mtk_hdmi_setup_spd_infoframe(struct mtk_hdmi 
*hdmi,
                                        const char *product)
 {
        struct hdmi_spd_infoframe frame;
-       u8 buffer[29];
+       u8 buffer[HDMI_INFOFRAME_HEADER_SIZE + HDMI_SPD_INFOFRAME_SIZE];
        ssize_t err;
 
        err = hdmi_spd_infoframe_init(&frame, vendor, product);
@@ -1031,7 +1031,7 @@ static int mtk_hdmi_setup_spd_infoframe(struct mtk_hdmi 
*hdmi,
 static int mtk_hdmi_setup_audio_infoframe(struct mtk_hdmi *hdmi)
 {
        struct hdmi_audio_infoframe frame;
-       u8 buffer[14];
+       u8 buffer[HDMI_INFOFRAME_HEADER_SIZE + HDMI_AUDIO_INFOFRAME_SIZE];
        ssize_t err;
 
        err = hdmi_audio_infoframe_init(&frame);
-- 
2.26.2

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to