From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============2132510430081486394==" MIME-Version: 1.0 From: kernel test robot To: kbuild-all@lists.01.org Subject: Re: [PATCH 06/17] fortify: Detect struct member overflows in memcpy() at compile-time Date: Thu, 16 Dec 2021 16:56:50 +0800 Message-ID: <202112161632.BTEfICUX-lkp@intel.com> In-Reply-To: <20211213223331.135412-7-keescook@chromium.org> List-Id: --===============2132510430081486394== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi Kees, I love your patch! Perhaps something to improve: [auto build test WARNING on linus/master] [also build test WARNING on v5.16-rc5 next-20211215] [cannot apply to rdma/for-next axboe-block/for-next kvm/queue tip/x86/core = mkp-scsi/for-next jejb-scsi/for-next] [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/Kees-Cook/Enable-strict-co= mpile-time-memcpy-fortify-checks/20211214-064002 base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git = aa50faff4416c869b52dff68a937c84d29e12f4b config: i386-randconfig-s002-20211216 (https://download.01.org/0day-ci/arch= ive/20211216/202112161632.BTEfICUX-lkp(a)intel.com/config) compiler: gcc-9 (Debian 9.3.0-22) 9.3.0 reproduce: # apt-get install sparse # sparse version: v0.6.4-dirty # https://github.com/0day-ci/linux/commit/80c8d2aae95aae6bd09e3ef84= b74d0afe631abae git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Kees-Cook/Enable-strict-compile-ti= me-memcpy-fortify-checks/20211214-064002 git checkout 80c8d2aae95aae6bd09e3ef84b74d0afe631abae # save the config file to linux build tree mkdir build_dir make W=3D1 C=3D1 CF=3D'-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=3D= build_dir ARCH=3Di386 SHELL=3D/bin/bash drivers/video/fbdev/geode/ If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot sparse warnings: (new ones prefixed by >>) >> drivers/video/fbdev/geode/suspend_gx.c:30:9: sparse: sparse: incorrect t= ype in argument 1 (different address spaces) @@ expected void const * @= @ got void [noderef] __iomem *gp_regs @@ drivers/video/fbdev/geode/suspend_gx.c:30:9: sparse: expected void c= onst * drivers/video/fbdev/geode/suspend_gx.c:30:9: sparse: got void [noder= ef] __iomem *gp_regs >> drivers/video/fbdev/geode/suspend_gx.c:30:9: sparse: sparse: incorrect t= ype in argument 1 (different address spaces) @@ expected void const * @= @ got void [noderef] __iomem *gp_regs @@ drivers/video/fbdev/geode/suspend_gx.c:30:9: sparse: expected void c= onst * drivers/video/fbdev/geode/suspend_gx.c:30:9: sparse: got void [noder= ef] __iomem *gp_regs drivers/video/fbdev/geode/suspend_gx.c:30:9: sparse: sparse: incorrect t= ype in argument 2 (different address spaces) @@ expected void const * @= @ got void [noderef] __iomem *gp_regs @@ drivers/video/fbdev/geode/suspend_gx.c:30:9: sparse: expected void c= onst * drivers/video/fbdev/geode/suspend_gx.c:30:9: sparse: got void [noder= ef] __iomem *gp_regs >> drivers/video/fbdev/geode/suspend_gx.c:31:9: sparse: sparse: incorrect t= ype in argument 1 (different address spaces) @@ expected void const * @= @ got void [noderef] __iomem *dc_regs @@ drivers/video/fbdev/geode/suspend_gx.c:31:9: sparse: expected void c= onst * drivers/video/fbdev/geode/suspend_gx.c:31:9: sparse: got void [noder= ef] __iomem *dc_regs >> drivers/video/fbdev/geode/suspend_gx.c:31:9: sparse: sparse: incorrect t= ype in argument 1 (different address spaces) @@ expected void const * @= @ got void [noderef] __iomem *dc_regs @@ drivers/video/fbdev/geode/suspend_gx.c:31:9: sparse: expected void c= onst * drivers/video/fbdev/geode/suspend_gx.c:31:9: sparse: got void [noder= ef] __iomem *dc_regs drivers/video/fbdev/geode/suspend_gx.c:31:9: sparse: sparse: incorrect t= ype in argument 2 (different address spaces) @@ expected void const * @= @ got void [noderef] __iomem *dc_regs @@ drivers/video/fbdev/geode/suspend_gx.c:31:9: sparse: expected void c= onst * drivers/video/fbdev/geode/suspend_gx.c:31:9: sparse: got void [noder= ef] __iomem *dc_regs >> drivers/video/fbdev/geode/suspend_gx.c:32:9: sparse: sparse: incorrect t= ype in argument 1 (different address spaces) @@ expected void const * @= @ got void [noderef] __iomem *vid_regs @@ drivers/video/fbdev/geode/suspend_gx.c:32:9: sparse: expected void c= onst * drivers/video/fbdev/geode/suspend_gx.c:32:9: sparse: got void [noder= ef] __iomem *vid_regs >> drivers/video/fbdev/geode/suspend_gx.c:32:9: sparse: sparse: incorrect t= ype in argument 1 (different address spaces) @@ expected void const * @= @ got void [noderef] __iomem *vid_regs @@ drivers/video/fbdev/geode/suspend_gx.c:32:9: sparse: expected void c= onst * drivers/video/fbdev/geode/suspend_gx.c:32:9: sparse: got void [noder= ef] __iomem *vid_regs drivers/video/fbdev/geode/suspend_gx.c:32:9: sparse: sparse: incorrect t= ype in argument 2 (different address spaces) @@ expected void const * @= @ got void [noderef] __iomem *vid_regs @@ drivers/video/fbdev/geode/suspend_gx.c:32:9: sparse: expected void c= onst * drivers/video/fbdev/geode/suspend_gx.c:32:9: sparse: got void [noder= ef] __iomem *vid_regs >> drivers/video/fbdev/geode/suspend_gx.c:33:9: sparse: sparse: incorrect t= ype in argument 1 (different address spaces) @@ expected void const * @= @ got void [noderef] __iomem * @@ drivers/video/fbdev/geode/suspend_gx.c:33:9: sparse: expected void c= onst * drivers/video/fbdev/geode/suspend_gx.c:33:9: sparse: got void [noder= ef] __iomem * >> drivers/video/fbdev/geode/suspend_gx.c:33:9: sparse: sparse: incorrect t= ype in argument 1 (different address spaces) @@ expected void const * @= @ got void [noderef] __iomem * @@ drivers/video/fbdev/geode/suspend_gx.c:33:9: sparse: expected void c= onst * drivers/video/fbdev/geode/suspend_gx.c:33:9: sparse: got void [noder= ef] __iomem * drivers/video/fbdev/geode/suspend_gx.c:33:9: sparse: sparse: incorrect t= ype in argument 2 (different address spaces) @@ expected void const * @= @ got void [noderef] __iomem * @@ drivers/video/fbdev/geode/suspend_gx.c:33:9: sparse: expected void c= onst * drivers/video/fbdev/geode/suspend_gx.c:33:9: sparse: got void [noder= ef] __iomem * vim +30 drivers/video/fbdev/geode/suspend_gx.c 46fb6f110dfc3f drivers/video/geode/suspend_gx.c Andres Salomon 2008-04-28 = 13 = 46fb6f110dfc3f drivers/video/geode/suspend_gx.c Andres Salomon 2008-04-28 = 14 static void gx_save_regs(struct gxfb_par *par) 46fb6f110dfc3f drivers/video/geode/suspend_gx.c Andres Salomon 2008-04-28 = 15 { 46fb6f110dfc3f drivers/video/geode/suspend_gx.c Andres Salomon 2008-04-28 = 16 int i; 46fb6f110dfc3f drivers/video/geode/suspend_gx.c Andres Salomon 2008-04-28 = 17 = 46fb6f110dfc3f drivers/video/geode/suspend_gx.c Andres Salomon 2008-04-28 = 18 /* wait for the BLT engine to stop being busy */ 46fb6f110dfc3f drivers/video/geode/suspend_gx.c Andres Salomon 2008-04-28 = 19 do { 46fb6f110dfc3f drivers/video/geode/suspend_gx.c Andres Salomon 2008-04-28 = 20 i =3D read_gp(par, GP_BLT_STATUS); 46fb6f110dfc3f drivers/video/geode/suspend_gx.c Andres Salomon 2008-04-28 = 21 } while (i & (GP_BLT_STATUS_BLT_PENDING | GP_BLT_STATUS_BLT_BUSY)); 46fb6f110dfc3f drivers/video/geode/suspend_gx.c Andres Salomon 2008-04-28 = 22 = 46fb6f110dfc3f drivers/video/geode/suspend_gx.c Andres Salomon 2008-04-28 = 23 /* save MSRs */ 46fb6f110dfc3f drivers/video/geode/suspend_gx.c Andres Salomon 2008-04-28 = 24 rdmsrl(MSR_GX_MSR_PADSEL, par->msr.padsel); 46fb6f110dfc3f drivers/video/geode/suspend_gx.c Andres Salomon 2008-04-28 = 25 rdmsrl(MSR_GLCP_DOTPLL, par->msr.dotpll); 46fb6f110dfc3f drivers/video/geode/suspend_gx.c Andres Salomon 2008-04-28 = 26 = 46fb6f110dfc3f drivers/video/geode/suspend_gx.c Andres Salomon 2008-04-28 = 27 write_dc(par, DC_UNLOCK, DC_UNLOCK_UNLOCK); 46fb6f110dfc3f drivers/video/geode/suspend_gx.c Andres Salomon 2008-04-28 = 28 = 46fb6f110dfc3f drivers/video/geode/suspend_gx.c Andres Salomon 2008-04-28 = 29 /* save registers */ 46fb6f110dfc3f drivers/video/geode/suspend_gx.c Andres Salomon 2008-04-28 @= 30 memcpy(par->gp, par->gp_regs, sizeof(par->gp)); 46fb6f110dfc3f drivers/video/geode/suspend_gx.c Andres Salomon 2008-04-28 @= 31 memcpy(par->dc, par->dc_regs, sizeof(par->dc)); 46fb6f110dfc3f drivers/video/geode/suspend_gx.c Andres Salomon 2008-04-28 @= 32 memcpy(par->vp, par->vid_regs, sizeof(par->vp)); 46fb6f110dfc3f drivers/video/geode/suspend_gx.c Andres Salomon 2008-04-28 @= 33 memcpy(par->fp, par->vid_regs + VP_FP_START, sizeof(par->fp)); 46fb6f110dfc3f drivers/video/geode/suspend_gx.c Andres Salomon 2008-04-28 = 34 = 46fb6f110dfc3f drivers/video/geode/suspend_gx.c Andres Salomon 2008-04-28 = 35 /* save the palette */ 46fb6f110dfc3f drivers/video/geode/suspend_gx.c Andres Salomon 2008-04-28 = 36 write_dc(par, DC_PAL_ADDRESS, 0); 46fb6f110dfc3f drivers/video/geode/suspend_gx.c Andres Salomon 2008-04-28 = 37 for (i =3D 0; i < ARRAY_SIZE(par->pal); i++) 46fb6f110dfc3f drivers/video/geode/suspend_gx.c Andres Salomon 2008-04-28 = 38 par->pal[i] =3D read_dc(par, DC_PAL_DATA); 46fb6f110dfc3f drivers/video/geode/suspend_gx.c Andres Salomon 2008-04-28 = 39 } 46fb6f110dfc3f drivers/video/geode/suspend_gx.c Andres Salomon 2008-04-28 = 40 = --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org --===============2132510430081486394==--