drm/msm: fix -Wformat-security warnings
authorArnd Bergmann <arnd@arndb.de>
Mon, 16 Dec 2024 08:33:13 +0000 (09:33 +0100)
committerDmitry Baryshkov <dmitry.baryshkov@linaro.org>
Tue, 24 Dec 2024 18:57:59 +0000 (20:57 +0200)
Passing a variable string as a printf style format is potentially
dangerous that -Wformat-security can warn about if enabled. A new
instance just got added:

drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c: In function 'dpu_kms_mdp_snapshot':
drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c:1046:49: error: format not a string literal and no format arguments [-Werror=format-security]
 1046 |                                             vbif->name);
      |                                             ~~~~^~~~~~

Fix this one and the preexisting -Wformat-security warnings the in the
DRM code for snapdragon.

Fixes: 1a40bb31fcf1 ("drm/msm/dpu: Add VBIF to DPU snapshot") # and others
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
Patchwork: https://patchwork.freedesktop.org/patch/629126/
Link: https://lore.kernel.org/r/20241216083319.1838449-1-arnd@kernel.org
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
drivers/gpu/drm/msm/adreno/a6xx_gmu.c
drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c

index 14db7376c712d19446b38152e480bd5a1e0a5198..fac3128695c6473fb246f382a5fb20ee74b9d1e5 100644 (file)
@@ -1265,7 +1265,7 @@ static int a6xx_gmu_memory_alloc(struct a6xx_gmu *gmu, struct a6xx_gmu_bo *bo,
        bo->virt = msm_gem_get_vaddr(bo->obj);
        bo->size = size;
 
-       msm_gem_object_set_name(bo->obj, name);
+       msm_gem_object_set_name(bo->obj, "%s", name);
 
        return 0;
 }
index 295178605a693a8f9fba76aefbcd53c789f930b6..eeb8028d5ff9c82386f39d6af2ee2153e6616e58 100644 (file)
@@ -938,12 +938,14 @@ static void dpu_kms_mdp_snapshot(struct msm_disp_state *disp_state, struct msm_k
        /* dump CTL sub-blocks HW regs info */
        for (i = 0; i < cat->ctl_count; i++)
                msm_disp_snapshot_add_block(disp_state, cat->ctl[i].len,
-                               dpu_kms->mmio + cat->ctl[i].base, cat->ctl[i].name);
+                               dpu_kms->mmio + cat->ctl[i].base, "%s",
+                               cat->ctl[i].name);
 
        /* dump DSPP sub-blocks HW regs info */
        for (i = 0; i < cat->dspp_count; i++) {
                base = dpu_kms->mmio + cat->dspp[i].base;
-               msm_disp_snapshot_add_block(disp_state, cat->dspp[i].len, base, cat->dspp[i].name);
+               msm_disp_snapshot_add_block(disp_state, cat->dspp[i].len, base,
+                                           "%s", cat->dspp[i].name);
 
                if (cat->dspp[i].sblk && cat->dspp[i].sblk->pcc.len > 0)
                        msm_disp_snapshot_add_block(disp_state, cat->dspp[i].sblk->pcc.len,
@@ -955,13 +957,14 @@ static void dpu_kms_mdp_snapshot(struct msm_disp_state *disp_state, struct msm_k
        /* dump INTF sub-blocks HW regs info */
        for (i = 0; i < cat->intf_count; i++)
                msm_disp_snapshot_add_block(disp_state, cat->intf[i].len,
-                               dpu_kms->mmio + cat->intf[i].base, cat->intf[i].name);
+                               dpu_kms->mmio + cat->intf[i].base, "%s",
+                               cat->intf[i].name);
 
        /* dump PP sub-blocks HW regs info */
        for (i = 0; i < cat->pingpong_count; i++) {
                base = dpu_kms->mmio + cat->pingpong[i].base;
                msm_disp_snapshot_add_block(disp_state, cat->pingpong[i].len, base,
-                                           cat->pingpong[i].name);
+                                           "%s", cat->pingpong[i].name);
 
                /* TE2 sub-block has length of 0, so will not print it */
 
@@ -975,7 +978,8 @@ static void dpu_kms_mdp_snapshot(struct msm_disp_state *disp_state, struct msm_k
        /* dump SSPP sub-blocks HW regs info */
        for (i = 0; i < cat->sspp_count; i++) {
                base = dpu_kms->mmio + cat->sspp[i].base;
-               msm_disp_snapshot_add_block(disp_state, cat->sspp[i].len, base, cat->sspp[i].name);
+               msm_disp_snapshot_add_block(disp_state, cat->sspp[i].len, base,
+                                           "%s", cat->sspp[i].name);
 
                if (cat->sspp[i].sblk && cat->sspp[i].sblk->scaler_blk.len > 0)
                        msm_disp_snapshot_add_block(disp_state, cat->sspp[i].sblk->scaler_blk.len,
@@ -993,12 +997,14 @@ static void dpu_kms_mdp_snapshot(struct msm_disp_state *disp_state, struct msm_k
        /* dump LM sub-blocks HW regs info */
        for (i = 0; i < cat->mixer_count; i++)
                msm_disp_snapshot_add_block(disp_state, cat->mixer[i].len,
-                               dpu_kms->mmio + cat->mixer[i].base, cat->mixer[i].name);
+                               dpu_kms->mmio + cat->mixer[i].base,
+                               "%s", cat->mixer[i].name);
 
        /* dump WB sub-blocks HW regs info */
        for (i = 0; i < cat->wb_count; i++)
                msm_disp_snapshot_add_block(disp_state, cat->wb[i].len,
-                               dpu_kms->mmio + cat->wb[i].base, cat->wb[i].name);
+                               dpu_kms->mmio + cat->wb[i].base, "%s",
+                               cat->wb[i].name);
 
        if (cat->mdp[0].features & BIT(DPU_MDP_PERIPH_0_REMOVED)) {
                msm_disp_snapshot_add_block(disp_state, MDP_PERIPH_TOP0,
@@ -1013,7 +1019,8 @@ static void dpu_kms_mdp_snapshot(struct msm_disp_state *disp_state, struct msm_k
        /* dump DSC sub-blocks HW regs info */
        for (i = 0; i < cat->dsc_count; i++) {
                base = dpu_kms->mmio + cat->dsc[i].base;
-               msm_disp_snapshot_add_block(disp_state, cat->dsc[i].len, base, cat->dsc[i].name);
+               msm_disp_snapshot_add_block(disp_state, cat->dsc[i].len, base,
+                                           "%s", cat->dsc[i].name);
 
                if (cat->dsc[i].features & BIT(DPU_DSC_HW_REV_1_2)) {
                        struct dpu_dsc_blk enc = cat->dsc[i].sblk->enc;
@@ -1028,14 +1035,15 @@ static void dpu_kms_mdp_snapshot(struct msm_disp_state *disp_state, struct msm_k
 
        if (cat->cdm)
                msm_disp_snapshot_add_block(disp_state, cat->cdm->len,
-                                           dpu_kms->mmio + cat->cdm->base, cat->cdm->name);
+                                           dpu_kms->mmio + cat->cdm->base,
+                                           "%s", cat->cdm->name);
 
        for (i = 0; i < dpu_kms->catalog->vbif_count; i++) {
                const struct dpu_vbif_cfg *vbif = &dpu_kms->catalog->vbif[i];
 
                msm_disp_snapshot_add_block(disp_state, vbif->len,
                                            dpu_kms->vbif[vbif->id] + vbif->base,
-                                           vbif->name);
+                                           "%s", vbif->name);
        }
 
        pm_runtime_put_sync(&dpu_kms->pdev->dev);