[PATCH] [v2] drm/imx: imx-ldb: fix out of bounds array access warning

kernel test robot lkp at intel.com
Wed Mar 24 16:14:56 UTC 2021


Hi Arnd,

I love your patch! Perhaps something to improve:

[auto build test WARNING on shawnguo/for-next]
[also build test WARNING on pza/reset/next drm-intel/for-linux-next drm-tip/drm-tip v5.12-rc4 next-20210324]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Arnd-Bergmann/drm-imx-imx-ldb-fix-out-of-bounds-array-access-warning/20210324-202112
base:   https://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux.git for-next
config: ia64-randconfig-r021-20210323 (attached as .config)
compiler: ia64-linux-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/0day-ci/linux/commit/1921451dcfc3ce8072884c286da96759e18ad102
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Arnd-Bergmann/drm-imx-imx-ldb-fix-out-of-bounds-array-access-warning/20210324-202112
        git checkout 1921451dcfc3ce8072884c286da96759e18ad102
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=ia64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp at intel.com>

All warnings (new ones prefixed by >>):

   In file included from arch/ia64/include/asm/pgtable.h:154,
                    from include/linux/pgtable.h:6,
                    from arch/ia64/include/asm/uaccess.h:40,
                    from include/linux/uaccess.h:11,
                    from arch/ia64/include/asm/sections.h:11,
                    from include/linux/interrupt.h:20,
                    from include/linux/trace_recursion.h:5,
                    from include/linux/ftrace.h:10,
                    from include/linux/kprobes.h:29,
                    from include/linux/kgdb.h:19,
                    from include/linux/fb.h:5,
                    from include/drm/drm_crtc.h:31,
                    from include/drm/drm_atomic.h:31,
                    from drivers/gpu/drm/imx/imx-ldb.c:21:
   arch/ia64/include/asm/mmu_context.h: In function 'reload_context':
   arch/ia64/include/asm/mmu_context.h:127:41: warning: variable 'old_rr4' set but not used [-Wunused-but-set-variable]
     127 |  unsigned long rr0, rr1, rr2, rr3, rr4, old_rr4;
         |                                         ^~~~~~~
   In file included from include/linux/device.h:15,
                    from include/linux/node.h:18,
                    from include/linux/cpu.h:17,
                    from include/linux/of_device.h:5,
                    from drivers/gpu/drm/imx/imx-ldb.c:13:
   drivers/gpu/drm/imx/imx-ldb.c: In function 'imx_ldb_encoder_enable':
