Re: [PATCH 06/17] fortify: Detect struct member overflows in memcpy() at compile-time
by kernel test robot
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-20211213]
[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-compile-...
base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git aa50faff4416c869b52dff68a937c84d29e12f4b
config: i386-randconfig-s002-20211214 (https://download.01.org/0day-ci/archive/20211215/202112150059.yHZrJY0I-lk...)
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/80c8d2aae95aae6bd09e3ef84b74d0afe...
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Kees-Cook/Enable-strict-compile-time-memcpy-fortify-checks/20211214-064002
git checkout 80c8d2aae95aae6bd09e3ef84b74d0afe631abae
# save the config file to linux build tree
mkdir build_dir
make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=i386 SHELL=/bin/bash drivers/video/fbdev/geode/
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
sparse warnings: (new ones prefixed by >>)
>> drivers/video/fbdev/geode/lxfb_ops.c:602:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const * @@ got void [noderef] __iomem *gp_regs @@
drivers/video/fbdev/geode/lxfb_ops.c:602:9: sparse: expected void const *
drivers/video/fbdev/geode/lxfb_ops.c:602:9: sparse: got void [noderef] __iomem *gp_regs
>> drivers/video/fbdev/geode/lxfb_ops.c:602:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const * @@ got void [noderef] __iomem *gp_regs @@
drivers/video/fbdev/geode/lxfb_ops.c:602:9: sparse: expected void const *
drivers/video/fbdev/geode/lxfb_ops.c:602:9: sparse: got void [noderef] __iomem *gp_regs
drivers/video/fbdev/geode/lxfb_ops.c:602:9: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const * @@ got void [noderef] __iomem *gp_regs @@
drivers/video/fbdev/geode/lxfb_ops.c:602:9: sparse: expected void const *
drivers/video/fbdev/geode/lxfb_ops.c:602:9: sparse: got void [noderef] __iomem *gp_regs
>> drivers/video/fbdev/geode/lxfb_ops.c:603:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const * @@ got void [noderef] __iomem *dc_regs @@
drivers/video/fbdev/geode/lxfb_ops.c:603:9: sparse: expected void const *
drivers/video/fbdev/geode/lxfb_ops.c:603:9: sparse: got void [noderef] __iomem *dc_regs
>> drivers/video/fbdev/geode/lxfb_ops.c:603:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const * @@ got void [noderef] __iomem *dc_regs @@
drivers/video/fbdev/geode/lxfb_ops.c:603:9: sparse: expected void const *
drivers/video/fbdev/geode/lxfb_ops.c:603:9: sparse: got void [noderef] __iomem *dc_regs
drivers/video/fbdev/geode/lxfb_ops.c:603:9: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const * @@ got void [noderef] __iomem *dc_regs @@
drivers/video/fbdev/geode/lxfb_ops.c:603:9: sparse: expected void const *
drivers/video/fbdev/geode/lxfb_ops.c:603:9: sparse: got void [noderef] __iomem *dc_regs
>> drivers/video/fbdev/geode/lxfb_ops.c:604:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const * @@ got void [noderef] __iomem *vp_regs @@
drivers/video/fbdev/geode/lxfb_ops.c:604:9: sparse: expected void const *
drivers/video/fbdev/geode/lxfb_ops.c:604:9: sparse: got void [noderef] __iomem *vp_regs
>> drivers/video/fbdev/geode/lxfb_ops.c:604:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const * @@ got void [noderef] __iomem *vp_regs @@
drivers/video/fbdev/geode/lxfb_ops.c:604:9: sparse: expected void const *
drivers/video/fbdev/geode/lxfb_ops.c:604:9: sparse: got void [noderef] __iomem *vp_regs
drivers/video/fbdev/geode/lxfb_ops.c:604:9: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const * @@ got void [noderef] __iomem *vp_regs @@
drivers/video/fbdev/geode/lxfb_ops.c:604:9: sparse: expected void const *
drivers/video/fbdev/geode/lxfb_ops.c:604:9: sparse: got void [noderef] __iomem *vp_regs
>> drivers/video/fbdev/geode/lxfb_ops.c:605:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const * @@ got void [noderef] __iomem * @@
drivers/video/fbdev/geode/lxfb_ops.c:605:9: sparse: expected void const *
drivers/video/fbdev/geode/lxfb_ops.c:605:9: sparse: got void [noderef] __iomem *
>> drivers/video/fbdev/geode/lxfb_ops.c:605:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const * @@ got void [noderef] __iomem * @@
drivers/video/fbdev/geode/lxfb_ops.c:605:9: sparse: expected void const *
drivers/video/fbdev/geode/lxfb_ops.c:605:9: sparse: got void [noderef] __iomem *
drivers/video/fbdev/geode/lxfb_ops.c:605:9: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const * @@ got void [noderef] __iomem * @@
drivers/video/fbdev/geode/lxfb_ops.c:605:9: sparse: expected void const *
drivers/video/fbdev/geode/lxfb_ops.c:605:9: sparse: got void [noderef] __iomem *
drivers/video/fbdev/geode/lxfb_ops.c:633:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const * @@ got void [noderef] __iomem * @@
drivers/video/fbdev/geode/lxfb_ops.c:633:9: sparse: expected void const *
drivers/video/fbdev/geode/lxfb_ops.c:633:9: sparse: got void [noderef] __iomem *
drivers/video/fbdev/geode/lxfb_ops.c:633:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const * @@ got void [noderef] __iomem * @@
drivers/video/fbdev/geode/lxfb_ops.c:633:9: sparse: expected void const *
drivers/video/fbdev/geode/lxfb_ops.c:633:9: sparse: got void [noderef] __iomem *
drivers/video/fbdev/geode/lxfb_ops.c:633:9: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const * @@ got void [noderef] __iomem * @@
drivers/video/fbdev/geode/lxfb_ops.c:633:9: sparse: expected void const *
drivers/video/fbdev/geode/lxfb_ops.c:633:9: sparse: got void [noderef] __iomem *
drivers/video/fbdev/geode/lxfb_ops.c:760:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const * @@ got void [noderef] __iomem * @@
drivers/video/fbdev/geode/lxfb_ops.c:760:9: sparse: expected void const *
drivers/video/fbdev/geode/lxfb_ops.c:760:9: sparse: got void [noderef] __iomem *
drivers/video/fbdev/geode/lxfb_ops.c:760:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const * @@ got void [noderef] __iomem * @@
drivers/video/fbdev/geode/lxfb_ops.c:760:9: sparse: expected void const *
drivers/video/fbdev/geode/lxfb_ops.c:760:9: sparse: got void [noderef] __iomem *
>> drivers/video/fbdev/geode/lxfb_ops.c:760:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void * @@ got void [noderef] __iomem * @@
drivers/video/fbdev/geode/lxfb_ops.c:760:9: sparse: expected void *
drivers/video/fbdev/geode/lxfb_ops.c:760:9: sparse: got void [noderef] __iomem *
vim +602 drivers/video/fbdev/geode/lxfb_ops.c
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 582
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 583 static void lx_save_regs(struct lxfb_par *par)
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 584 {
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 585 uint32_t filt;
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 586 int i;
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 587
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 588 /* wait for the BLT engine to stop being busy */
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 589 do {
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 590 i = read_gp(par, GP_BLT_STATUS);
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 591 } while ((i & GP_BLT_STATUS_PB) || !(i & GP_BLT_STATUS_CE));
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 592
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 593 /* save MSRs */
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 594 rdmsrl(MSR_LX_MSR_PADSEL, par->msr.padsel);
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 595 rdmsrl(MSR_GLCP_DOTPLL, par->msr.dotpll);
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 596 rdmsrl(MSR_LX_GLD_MSR_CONFIG, par->msr.dfglcfg);
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 597 rdmsrl(MSR_LX_SPARE_MSR, par->msr.dcspare);
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 598
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 599 write_dc(par, DC_UNLOCK, DC_UNLOCK_UNLOCK);
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 600
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 601 /* save registers */
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 @602 memcpy(par->gp, par->gp_regs, sizeof(par->gp));
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 @603 memcpy(par->dc, par->dc_regs, sizeof(par->dc));
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 @604 memcpy(par->vp, par->vp_regs, sizeof(par->vp));
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 @605 memcpy(par->fp, par->vp_regs + VP_FP_START, sizeof(par->fp));
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 606
16cdd4336fdca9b drivers/video/geode/lxfb_ops.c Daniel Drake 2010-11-30 607 /* save the display controller palette */
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 608 write_dc(par, DC_PAL_ADDRESS, 0);
16cdd4336fdca9b drivers/video/geode/lxfb_ops.c Daniel Drake 2010-11-30 609 for (i = 0; i < ARRAY_SIZE(par->dc_pal); i++)
16cdd4336fdca9b drivers/video/geode/lxfb_ops.c Daniel Drake 2010-11-30 610 par->dc_pal[i] = read_dc(par, DC_PAL_DATA);
16cdd4336fdca9b drivers/video/geode/lxfb_ops.c Daniel Drake 2010-11-30 611
16cdd4336fdca9b drivers/video/geode/lxfb_ops.c Daniel Drake 2010-11-30 612 /* save the video processor palette */
16cdd4336fdca9b drivers/video/geode/lxfb_ops.c Daniel Drake 2010-11-30 613 write_vp(par, VP_PAR, 0);
16cdd4336fdca9b drivers/video/geode/lxfb_ops.c Daniel Drake 2010-11-30 614 for (i = 0; i < ARRAY_SIZE(par->vp_pal); i++)
16cdd4336fdca9b drivers/video/geode/lxfb_ops.c Daniel Drake 2010-11-30 615 par->vp_pal[i] = read_vp(par, VP_PDR);
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 616
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 617 /* save the horizontal filter coefficients */
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 618 filt = par->dc[DC_IRQ_FILT_CTL] | DC_IRQ_FILT_CTL_H_FILT_SEL;
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 619 for (i = 0; i < ARRAY_SIZE(par->hcoeff); i += 2) {
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 620 write_dc(par, DC_IRQ_FILT_CTL, (filt & 0xffffff00) | i);
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 621 par->hcoeff[i] = read_dc(par, DC_FILT_COEFF1);
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 622 par->hcoeff[i + 1] = read_dc(par, DC_FILT_COEFF2);
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 623 }
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 624
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 625 /* save the vertical filter coefficients */
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 626 filt &= ~DC_IRQ_FILT_CTL_H_FILT_SEL;
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 627 for (i = 0; i < ARRAY_SIZE(par->vcoeff); i++) {
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 628 write_dc(par, DC_IRQ_FILT_CTL, (filt & 0xffffff00) | i);
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 629 par->vcoeff[i] = read_dc(par, DC_FILT_COEFF1);
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 630 }
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 631
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 632 /* save video coeff ram */
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 633 memcpy(par->vp_coeff, par->vp_regs + VP_VCR, sizeof(par->vp_coeff));
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 634 }
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 635
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 636 static void lx_restore_gfx_proc(struct lxfb_par *par)
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 637 {
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 638 int i;
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 639
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 640 /* a bunch of registers require GP_RASTER_MODE to be set first */
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 641 write_gp(par, GP_RASTER_MODE, par->gp[GP_RASTER_MODE]);
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 642
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 643 for (i = 0; i < ARRAY_SIZE(par->gp); i++) {
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 644 switch (i) {
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 645 case GP_RASTER_MODE:
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 646 case GP_VECTOR_MODE:
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 647 case GP_BLT_MODE:
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 648 case GP_BLT_STATUS:
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 649 case GP_HST_SRC:
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 650 /* FIXME: restore LUT data */
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 651 case GP_LUT_INDEX:
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 652 case GP_LUT_DATA:
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 653 /* don't restore these registers */
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 654 break;
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 655
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 656 default:
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 657 write_gp(par, i, par->gp[i]);
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 658 }
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 659 }
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 660 }
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 661
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 662 static void lx_restore_display_ctlr(struct lxfb_par *par)
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 663 {
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 664 uint32_t filt;
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 665 int i;
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 666
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 667 wrmsrl(MSR_LX_SPARE_MSR, par->msr.dcspare);
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 668
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 669 for (i = 0; i < ARRAY_SIZE(par->dc); i++) {
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 670 switch (i) {
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 671 case DC_UNLOCK:
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 672 /* unlock the DC; runs first */
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 673 write_dc(par, DC_UNLOCK, DC_UNLOCK_UNLOCK);
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 674 break;
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 675
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 676 case DC_GENERAL_CFG:
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 677 case DC_DISPLAY_CFG:
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 678 /* disable all while restoring */
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 679 write_dc(par, i, 0);
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 680 break;
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 681
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 682 case DC_DV_CTL:
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 683 /* set all ram to dirty */
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 684 write_dc(par, i, par->dc[i] | DC_DV_CTL_CLEAR_DV_RAM);
2c3a1e49696fd05 drivers/video/fbdev/geode/lxfb_ops.c Gustavo A. R. Silva 2020-11-20 685 break;
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 686
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 687 case DC_RSVD_1:
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 688 case DC_RSVD_2:
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 689 case DC_RSVD_3:
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 690 case DC_LINE_CNT:
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 691 case DC_PAL_ADDRESS:
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 692 case DC_PAL_DATA:
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 693 case DC_DFIFO_DIAG:
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 694 case DC_CFIFO_DIAG:
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 695 case DC_FILT_COEFF1:
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 696 case DC_FILT_COEFF2:
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 697 case DC_RSVD_4:
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 698 case DC_RSVD_5:
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 699 /* don't restore these registers */
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 700 break;
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 701
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 702 default:
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 703 write_dc(par, i, par->dc[i]);
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 704 }
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 705 }
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 706
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 707 /* restore the palette */
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 708 write_dc(par, DC_PAL_ADDRESS, 0);
16cdd4336fdca9b drivers/video/geode/lxfb_ops.c Daniel Drake 2010-11-30 709 for (i = 0; i < ARRAY_SIZE(par->dc_pal); i++)
16cdd4336fdca9b drivers/video/geode/lxfb_ops.c Daniel Drake 2010-11-30 710 write_dc(par, DC_PAL_DATA, par->dc_pal[i]);
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 711
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 712 /* restore the horizontal filter coefficients */
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 713 filt = par->dc[DC_IRQ_FILT_CTL] | DC_IRQ_FILT_CTL_H_FILT_SEL;
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 714 for (i = 0; i < ARRAY_SIZE(par->hcoeff); i += 2) {
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 715 write_dc(par, DC_IRQ_FILT_CTL, (filt & 0xffffff00) | i);
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 716 write_dc(par, DC_FILT_COEFF1, par->hcoeff[i]);
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 717 write_dc(par, DC_FILT_COEFF2, par->hcoeff[i + 1]);
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 718 }
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 719
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 720 /* restore the vertical filter coefficients */
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 721 filt &= ~DC_IRQ_FILT_CTL_H_FILT_SEL;
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 722 for (i = 0; i < ARRAY_SIZE(par->vcoeff); i++) {
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 723 write_dc(par, DC_IRQ_FILT_CTL, (filt & 0xffffff00) | i);
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 724 write_dc(par, DC_FILT_COEFF1, par->vcoeff[i]);
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 725 }
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 726 }
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 727
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 728 static void lx_restore_video_proc(struct lxfb_par *par)
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 729 {
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 730 int i;
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 731
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 732 wrmsrl(MSR_LX_GLD_MSR_CONFIG, par->msr.dfglcfg);
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 733 wrmsrl(MSR_LX_MSR_PADSEL, par->msr.padsel);
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 734
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 735 for (i = 0; i < ARRAY_SIZE(par->vp); i++) {
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 736 switch (i) {
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 737 case VP_VCFG:
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 738 case VP_DCFG:
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 739 case VP_PAR:
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 740 case VP_PDR:
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 741 case VP_CCS:
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 742 case VP_RSVD_0:
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 743 /* case VP_VDC: */ /* why should this not be restored? */
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 744 case VP_RSVD_1:
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 745 case VP_CRC32:
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 746 /* don't restore these registers */
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 747 break;
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 748
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 749 default:
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 750 write_vp(par, i, par->vp[i]);
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 751 }
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 752 }
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 753
16cdd4336fdca9b drivers/video/geode/lxfb_ops.c Daniel Drake 2010-11-30 754 /* restore video processor palette */
16cdd4336fdca9b drivers/video/geode/lxfb_ops.c Daniel Drake 2010-11-30 755 write_vp(par, VP_PAR, 0);
16cdd4336fdca9b drivers/video/geode/lxfb_ops.c Daniel Drake 2010-11-30 756 for (i = 0; i < ARRAY_SIZE(par->vp_pal); i++)
16cdd4336fdca9b drivers/video/geode/lxfb_ops.c Daniel Drake 2010-11-30 757 write_vp(par, VP_PDR, par->vp_pal[i]);
16cdd4336fdca9b drivers/video/geode/lxfb_ops.c Daniel Drake 2010-11-30 758
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 759 /* restore video coeff ram */
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 @760 memcpy(par->vp_regs + VP_VCR, par->vp_coeff, sizeof(par->vp_coeff));
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 761 }
f694e53bd0db695 drivers/video/geode/lxfb_ops.c Andres Salomon 2008-04-28 762
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
9 months, 1 week
Re: [PATCH v2 2/2] pinctrl: Propagate firmware node from a parent device
by kernel test robot
Hi Andy,
I love your patch! Yet something to improve:
[auto build test ERROR on linusw-pinctrl/devel]
[cannot apply to geert-renesas-drivers/renesas-pinctrl v5.16-rc5]
[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/Andy-Shevchenko/pinctrl-Get-rid-...
base: https://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl.git devel
config: x86_64-randconfig-a012-20211214 (https://download.01.org/0day-ci/archive/20211214/202112142358.CrwPNZbA-lk...)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project b6a2ddb6c8ac29412b1361810972e15221fa021c)
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/fb259425f395e043cd3ef074641937e28...
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Andy-Shevchenko/pinctrl-Get-rid-of-duplicate-of_node-assignment-in-the-drivers/20211214-210027
git checkout fb259425f395e043cd3ef074641937e28d0cffb9
# save the config file to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All errors (new ones prefixed by >>):
>> drivers/pinctrl/pinctrl-max77620.c:649:64: error: array has incomplete element type 'const struct platform_device_id'
static const struct platform_device_id max77620_pinctrl_devtype[] = {
^
include/linux/platform_device.h:21:8: note: forward declaration of 'struct platform_device_id'
struct platform_device_id;
^
1 error generated.
vim +649 drivers/pinctrl/pinctrl-max77620.c
2df723d49cdafb6 Laxman Dewangan 2016-05-13 648
2df723d49cdafb6 Laxman Dewangan 2016-05-13 @649 static const struct platform_device_id max77620_pinctrl_devtype[] = {
2df723d49cdafb6 Laxman Dewangan 2016-05-13 650 { .name = "max77620-pinctrl", },
2df723d49cdafb6 Laxman Dewangan 2016-05-13 651 { .name = "max20024-pinctrl", },
2df723d49cdafb6 Laxman Dewangan 2016-05-13 652 {},
2df723d49cdafb6 Laxman Dewangan 2016-05-13 653 };
2df723d49cdafb6 Laxman Dewangan 2016-05-13 654 MODULE_DEVICE_TABLE(platform, max77620_pinctrl_devtype);
2df723d49cdafb6 Laxman Dewangan 2016-05-13 655
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
9 months, 1 week
[chenxing:msc313_mainlining 69/78] drivers/clocksource/timer-msc313e.c:38:21: error: field has incomplete type 'struct delay_timer'
by kernel test robot
tree: git://github.com/linux-chenxing/linux.git msc313_mainlining
head: 04c62a6ed8b1b9034464e903809c8b6a9354bf6e
commit: 6d59a74a236d8cd686cc2dde0d122e9a609216c5 [69/78] clocksource: Add MStar MSC313e timer support
config: hexagon-buildonly-randconfig-r002-20211214 (https://download.01.org/0day-ci/archive/20211214/202112142240.MQkK0BR0-lk...)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project b6a2ddb6c8ac29412b1361810972e15221fa021c)
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/linux-chenxing/linux/commit/6d59a74a236d8cd686cc2dde0d...
git remote add chenxing git://github.com/linux-chenxing/linux.git
git fetch --no-tags chenxing msc313_mainlining
git checkout 6d59a74a236d8cd686cc2dde0d122e9a609216c5
# save the config file to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=hexagon SHELL=/bin/bash drivers/clocksource/
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All errors (new ones prefixed by >>):
>> drivers/clocksource/timer-msc313e.c:38:21: error: field has incomplete type 'struct delay_timer'
struct delay_timer delay;
^
drivers/clocksource/timer-msc313e.c:38:9: note: forward declaration of 'struct delay_timer'
struct delay_timer delay;
^
>> drivers/clocksource/timer-msc313e.c:197:2: error: implicit declaration of function 'register_current_timer_delay' [-Werror,-Wimplicit-function-declaration]
register_current_timer_delay(&msc313e_delay.delay);
^
2 errors generated.
vim +38 drivers/clocksource/timer-msc313e.c
35
36 struct msc313e_delay {
37 void __iomem *base;
> 38 struct delay_timer delay;
39 };
40
41 static void __iomem *msc313e_clksrc;
42 static struct msc313e_delay msc313e_delay;
43
44 static void msc313e_timer_stop(void __iomem *base)
45 {
46 writew(0, base + MSC313E_REG_CTRL);
47 }
48
49 static void msc313e_timer_start(void __iomem *base, bool periodic)
50 {
51 u16 reg;
52
53 reg = readw(base + MSC313E_REG_CTRL);
54 if (periodic)
55 reg |= MSC313E_REG_CTRL_TIMER_EN;
56 else
57 reg |= MSC313E_REG_CTRL_TIMER_TRIG;
58 writew(reg | MSC313E_REG_CTRL_TIMER_INT_EN, base + MSC313E_REG_CTRL);
59 }
60
61 static void msc313e_timer_setup(void __iomem *base, unsigned long delay)
62 {
63 writew(delay >> 16, base + MSC313E_REG_TIMER_MAX_HIGH);
64 writew(delay & 0xffff, base + MSC313E_REG_TIMER_MAX_LOW);
65 }
66
67 static unsigned long msc313e_timer_current_value(void __iomem *base)
68 {
69 unsigned long result;
70
71 result = readw(base + MSC313E_REG_COUNTER_LOW);
72 result |= readw(base + MSC313E_REG_COUNTER_HIGH) << 16;
73
74 return result;
75 }
76
77 static int msc313e_timer_clkevt_shutdown(struct clock_event_device *evt)
78 {
79 struct timer_of *timer = to_timer_of(evt);
80
81 msc313e_timer_stop(timer_of_base(timer));
82
83 return 0;
84 }
85
86 static int msc313e_timer_clkevt_set_oneshot(struct clock_event_device *evt)
87 {
88 struct timer_of *timer = to_timer_of(evt);
89
90 msc313e_timer_stop(timer_of_base(timer));
91 msc313e_timer_start(timer_of_base(timer), false);
92
93 return 0;
94 }
95
96 static int msc313e_timer_clkevt_set_periodic(struct clock_event_device *evt)
97 {
98 struct timer_of *timer = to_timer_of(evt);
99
100 msc313e_timer_stop(timer_of_base(timer));
101 msc313e_timer_setup(timer_of_base(timer), timer_of_period(timer));
102 msc313e_timer_start(timer_of_base(timer), true);
103
104 return 0;
105 }
106
107 static int msc313e_timer_clkevt_next_event(unsigned long evt, struct clock_event_device *clkevt)
108 {
109 struct timer_of *timer = to_timer_of(clkevt);
110
111 msc313e_timer_stop(timer_of_base(timer));
112 msc313e_timer_setup(timer_of_base(timer), evt);
113 msc313e_timer_start(timer_of_base(timer), false);
114
115 return 0;
116 }
117
118 static irqreturn_t msc313e_timer_clkevt_irq(int irq, void *dev_id)
119 {
120 struct clock_event_device *evt = dev_id;
121
122 evt->event_handler(evt);
123
124 return IRQ_HANDLED;
125 }
126
127 static u64 msc313e_timer_clksrc_read(struct clocksource *cs)
128 {
129 return msc313e_timer_current_value(msc313e_clksrc) & cs->mask;
130 }
131
132 static unsigned long msc313e_read_delay_timer_read(void)
133 {
134 return msc313e_timer_current_value(msc313e_delay.base);
135 }
136
137 static u64 msc313e_timer_sched_clock_read(void)
138 {
139 return msc313e_timer_current_value(msc313e_clksrc);
140 }
141
142 static struct clock_event_device msc313e_clkevt = {
143 .name = TIMER_NAME,
144 .rating = 300,
145 .features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT,
146 .set_state_shutdown = msc313e_timer_clkevt_shutdown,
147 .set_state_periodic = msc313e_timer_clkevt_set_periodic,
148 .set_state_oneshot = msc313e_timer_clkevt_set_oneshot,
149 .tick_resume = msc313e_timer_clkevt_shutdown,
150 .set_next_event = msc313e_timer_clkevt_next_event,
151 };
152
153 static int __init msc313e_clkevt_init(struct device_node *np)
154 {
155 int ret;
156 struct timer_of *to;
157
158 to = kzalloc(sizeof(*to), GFP_KERNEL);
159 if (!to)
160 return -ENOMEM;
161
162 to->flags = TIMER_OF_IRQ | TIMER_OF_CLOCK | TIMER_OF_BASE;
163 to->of_irq.handler = msc313e_timer_clkevt_irq;
164 ret = timer_of_init(np, to);
165 if (ret)
166 return ret;
167
168 msc313e_clkevt.cpumask = cpu_possible_mask;
169 msc313e_clkevt.irq = to->of_irq.irq;
170 to->clkevt = msc313e_clkevt;
171
172 clockevents_config_and_register(&to->clkevt, timer_of_rate(to),
173 TIMER_SYNC_TICKS, 0xffffffff);
174 return 0;
175 }
176
177 static int __init msc313e_clksrc_init(struct device_node *np)
178 {
179 struct timer_of to = { 0 };
180 int ret;
181 u16 reg;
182
183 to.flags = TIMER_OF_BASE | TIMER_OF_CLOCK;
184 ret = timer_of_init(np, &to);
185 if (ret)
186 return ret;
187
188 msc313e_delay.base = timer_of_base(&to);
189 msc313e_delay.delay.read_current_timer = msc313e_read_delay_timer_read;
190 msc313e_delay.delay.freq = timer_of_rate(&to);
191
192 msc313e_clksrc = timer_of_base(&to);
193 reg = readw(msc313e_clksrc + MSC313E_REG_CTRL);
194 reg |= MSC313E_REG_CTRL_TIMER_EN;
195 writew(reg, msc313e_clksrc + MSC313E_REG_CTRL);
196
> 197 register_current_timer_delay(&msc313e_delay.delay);
198
199 sched_clock_register(msc313e_timer_sched_clock_read, 32, timer_of_rate(&to));
200 return clocksource_mmio_init(timer_of_base(&to), TIMER_NAME, timer_of_rate(&to), 300, 32,
201 msc313e_timer_clksrc_read);
202 }
203
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
9 months, 1 week
[hch-misc:um-set_fs 1/2] arch/x86/kvm/mmu/spte.c:85:6: error: implicit declaration of function 'pat_enabled'; did you mean 'kasan_enabled'?
by kernel test robot
tree: git://git.infradead.org/users/hch/misc.git um-set_fs
head: 62ef80add97f4b90b4435670fcd5c0a6bd424fad
commit: bc1802ed3414136e0dfe2ea0a747aca59dc33b5c [1/2] x86/mtrr: don't include <asm/memtype.h> for !CONFIG_MTRR
config: x86_64-randconfig-a006-20211214 (https://download.01.org/0day-ci/archive/20211214/202112142126.XDd02OOu-lk...)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce (this is a W=1 build):
git remote add hch-misc git://git.infradead.org/users/hch/misc.git
git fetch --no-tags hch-misc um-set_fs
git checkout bc1802ed3414136e0dfe2ea0a747aca59dc33b5c
# save the config file to linux build tree
mkdir build_dir
make W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash arch/x86/kvm/
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All errors (new ones prefixed by >>):
In file included from arch/x86/include/asm/kvm_host.h:31,
from include/linux/kvm_host.h:39,
from arch/x86/kvm/mmu/spte.c:12:
arch/x86/include/asm/mtrr.h: In function 'mtrr_bp_init':
arch/x86/include/asm/mtrr.h:89:2: error: implicit declaration of function 'pat_disable'; did you mean 'ptrace_disable'? [-Werror=implicit-function-declaration]
89 | pat_disable("PAT support disabled because CONFIG_MTRR is disabled in the kernel.");
| ^~~~~~~~~~~
| ptrace_disable
arch/x86/kvm/mmu/spte.c: In function 'kvm_is_mmio_pfn':
>> arch/x86/kvm/mmu/spte.c:85:6: error: implicit declaration of function 'pat_enabled'; did you mean 'kasan_enabled'? [-Werror=implicit-function-declaration]
85 | (!pat_enabled() || pat_pfn_immune_to_uc_mtrr(pfn));
| ^~~~~~~~~~~
| kasan_enabled
>> arch/x86/kvm/mmu/spte.c:85:23: error: implicit declaration of function 'pat_pfn_immune_to_uc_mtrr' [-Werror=implicit-function-declaration]
85 | (!pat_enabled() || pat_pfn_immune_to_uc_mtrr(pfn));
| ^~~~~~~~~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
vim +85 arch/x86/kvm/mmu/spte.c
5a9624affe7c74 Paolo Bonzini 2020-10-16 70
5a9624affe7c74 Paolo Bonzini 2020-10-16 71 static bool kvm_is_mmio_pfn(kvm_pfn_t pfn)
5a9624affe7c74 Paolo Bonzini 2020-10-16 72 {
5a9624affe7c74 Paolo Bonzini 2020-10-16 73 if (pfn_valid(pfn))
5a9624affe7c74 Paolo Bonzini 2020-10-16 74 return !is_zero_pfn(pfn) && PageReserved(pfn_to_page(pfn)) &&
5a9624affe7c74 Paolo Bonzini 2020-10-16 75 /*
5a9624affe7c74 Paolo Bonzini 2020-10-16 76 * Some reserved pages, such as those from NVDIMM
5a9624affe7c74 Paolo Bonzini 2020-10-16 77 * DAX devices, are not for MMIO, and can be mapped
5a9624affe7c74 Paolo Bonzini 2020-10-16 78 * with cached memory type for better performance.
5a9624affe7c74 Paolo Bonzini 2020-10-16 79 * However, the above check misconceives those pages
5a9624affe7c74 Paolo Bonzini 2020-10-16 80 * as MMIO, and results in KVM mapping them with UC
5a9624affe7c74 Paolo Bonzini 2020-10-16 81 * memory type, which would hurt the performance.
5a9624affe7c74 Paolo Bonzini 2020-10-16 82 * Therefore, we check the host memory type in addition
5a9624affe7c74 Paolo Bonzini 2020-10-16 83 * and only treat UC/UC-/WC pages as MMIO.
5a9624affe7c74 Paolo Bonzini 2020-10-16 84 */
5a9624affe7c74 Paolo Bonzini 2020-10-16 @85 (!pat_enabled() || pat_pfn_immune_to_uc_mtrr(pfn));
5a9624affe7c74 Paolo Bonzini 2020-10-16 86
5a9624affe7c74 Paolo Bonzini 2020-10-16 87 return !e820__mapped_raw_any(pfn_to_hpa(pfn),
5a9624affe7c74 Paolo Bonzini 2020-10-16 88 pfn_to_hpa(pfn + 1) - 1,
5a9624affe7c74 Paolo Bonzini 2020-10-16 89 E820_TYPE_RAM);
5a9624affe7c74 Paolo Bonzini 2020-10-16 90 }
5a9624affe7c74 Paolo Bonzini 2020-10-16 91
:::::: The code at line 85 was first introduced by commit
:::::: 5a9624affe7c7498fb395879d9bb613628e89e60 KVM: mmu: extract spte.h and spte.c
:::::: TO: Paolo Bonzini <pbonzini(a)redhat.com>
:::::: CC: Paolo Bonzini <pbonzini(a)redhat.com>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
9 months, 1 week
Re: [PATCH v31 01/28] integrity: disassociate ima_filter_rule from security_audit_rule
by kernel test robot
Hi Casey,
I love your patch! Yet something to improve:
[auto build test ERROR on nf-next/master]
[also build test ERROR on nf/master linus/master jmorris-security/next-testing v5.16-rc5]
[cannot apply to pcmoore-audit/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/Casey-Schaufler/integrity-disass...
base: https://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf-next.git master
config: openrisc-randconfig-r012-20211213 (https://download.01.org/0day-ci/archive/20211214/202112142134.jipW98iP-lk...)
compiler: or1k-linux-gcc (GCC) 11.2.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/dcedf3ce1784c565747e19c7917ddbcd3...
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Casey-Schaufler/integrity-disassociate-ima_filter_rule-from-security_audit_rule/20211214-084057
git checkout dcedf3ce1784c565747e19c7917ddbcd3422b821
# save the config file to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross O=build_dir ARCH=openrisc SHELL=/bin/bash
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All errors (new ones prefixed by >>):
security/integrity/ima/ima_policy.c: In function 'ima_lsm_free_rule':
>> security/integrity/ima/ima_policy.c:360:17: error: implicit declaration of function 'ima_filter_rule_free'; did you mean 'ima_file_free'? [-Werror=implicit-function-declaration]
360 | ima_filter_rule_free(entry->lsm[i].rule);
| ^~~~~~~~~~~~~~~~~~~~
| ima_file_free
security/integrity/ima/ima_policy.c: In function 'ima_lsm_copy_rule':
>> security/integrity/ima/ima_policy.c:409:17: error: implicit declaration of function 'ima_filter_rule_init' [-Werror=implicit-function-declaration]
409 | ima_filter_rule_init(nentry->lsm[i].type, Audit_equal,
| ^~~~~~~~~~~~~~~~~~~~
security/integrity/ima/ima_policy.c: In function 'ima_match_rules':
>> security/integrity/ima/ima_policy.c:625:30: error: implicit declaration of function 'ima_filter_rule_match' [-Werror=implicit-function-declaration]
625 | rc = ima_filter_rule_match(osid, rule->lsm[i].type,
| ^~~~~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
vim +360 security/integrity/ima/ima_policy.c
176377d97d6a3f Tyler Hicks 2020-08-11 354
b169424551930a Janne Karhunen 2019-06-14 355 static void ima_lsm_free_rule(struct ima_rule_entry *entry)
b169424551930a Janne Karhunen 2019-06-14 356 {
b169424551930a Janne Karhunen 2019-06-14 357 int i;
b169424551930a Janne Karhunen 2019-06-14 358
b169424551930a Janne Karhunen 2019-06-14 359 for (i = 0; i < MAX_LSM_RULES; i++) {
b8867eedcf76ca Tyler Hicks 2020-07-10 @360 ima_filter_rule_free(entry->lsm[i].rule);
b169424551930a Janne Karhunen 2019-06-14 361 kfree(entry->lsm[i].args_p);
b169424551930a Janne Karhunen 2019-06-14 362 }
465aee77aae857 Tyler Hicks 2020-07-09 363 }
465aee77aae857 Tyler Hicks 2020-07-09 364
465aee77aae857 Tyler Hicks 2020-07-09 365 static void ima_free_rule(struct ima_rule_entry *entry)
465aee77aae857 Tyler Hicks 2020-07-09 366 {
465aee77aae857 Tyler Hicks 2020-07-09 367 if (!entry)
465aee77aae857 Tyler Hicks 2020-07-09 368 return;
465aee77aae857 Tyler Hicks 2020-07-09 369
465aee77aae857 Tyler Hicks 2020-07-09 370 /*
465aee77aae857 Tyler Hicks 2020-07-09 371 * entry->template->fields may be allocated in ima_parse_rule() but that
465aee77aae857 Tyler Hicks 2020-07-09 372 * reference is owned by the corresponding ima_template_desc element in
465aee77aae857 Tyler Hicks 2020-07-09 373 * the defined_templates list and cannot be freed here
465aee77aae857 Tyler Hicks 2020-07-09 374 */
465aee77aae857 Tyler Hicks 2020-07-09 375 kfree(entry->fsname);
176377d97d6a3f Tyler Hicks 2020-08-11 376 ima_free_rule_opt_list(entry->keyrings);
465aee77aae857 Tyler Hicks 2020-07-09 377 ima_lsm_free_rule(entry);
b169424551930a Janne Karhunen 2019-06-14 378 kfree(entry);
b169424551930a Janne Karhunen 2019-06-14 379 }
b169424551930a Janne Karhunen 2019-06-14 380
b169424551930a Janne Karhunen 2019-06-14 381 static struct ima_rule_entry *ima_lsm_copy_rule(struct ima_rule_entry *entry)
b169424551930a Janne Karhunen 2019-06-14 382 {
b169424551930a Janne Karhunen 2019-06-14 383 struct ima_rule_entry *nentry;
483ec26eed42bf Janne Karhunen 2020-01-15 384 int i;
b169424551930a Janne Karhunen 2019-06-14 385
b169424551930a Janne Karhunen 2019-06-14 386 /*
b169424551930a Janne Karhunen 2019-06-14 387 * Immutable elements are copied over as pointers and data; only
b169424551930a Janne Karhunen 2019-06-14 388 * lsm rules can change
b169424551930a Janne Karhunen 2019-06-14 389 */
f60c826d031817 Alex Dewar 2020-09-09 390 nentry = kmemdup(entry, sizeof(*nentry), GFP_KERNEL);
f60c826d031817 Alex Dewar 2020-09-09 391 if (!nentry)
f60c826d031817 Alex Dewar 2020-09-09 392 return NULL;
f60c826d031817 Alex Dewar 2020-09-09 393
c593642c8be046 Pankaj Bharadiya 2019-12-09 394 memset(nentry->lsm, 0, sizeof_field(struct ima_rule_entry, lsm));
b169424551930a Janne Karhunen 2019-06-14 395
b169424551930a Janne Karhunen 2019-06-14 396 for (i = 0; i < MAX_LSM_RULES; i++) {
483ec26eed42bf Janne Karhunen 2020-01-15 397 if (!entry->lsm[i].args_p)
b169424551930a Janne Karhunen 2019-06-14 398 continue;
b169424551930a Janne Karhunen 2019-06-14 399
b169424551930a Janne Karhunen 2019-06-14 400 nentry->lsm[i].type = entry->lsm[i].type;
39e5993d0d452b Tyler Hicks 2020-07-09 401 nentry->lsm[i].args_p = entry->lsm[i].args_p;
39e5993d0d452b Tyler Hicks 2020-07-09 402 /*
39e5993d0d452b Tyler Hicks 2020-07-09 403 * Remove the reference from entry so that the associated
39e5993d0d452b Tyler Hicks 2020-07-09 404 * memory will not be freed during a later call to
39e5993d0d452b Tyler Hicks 2020-07-09 405 * ima_lsm_free_rule(entry).
39e5993d0d452b Tyler Hicks 2020-07-09 406 */
39e5993d0d452b Tyler Hicks 2020-07-09 407 entry->lsm[i].args_p = NULL;
b169424551930a Janne Karhunen 2019-06-14 408
b8867eedcf76ca Tyler Hicks 2020-07-10 @409 ima_filter_rule_init(nentry->lsm[i].type, Audit_equal,
b169424551930a Janne Karhunen 2019-06-14 410 nentry->lsm[i].args_p,
b169424551930a Janne Karhunen 2019-06-14 411 &nentry->lsm[i].rule);
483ec26eed42bf Janne Karhunen 2020-01-15 412 if (!nentry->lsm[i].rule)
483ec26eed42bf Janne Karhunen 2020-01-15 413 pr_warn("rule for LSM \'%s\' is undefined\n",
aa0c0227d33171 Tyler Hicks 2020-07-09 414 nentry->lsm[i].args_p);
b169424551930a Janne Karhunen 2019-06-14 415 }
b169424551930a Janne Karhunen 2019-06-14 416 return nentry;
b169424551930a Janne Karhunen 2019-06-14 417 }
b169424551930a Janne Karhunen 2019-06-14 418
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
9 months, 1 week
Re: [PATCH v31 26/28] Audit: Add record for multiple object security contexts
by kernel test robot
Hi Casey,
I love your patch! Yet something to improve:
[auto build test ERROR on nf-next/master]
[cannot apply to pcmoore-audit/next nf/master linus/master jmorris-security/next-testing v5.16-rc5]
[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/Casey-Schaufler/integrity-disass...
base: https://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf-next.git master
config: i386-tinyconfig (https://download.01.org/0day-ci/archive/20211214/202112142146.BpckyASr-lk...)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce (this is a W=1 build):
# https://github.com/0day-ci/linux/commit/2a62f660ff9d766a192fda713edfa3ea1...
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Casey-Schaufler/integrity-disassociate-ima_filter_rule-from-security_audit_rule/20211214-084057
git checkout 2a62f660ff9d766a192fda713edfa3ea129efdee
# save the config file to linux build tree
mkdir build_dir
make W=1 O=build_dir ARCH=i386 SHELL=/bin/bash
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All errors (new ones prefixed by >>):
In file included from init/init_task.c:12:
>> include/linux/audit.h:262:1: error: expected identifier or '(' before '{' token
262 | { }
| ^
include/linux/audit.h:260:20: warning: 'audit_log_object_context' declared 'static' but never defined [-Wunused-function]
260 | static inline void audit_log_object_context(struct audit_buffer *ab,
| ^~~~~~~~~~~~~~~~~~~~~~~~
--
In file included from kernel/exit.c:49:
>> include/linux/audit.h:262:1: error: expected identifier or '(' before '{' token
262 | { }
| ^
kernel/exit.c:1817:13: warning: no previous prototype for 'abort' [-Wmissing-prototypes]
1817 | __weak void abort(void)
| ^~~~~
In file included from kernel/exit.c:49:
include/linux/audit.h:260:20: warning: 'audit_log_object_context' declared 'static' but never defined [-Wunused-function]
260 | static inline void audit_log_object_context(struct audit_buffer *ab,
| ^~~~~~~~~~~~~~~~~~~~~~~~
--
In file included from fs/pipe.c:23:
>> include/linux/audit.h:262:1: error: expected identifier or '(' before '{' token
262 | { }
| ^
fs/pipe.c:755:15: warning: no previous prototype for 'account_pipe_buffers' [-Wmissing-prototypes]
755 | unsigned long account_pipe_buffers(struct user_struct *user,
| ^~~~~~~~~~~~~~~~~~~~
fs/pipe.c:761:6: warning: no previous prototype for 'too_many_pipe_buffers_soft' [-Wmissing-prototypes]
761 | bool too_many_pipe_buffers_soft(unsigned long user_bufs)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
fs/pipe.c:768:6: warning: no previous prototype for 'too_many_pipe_buffers_hard' [-Wmissing-prototypes]
768 | bool too_many_pipe_buffers_hard(unsigned long user_bufs)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
fs/pipe.c:775:6: warning: no previous prototype for 'pipe_is_unprivileged_user' [-Wmissing-prototypes]
775 | bool pipe_is_unprivileged_user(void)
| ^~~~~~~~~~~~~~~~~~~~~~~~~
fs/pipe.c:1245:5: warning: no previous prototype for 'pipe_resize_ring' [-Wmissing-prototypes]
1245 | int pipe_resize_ring(struct pipe_inode_info *pipe, unsigned int nr_slots)
| ^~~~~~~~~~~~~~~~
In file included from fs/pipe.c:23:
include/linux/audit.h:260:20: warning: 'audit_log_object_context' declared 'static' but never defined [-Wunused-function]
260 | static inline void audit_log_object_context(struct audit_buffer *ab,
| ^~~~~~~~~~~~~~~~~~~~~~~~
vim +262 include/linux/audit.h
220
221 #else /* CONFIG_AUDIT */
222 static inline __printf(4, 5)
223 void audit_log(struct audit_context *ctx, gfp_t gfp_mask, int type,
224 const char *fmt, ...)
225 { }
226 static inline struct audit_buffer *audit_log_start(struct audit_context *ctx,
227 gfp_t gfp_mask, int type)
228 {
229 return NULL;
230 }
231 static inline __printf(2, 3)
232 void audit_log_format(struct audit_buffer *ab, const char *fmt, ...)
233 { }
234 static inline void audit_log_end(struct audit_buffer *ab)
235 { }
236 static inline void audit_log_n_hex(struct audit_buffer *ab,
237 const unsigned char *buf, size_t len)
238 { }
239 static inline void audit_log_n_string(struct audit_buffer *ab,
240 const char *buf, size_t n)
241 { }
242 static inline void audit_log_n_untrustedstring(struct audit_buffer *ab,
243 const char *string, size_t n)
244 { }
245 static inline void audit_log_untrustedstring(struct audit_buffer *ab,
246 const char *string)
247 { }
248 static inline void audit_log_d_path(struct audit_buffer *ab,
249 const char *prefix,
250 const struct path *path)
251 { }
252 static inline void audit_log_key(struct audit_buffer *ab, char *key)
253 { }
254 static inline void audit_log_path_denied(int type, const char *operation)
255 { }
256 static inline int audit_log_task_context(struct audit_buffer *ab)
257 {
258 return 0;
259 }
260 static inline void audit_log_object_context(struct audit_buffer *ab,
261 struct lsmblob *blob);
> 262 { }
263 static inline void audit_log_task_info(struct audit_buffer *ab)
264 { }
265
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
9 months, 1 week