>> drivers/gpu/drm/imx/imx-ldb.c:201:22: warning: format '%d' expects argument of type 'int', but argument 4 has type 'void *' [-Wformat=]
     201 |   dev_warn(ldb->dev, "%s: invalid mux %d\n",
         |                      ^~~~~~~~~~~~~~~~~~~~~~
   include/linux/dev_printk.h:19:22: note: in definition of macro 'dev_fmt'
      19 | #define dev_fmt(fmt) fmt
         |                      ^~~
   drivers/gpu/drm/imx/imx-ldb.c:201:3: note: in expansion of macro 'dev_warn'
     201 |   dev_warn(ldb->dev, "%s: invalid mux %d\n",
         |   ^~~~~~~~
   drivers/gpu/drm/imx/imx-ldb.c:201:40: note: format string is defined here
     201 |   dev_warn(ldb->dev, "%s: invalid mux %d\n",
         |                                       ~^
         |                                        |
         |                                        int
         |                                       %p
   In file included from include/linux/device.h:15,
                    from include/linux/node.h:18,
                    from include/linux/cpu.h:17,
                    from include/linux/of_device.h:5,
                    from drivers/gpu/drm/imx/imx-ldb.c:13:
   drivers/gpu/drm/imx/imx-ldb.c: In function 'imx_ldb_encoder_atomic_mode_set':
   drivers/gpu/drm/imx/imx-ldb.c:265:22: warning: format '%d' expects argument of type 'int', but argument 4 has type 'void *' [-Wformat=]
     265 |   dev_warn(ldb->dev, "%s: invalid mux %d\n",
         |                      ^~~~~~~~~~~~~~~~~~~~~~
   include/linux/dev_printk.h:19:22: note: in definition of macro 'dev_fmt'
      19 | #define dev_fmt(fmt) fmt
         |                      ^~~
   drivers/gpu/drm/imx/imx-ldb.c:265:3: note: in expansion of macro 'dev_warn'
     265 |   dev_warn(ldb->dev, "%s: invalid mux %d\n",
         |   ^~~~~~~~
   drivers/gpu/drm/imx/imx-ldb.c:265:40: note: format string is defined here
     265 |   dev_warn(ldb->dev, "%s: invalid mux %d\n",
         |                                       ~^
         |                                        |
         |                                        int
         |                                       %p

Kconfig warnings: (for reference only)
   WARNING: unmet direct dependencies detected for FRAME_POINTER
   Depends on DEBUG_KERNEL && (M68K || UML || SUPERH) || ARCH_WANT_FRAME_POINTERS
   Selected by
   - FAULT_INJECTION_STACKTRACE_FILTER && FAULT_INJECTION_DEBUG_FS && STACKTRACE_SUPPORT && !X86_64 && !MIPS && !PPC && !S390 && !MICROBLAZE && !ARM && !ARC && !X86


vim +201 drivers/gpu/drm/imx/imx-ldb.c

   192	
   193	static void imx_ldb_encoder_enable(struct drm_encoder *encoder)
   194	{
   195		struct imx_ldb_channel *imx_ldb_ch = enc_to_imx_ldb_ch(encoder);
   196		struct imx_ldb *ldb = imx_ldb_ch->ldb;
   197		int dual = ldb->ldb_ctrl & LDB_SPLIT_MODE_EN;
   198		int mux = drm_of_encoder_active_port_id(imx_ldb_ch->child, encoder);
   199	
   200		if (mux < 0 || mux >= ARRAY_SIZE(ldb->clk_sel)) {
 > 201			dev_warn(ldb->dev, "%s: invalid mux %d\n",
   202				 __func__, ERR_PTR(mux));
   203			return;
   204		}
   205	
   206		drm_panel_prepare(imx_ldb_ch->panel);
   207	
   208		if (dual) {
   209			clk_set_parent(ldb->clk_sel[mux], ldb->clk[0]);
   210			clk_set_parent(ldb->clk_sel[mux], ldb->clk[1]);
   211	
   212			clk_prepare_enable(ldb->clk[0]);
   213			clk_prepare_enable(ldb->clk[1]);
   214		} else {
   215			clk_set_parent(ldb->clk_sel[mux], ldb->clk[imx_ldb_ch->chno]);
   216		}
   217	
   218		if (imx_ldb_ch == &ldb->channel[0] || dual) {
   219			ldb->ldb_ctrl &= ~LDB_CH0_MODE_EN_MASK;
   220			if (mux == 0 || ldb->lvds_mux)
   221				ldb->ldb_ctrl |= LDB_CH0_MODE_EN_TO_DI0;
   222			else if (mux == 1)
   223				ldb->ldb_ctrl |= LDB_CH0_MODE_EN_TO_DI1;
   224		}
   225		if (imx_ldb_ch == &ldb->channel[1] || dual) {
   226			ldb->ldb_ctrl &= ~LDB_CH1_MODE_EN_MASK;
   227			if (mux == 1 || ldb->lvds_mux)
   228				ldb->ldb_ctrl |= LDB_CH1_MODE_EN_TO_DI1;
   229			else if (mux == 0)
   230				ldb->ldb_ctrl |= LDB_CH1_MODE_EN_TO_DI0;
   231		}
   232	
   233		if (ldb->lvds_mux) {
   234			const struct bus_mux *lvds_mux = NULL;
   235	
   236			if (imx_ldb_ch == &ldb->channel[0])
   237				lvds_mux = &ldb->lvds_mux[0];
   238			else if (imx_ldb_ch == &ldb->channel[1])
   239				lvds_mux = &ldb->lvds_mux[1];
   240	
   241			regmap_update_bits(ldb->regmap, lvds_mux->reg, lvds_mux->mask,
   242					   mux << lvds_mux->shift);
   243		}
   244	
   245		regmap_write(ldb->regmap, IOMUXC_GPR2, ldb->ldb_ctrl);
   246	
   247		drm_panel_enable(imx_ldb_ch->panel);
   248	}
   249	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: .config.gz
Type: application/gzip
Size: 36278 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20210325/34a48913/attachment-0001.gz>


More information about the dri-devel mailing list