mailweb.openeuler.org
Manage this list

Keyboard Shortcuts

Thread View

  • j: Next unread message
  • k: Previous unread message
  • j a: Jump to all threads
  • j l: Jump to MailingList overview

Kernel

Threads by month
  • ----- 2025 -----
  • May
  • April
  • March
  • February
  • January
  • ----- 2024 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2023 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2022 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2021 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2020 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2019 -----
  • December
kernel@openeuler.org

  • 52 participants
  • 18283 discussions
[openeuler:OLK-5.10 2600/2600] arch/arm64/include/asm/cmpxchg.h:88:1: sparse: sparse: cast truncates bits from constant value (3fff becomes ff)
by kernel test robot 28 Dec '24

28 Dec '24
tree: https://gitee.com/openeuler/kernel.git OLK-5.10 head: 053a6b6f8e4c86200cdb20bc80c063c3bb119859 commit: 2cef14dac00fca28ba2c0492e70bb537cba83f4d [2600/2600] mm/pin_mem: add PG_hotreplace to mark pages need hotreplaced config: arm64-randconfig-r133-20241227 (https://download.01.org/0day-ci/archive/20241228/202412280149.2dV0pFCu-lkp@…) compiler: aarch64-linux-gcc (GCC) 14.2.0 reproduce: (https://download.01.org/0day-ci/archive/20241228/202412280149.2dV0pFCu-lkp@…) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp(a)intel.com> | Closes: https://lore.kernel.org/oe-kbuild-all/202412280149.2dV0pFCu-lkp@intel.com/ sparse warnings: (new ones prefixed by >>) mm/memory.c:5306:22: sparse: sparse: cast removes address space '__user' of expression mm/memory.c:273:46: sparse: sparse: self-comparison always evaluates to false mm/memory.c:307:46: sparse: sparse: self-comparison always evaluates to false mm/memory.c:943:17: sparse: sparse: context imbalance in 'copy_pte_range' - different lock contexts for basic block mm/memory.c:1099:61: sparse: sparse: self-comparison always evaluates to false mm/memory.c:1123:61: sparse: sparse: self-comparison always evaluates to false mm/memory.c:1635:16: sparse: sparse: context imbalance in '__get_locked_pte' - different lock contexts for basic block mm/memory.c:1684:9: sparse: sparse: context imbalance in 'insert_page' - different lock contexts for basic block mm/memory.c:2186:17: sparse: sparse: context imbalance in 'remap_pte_range' - different lock contexts for basic block mm/memory.c:2243:46: sparse: sparse: self-comparison always evaluates to false mm/memory.c:2265:46: sparse: sparse: self-comparison always evaluates to false mm/memory.c:2431:17: sparse: sparse: context imbalance in 'apply_to_pte_range' - unexpected unlock mm/memory.c:2504:46: sparse: sparse: self-comparison always evaluates to false mm/memory.c:2540:46: sparse: sparse: self-comparison always evaluates to false mm/memory.c:2719:17: sparse: sparse: context imbalance in 'wp_page_copy' - unexpected unlock mm/memory.c: note: in included file (through arch/arm64/include/asm/atomic.h, include/linux/atomic.h, include/asm-generic/bitops/atomic.h, ...): >> arch/arm64/include/asm/cmpxchg.h:88:1: sparse: sparse: cast truncates bits from constant value (3fff becomes ff) >> arch/arm64/include/asm/cmpxchg.h:88:1: sparse: sparse: cast truncates bits from constant value (3fff becomes ff) mm/memory.c:3064:17: sparse: sparse: context imbalance in 'wp_pfn_shared' - unexpected unlock >> arch/arm64/include/asm/cmpxchg.h:88:1: sparse: sparse: cast truncates bits from constant value (3fff becomes ff) >> arch/arm64/include/asm/cmpxchg.h:88:1: sparse: sparse: cast truncates bits from constant value (3fff becomes ff) mm/memory.c:3127:19: sparse: sparse: context imbalance in 'do_wp_page' - different lock contexts for basic block mm/memory.c:3755:19: sparse: sparse: context imbalance in 'pte_alloc_one_map' - different lock contexts for basic block mm/memory.c:3982:17: sparse: sparse: context imbalance in 'finish_fault' - unexpected unlock mm/memory.c:4091:9: sparse: sparse: context imbalance in 'do_fault_around' - unexpected unlock mm/memory.c:4814:5: sparse: sparse: context imbalance in 'follow_invalidate_pte' - different lock contexts for basic block mm/memory.c:4935:9: sparse: sparse: context imbalance in 'follow_pfn' - unexpected unlock -- mm/migrate.c: note: in included file (through arch/arm64/include/asm/atomic.h, include/linux/atomic.h, include/asm-generic/bitops/atomic.h, ...): >> arch/arm64/include/asm/cmpxchg.h:88:1: sparse: sparse: cast truncates bits from constant value (3fff becomes ff) vim +88 arch/arm64/include/asm/cmpxchg.h 10b663aef1c2479 Catalin Marinas 2012-03-05 84 305d454aaa292be Will Deacon 2015-10-08 85 __XCHG_GEN() 305d454aaa292be Will Deacon 2015-10-08 86 __XCHG_GEN(_acq) 305d454aaa292be Will Deacon 2015-10-08 87 __XCHG_GEN(_rel) 305d454aaa292be Will Deacon 2015-10-08 @88 __XCHG_GEN(_mb) 305d454aaa292be Will Deacon 2015-10-08 89 :::::: The code at line 88 was first introduced by commit :::::: 305d454aaa292be3a09a9d674e6c35f5b4249a13 arm64: atomics: implement native {relaxed, acquire, release} atomics :::::: TO: Will Deacon <will.deacon(a)arm.com> :::::: CC: Catalin Marinas <catalin.marinas(a)arm.com> -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki
1 0
0 0
[openeuler:openEuler-1.0-LTS 1355/1355] kernel/ktask.c:80:5: sparse: sparse: symbol 'ktask_max_threads' was not declared. Should it be static?
by kernel test robot 28 Dec '24

28 Dec '24
tree: https://gitee.com/openeuler/kernel.git openEuler-1.0-LTS head: a8a9daf97ebc8e303e039402fe784e7bd4e5a9bb commit: c48676ef6b6f9cb8497d6264ae9ff71b87630337 [1355/1355] ktask: multithread CPU-intensive kernel work config: arm64-randconfig-r133-20241227 (https://download.01.org/0day-ci/archive/20241228/202412280123.7Ss8XbOc-lkp@…) compiler: aarch64-linux-gcc (GCC) 14.2.0 reproduce: (https://download.01.org/0day-ci/archive/20241228/202412280123.7Ss8XbOc-lkp@…) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp(a)intel.com> | Closes: https://lore.kernel.org/oe-kbuild-all/202412280123.7Ss8XbOc-lkp@intel.com/ sparse warnings: (new ones prefixed by >>) >> kernel/ktask.c:80:5: sparse: sparse: symbol 'ktask_max_threads' was not declared. Should it be static? vim +/ktask_max_threads +80 kernel/ktask.c 78 79 /* Maximum number of threads for a single task. */ > 80 int ktask_max_threads = KTASK_DEFAULT_MAX_THREADS; 81 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki
1 0
0 0
[openeuler:OLK-6.6 1667/1667] fs/proc/etmem_scan.c:737:16: sparse: sparse: cast removes address space '__rcu' of expression
by kernel test robot 28 Dec '24

28 Dec '24
tree: https://gitee.com/openeuler/kernel.git OLK-6.6 head: e53a23ef21aa9859c864e7c4bb6ecde5269f54b6 commit: 5d3b64fd78b80ec49285f2186e7b5ac5850f76e4 [1667/1667] etmem: add etmem scan feature config: arm64-randconfig-r111-20241227 (https://download.01.org/0day-ci/archive/20241228/202412280138.9neQNRRd-lkp@…) compiler: aarch64-linux-gcc (GCC) 14.2.0 reproduce: (https://download.01.org/0day-ci/archive/20241228/202412280138.9neQNRRd-lkp@…) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp(a)intel.com> | Closes: https://lore.kernel.org/oe-kbuild-all/202412280138.9neQNRRd-lkp@intel.com/ sparse warnings: (new ones prefixed by >>) fs/proc/etmem_scan.c:269:18: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected void [noderef] __user *buf @@ got void *buf @@ fs/proc/etmem_scan.c:269:18: sparse: expected void [noderef] __user *buf fs/proc/etmem_scan.c:269:18: sparse: got void *buf >> fs/proc/etmem_scan.c:737:16: sparse: sparse: cast removes address space '__rcu' of expression fs/proc/etmem_scan.c:1361:40: sparse: sparse: incorrect type in assignment (incompatible argument 2 (different address spaces)) @@ expected long ( *extern [addressable] [assigned] [toplevel] read )( ... ) @@ got long ( * )( ... ) @@ fs/proc/etmem_scan.c:1361:40: sparse: expected long ( *extern [addressable] [assigned] [toplevel] read )( ... ) fs/proc/etmem_scan.c:1361:40: sparse: got long ( * )( ... ) fs/proc/etmem_scan.c:697:46: sparse: sparse: self-comparison always evaluates to false fs/proc/etmem_scan.c:720:46: sparse: sparse: self-comparison always evaluates to false vim +/__rcu +737 fs/proc/etmem_scan.c 724 725 static int arm_page_range(struct page_idle_ctrl *pic, 726 unsigned long addr, 727 unsigned long end) 728 { 729 pgd_t *pgd; 730 unsigned long next; 731 struct kvm *kvm = pic->kvm; 732 int err = 0; 733 734 WARN_ON(addr >= end); 735 736 read_lock(&pic->kvm->mmu_lock); > 737 pgd = (pgd_t *)kvm->arch.mmu.pgt->pgd + pgd_index(addr) * PTRS_PER_PTE; 738 read_unlock(&pic->kvm->mmu_lock); 739 740 local_irq_disable(); 741 do { 742 next = pgd_addr_end(addr, end); 743 if (!pgd_present(*pgd)) { 744 set_restart_gpa(next, "PGD_HOLE"); 745 continue; 746 } 747 748 err = arm_p4d_range(pic, pgd, addr, next); 749 if (err) 750 break; 751 } while (pgd++, addr = next, addr != end); 752 753 local_irq_enable(); 754 return err; 755 } 756 #endif 757 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki
1 0
0 0
[openeuler:openEuler-1.0-LTS 1355/1355] drivers/gpu/drm/msm/adreno/a6xx_gmu.c:1175:23: sparse: sparse: incorrect type in assignment (different address spaces)
by kernel test robot 27 Dec '24

27 Dec '24
tree: https://gitee.com/openeuler/kernel.git openEuler-1.0-LTS head: a8a9daf97ebc8e303e039402fe784e7bd4e5a9bb commit: 4b565ca5a2cbbbb6345e8789da89c193b6b00e5a [1355/1355] drm/msm: Add A6XX device support config: arm64-randconfig-r133-20241227 (https://download.01.org/0day-ci/archive/20241227/202412272355.CAWxIepM-lkp@…) compiler: aarch64-linux-gcc (GCC) 14.2.0 reproduce: (https://download.01.org/0day-ci/archive/20241227/202412272355.CAWxIepM-lkp@…) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp(a)intel.com> | Closes: https://lore.kernel.org/oe-kbuild-all/202412272355.CAWxIepM-lkp@intel.com/ sparse warnings: (new ones prefixed by >>) drivers/gpu/drm/msm/adreno/a6xx_gmu.c:601:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:601:9: sparse: expected void const volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.c:601:9: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.c:601:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:601:9: sparse: expected void const volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.c:601:9: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.c:601:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:601:9: sparse: expected void const volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.c:601:9: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.c:601:9: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.c:601:9: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.c:603:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:603:9: sparse: expected void const volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.c:603:9: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.c:603:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:603:9: sparse: expected void const volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.c:603:9: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.c:603:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:603:9: sparse: expected void const volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.c:603:9: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.c:603:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:603:9: sparse: expected void const volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.c:603:9: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.c:603:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:603:9: sparse: expected void const volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.c:603:9: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.c:603:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:603:9: sparse: expected void const volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.c:603:9: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.c:603:9: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.c:603:9: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.c:603:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:603:9: sparse: expected void const volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.c:603:9: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.c:603:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:603:9: sparse: expected void const volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.c:603:9: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.c:603:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:603:9: sparse: expected void const volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.c:603:9: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.c:603:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:603:9: sparse: expected void const volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.c:603:9: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.c:603:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:603:9: sparse: expected void const volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.c:603:9: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.c:603:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:603:9: sparse: expected void const volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.c:603:9: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.c:603:9: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.c:603:9: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.c:713:23: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:713:23: sparse: expected void const volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.c:713:23: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.c:713:23: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:713:23: sparse: expected void const volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.c:713:23: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.c:713:23: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:713:23: sparse: expected void const volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.c:713:23: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.c:713:23: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:713:23: sparse: expected void const volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.c:713:23: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.c:713:23: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:713:23: sparse: expected void const volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.c:713:23: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.c:713:23: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:713:23: sparse: expected void const volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.c:713:23: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.c:713:23: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.c:713:23: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.c:713:23: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:713:23: sparse: expected void const volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.c:713:23: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.c:713:23: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:713:23: sparse: expected void const volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.c:713:23: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.c:713:23: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:713:23: sparse: expected void const volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.c:713:23: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.c:713:23: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:713:23: sparse: expected void const volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.c:713:23: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.c:713:23: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:713:23: sparse: expected void const volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.c:713:23: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.c:713:23: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:713:23: sparse: expected void const volatile [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.c:713:23: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.c:713:23: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.c:713:23: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.c:1083:31: sparse: sparse: incorrect type in return expression (different address spaces) @@ expected void [noderef] __iomem * @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:1083:31: sparse: expected void [noderef] __iomem * drivers/gpu/drm/msm/adreno/a6xx_gmu.c:1083:31: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.c:1089:31: sparse: sparse: incorrect type in return expression (different address spaces) @@ expected void [noderef] __iomem * @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:1089:31: sparse: expected void [noderef] __iomem * drivers/gpu/drm/msm/adreno/a6xx_gmu.c:1089:31: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.c:1172:19: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected void *[noderef] mmio @@ got void [noderef] __iomem * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:1172:19: sparse: expected void *[noderef] mmio drivers/gpu/drm/msm/adreno/a6xx_gmu.c:1172:19: sparse: got void [noderef] __iomem * >> drivers/gpu/drm/msm/adreno/a6xx_gmu.c:1175:23: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected void *[noderef] pdc_mmio @@ got void [noderef] __iomem * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.c:1175:23: sparse: expected void *[noderef] pdc_mmio drivers/gpu/drm/msm/adreno/a6xx_gmu.c:1175:23: sparse: got void [noderef] __iomem * drivers/gpu/drm/msm/adreno/a6xx_gmu.c: note: in included file (through drivers/gpu/drm/msm/adreno/a6xx_gpu.h): drivers/gpu/drm/msm/adreno/a6xx_gmu.h:84:36: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.h:84:36: sparse: expected void const [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.h:84:36: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.h:84:26: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.h:89:44: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.h:89:44: sparse: expected void [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.h:89:44: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.h:89:34: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.h:84:36: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.h:84:36: sparse: expected void const [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.h:84:36: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.h:84:26: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.h:84:36: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.h:84:36: sparse: expected void const [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.h:84:36: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.h:84:26: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.h:89:44: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.h:89:44: sparse: expected void [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.h:89:44: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.h:89:34: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.h:84:36: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.h:84:36: sparse: expected void const [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.h:84:36: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.h:84:26: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.h:89:44: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.h:89:44: sparse: expected void [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.h:89:44: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.h:89:34: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.h:89:44: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.h:89:44: sparse: expected void [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.h:89:44: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.h:89:34: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.h:89:44: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.h:89:44: sparse: expected void [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.h:89:44: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.h:89:34: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.h:84:36: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.h:84:36: sparse: expected void const [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.h:84:36: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.h:84:26: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.h:84:36: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.h:84:36: sparse: expected void const [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.h:84:36: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.h:84:26: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.h:89:44: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.h:89:44: sparse: expected void [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.h:89:44: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.h:89:34: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.h:89:44: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.h:89:44: sparse: expected void [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.h:89:44: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.h:89:34: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.c:124:15: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.c:124:15: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.c:124:15: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.c:124:15: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.c:124:15: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.c:124:15: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.h:84:36: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.h:84:36: sparse: expected void const [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.h:84:36: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.h:84:26: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.h:89:44: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.h:89:44: sparse: expected void [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.h:89:44: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.h:89:34: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.h:89:44: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.h:89:44: sparse: expected void [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.h:89:44: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.h:89:34: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.c:143:15: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.c:143:15: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.c:143:15: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.c:143:15: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.c:143:15: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.c:143:15: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.h:89:44: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.h:89:44: sparse: expected void [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.h:89:44: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.h:89:34: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.c:183:15: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.c:183:15: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.c:183:15: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.c:183:15: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.c:183:15: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.c:183:15: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.h:84:36: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.h:84:36: sparse: expected void const [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.h:84:36: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.h:84:26: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.h:89:44: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.h:89:44: sparse: expected void [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.h:89:44: sparse: got void * drivers/gpu/drm/msm/adreno/a6xx_gmu.h:89:34: sparse: sparse: dereference of noderef expression drivers/gpu/drm/msm/adreno/a6xx_gmu.h:89:44: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got void * @@ drivers/gpu/drm/msm/adreno/a6xx_gmu.h:89:44: sparse: expected void [noderef] __iomem *addr drivers/gpu/drm/msm/adreno/a6xx_gmu.h:89:44: sparse: got void * vim +1175 drivers/gpu/drm/msm/adreno/a6xx_gmu.c 1131 1132 int a6xx_gmu_probe(struct a6xx_gpu *a6xx_gpu, struct device_node *node) 1133 { 1134 struct a6xx_gmu *gmu = &a6xx_gpu->gmu; 1135 struct platform_device *pdev = of_find_device_by_node(node); 1136 int ret; 1137 1138 if (!pdev) 1139 return -ENODEV; 1140 1141 gmu->dev = &pdev->dev; 1142 1143 of_dma_configure(gmu->dev, node, false); 1144 1145 /* Fow now, don't do anything fancy until we get our feet under us */ 1146 gmu->idle_level = GMU_IDLE_STATE_ACTIVE; 1147 1148 pm_runtime_enable(gmu->dev); 1149 gmu->gx = devm_regulator_get(gmu->dev, "vdd"); 1150 1151 /* Get the list of clocks */ 1152 ret = a6xx_gmu_clocks_probe(gmu); 1153 if (ret) 1154 return ret; 1155 1156 /* Set up the IOMMU context bank */ 1157 ret = a6xx_gmu_memory_probe(gmu); 1158 if (ret) 1159 return ret; 1160 1161 /* Allocate memory for for the HFI queues */ 1162 gmu->hfi = a6xx_gmu_memory_alloc(gmu, SZ_16K); 1163 if (IS_ERR(gmu->hfi)) 1164 goto err; 1165 1166 /* Allocate memory for the GMU debug region */ 1167 gmu->debug = a6xx_gmu_memory_alloc(gmu, SZ_16K); 1168 if (IS_ERR(gmu->debug)) 1169 goto err; 1170 1171 /* Map the GMU registers */ 1172 gmu->mmio = a6xx_gmu_get_mmio(pdev, "gmu"); 1173 1174 /* Map the GPU power domain controller registers */ > 1175 gmu->pdc_mmio = a6xx_gmu_get_mmio(pdev, "gmu_pdc"); -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki
1 0
0 0
[openeuler:OLK-5.10 2589/2589] mm/page_alloc.o: warning: objtool: __drain_all_pages()+0x235: unreachable instruction
by kernel test robot 27 Dec '24

27 Dec '24
tree: https://gitee.com/openeuler/kernel.git OLK-5.10 head: 053a6b6f8e4c86200cdb20bc80c063c3bb119859 commit: e037ee4a8deaff7c579618c0aba1f066d6d14b11 [2589/2589] mm, page_alloc: disable pcplists during memory offline config: x86_64-buildonly-randconfig-002-20241218 (https://download.01.org/0day-ci/archive/20241227/202412272117.9LTbAHTs-lkp@…) compiler: clang version 19.1.3 (https://github.com/llvm/llvm-project ab51eccf88f5321e7c60591c5546b254b6afab99) reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20241227/202412272117.9LTbAHTs-lkp@…) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp(a)intel.com> | Closes: https://lore.kernel.org/oe-kbuild-all/202412272117.9LTbAHTs-lkp@intel.com/ All warnings (new ones prefixed by >>): >> mm/page_alloc.o: warning: objtool: __drain_all_pages()+0x235: unreachable instruction -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki
1 0
0 0
[PATCH OLK-6.6] svcrdma: Address an integer overflow
by Liu Jian 27 Dec '24

27 Dec '24
From: Chuck Lever <chuck.lever(a)oracle.com> stable inclusion from stable-v6.6.64 commit 838dd342962cef4c320632a5af48d3c31f2f9877 category: bugfix bugzilla: https://gitee.com/src-openeuler/kernel/issues/IBDHGF CVE: CVE-2024-53151 Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id… ------------------------------------------------- [ Upstream commit 3c63d8946e578663b868cb9912dac616ea68bfd0 ] Dan Carpenter reports: > Commit 78147ca8b4a9 ("svcrdma: Add a "parsed chunk list" data > structure") from Jun 22, 2020 (linux-next), leads to the following > Smatch static checker warning: > > net/sunrpc/xprtrdma/svc_rdma_recvfrom.c:498 xdr_check_write_chunk() > warn: potential user controlled sizeof overflow 'segcount * 4 * 4' > > net/sunrpc/xprtrdma/svc_rdma_recvfrom.c > 488 static bool xdr_check_write_chunk(struct svc_rdma_recv_ctxt *rctxt) > 489 { > 490 u32 segcount; > 491 __be32 *p; > 492 > 493 if (xdr_stream_decode_u32(&rctxt->rc_stream, &segcount)) > ^^^^^^^^ > > 494 return false; > 495 > 496 /* A bogus segcount causes this buffer overflow check to fail. */ > 497 p = xdr_inline_decode(&rctxt->rc_stream, > --> 498 segcount * rpcrdma_segment_maxsz * sizeof(*p)); > > > segcount is an untrusted u32. On 32bit systems anything >= SIZE_MAX / 16 will > have an integer overflow and some those values will be accepted by > xdr_inline_decode(). Reported-by: Dan Carpenter <dan.carpenter(a)linaro.org> Fixes: 78147ca8b4a9 ("svcrdma: Add a "parsed chunk list" data structure") Reviewed-by: Jeff Layton <jlayton(a)kernel.org> Signed-off-by: Chuck Lever <chuck.lever(a)oracle.com> Signed-off-by: Sasha Levin <sashal(a)kernel.org> Signed-off-by: Liu Jian <liujian56(a)huawei.com> --- net/sunrpc/xprtrdma/svc_rdma_recvfrom.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c b/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c index 3b05f90a3e50d..9cec7bcb8a976 100644 --- a/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c +++ b/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c @@ -478,7 +478,13 @@ static bool xdr_check_write_chunk(struct svc_rdma_recv_ctxt *rctxt) if (xdr_stream_decode_u32(&rctxt->rc_stream, &segcount)) return false; - /* A bogus segcount causes this buffer overflow check to fail. */ + /* Before trusting the segcount value enough to use it in + * a computation, perform a simple range check. This is an + * arbitrary but sensible limit (ie, not architectural). + */ + if (unlikely(segcount > RPCSVC_MAXPAGES)) + return false; + p = xdr_inline_decode(&rctxt->rc_stream, segcount * rpcrdma_segment_maxsz * sizeof(*p)); return p != NULL; -- 2.34.1
2 1
0 0
[PATCH openEuler-1.0-LTS 0/2] mm: Backport mainline patch
by Liu Shixin 27 Dec '24

27 Dec '24
Kemeng Shi (1): mm/compaction: correctly return failure with bogus compound_order in strict mode Xueshi Hu (1): mm/hugetlb: fix nodes huge page allocation when there are surplus pages mm/compaction.c | 6 +++--- mm/hugetlb.c | 4 +++- 2 files changed, 6 insertions(+), 4 deletions(-) -- 2.34.1
2 3
0 0
[PATCH OLK-6.6] LeapIOraid: Fix hiding ugood disk problem
by haodongdong 27 Dec '24

27 Dec '24
LeapIO inclusion category: feature bugzilla: https://gitee.com/openeuler/kernel/issues/IBE7VU ------------------------------------------ fix hiding ugood disk problem. fix "The address of local variable 'mpi_request' might be accessed at non-zero index in function leapioraid_base_send_ioc_init" Signed-off-by: haodongdong <doubled(a)leap-io.com> --- drivers/scsi/leapioraid/leapioraid_app.c | 1 - drivers/scsi/leapioraid/leapioraid_func.c | 15 ++++++++------- drivers/scsi/leapioraid/leapioraid_func.h | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/drivers/scsi/leapioraid/leapioraid_app.c b/drivers/scsi/leapioraid/leapioraid_app.c index 9d699721d1be7..6e7f6bf877782 100644 --- a/drivers/scsi/leapioraid/leapioraid_app.c +++ b/drivers/scsi/leapioraid/leapioraid_app.c @@ -53,7 +53,6 @@ #include <linux/poll.h> #include <linux/io.h> #include <linux/uaccess.h> -#include "leapioraid_func.h" #ifdef __KERNEL__ #include <linux/miscdevice.h> diff --git a/drivers/scsi/leapioraid/leapioraid_func.c b/drivers/scsi/leapioraid/leapioraid_func.c index 2d80a86da007d..97e0f893ab4c5 100644 --- a/drivers/scsi/leapioraid/leapioraid_func.c +++ b/drivers/scsi/leapioraid/leapioraid_func.c @@ -4746,14 +4746,11 @@ leapioraid_base_send_ioc_init(struct LEAPIORAID_ADAPTER *ioc) current_time = ktime_get_real(); mpi_request.TimeStamp = cpu_to_le64(ktime_to_ms(current_time)); if (ioc->logging_level & LEAPIORAID_DEBUG_INIT) { - __le32 *mfp; - int i; - mfp = (__le32 *) &mpi_request; pr_info("%s \toffset:data\n", ioc->name); - for (i = 0; i < sizeof(struct LeapioraidIOCInitReq_t) / 4; i++) - pr_info("%s \t[0x%02x]:%08x\n", - ioc->name, i * 4, le32_to_cpu(mfp[i])); + leapioraid_debug_dump_mf(&mpi_request, + sizeof(struct LeapioraidIOCInitReq_t) / 4); + } r = leapioraid_base_handshake_req_reply_wait(ioc, sizeof @@ -7022,7 +7019,11 @@ leapioraid_config_get_volume_handle(struct LEAPIORAID_ADAPTER *ioc, r = -1; ioc_status = le16_to_cpu(mpi_reply.IOCStatus) & LEAPIORAID_IOCSTATUS_MASK; - if (ioc_status != LEAPIORAID_IOCSTATUS_SUCCESS) + if (ioc_status == LEAPIORAID_IOCSTATUS_CONFIG_INVALID_PAGE) { + *volume_handle = 0; + r = 0; + goto out; + } else if (ioc_status != LEAPIORAID_IOCSTATUS_SUCCESS) goto out; for (i = 0; i < config_page->NumElements; i++) { element_type = diff --git a/drivers/scsi/leapioraid/leapioraid_func.h b/drivers/scsi/leapioraid/leapioraid_func.h index 9cf8206ccb3ce..8ca8fc0a6f262 100644 --- a/drivers/scsi/leapioraid/leapioraid_func.h +++ b/drivers/scsi/leapioraid/leapioraid_func.h @@ -103,7 +103,7 @@ #define LEAPIORAID_KDUMP_SCSI_IO_DEPTH (64) #define LEAPIORAID_RAID_MAX_SECTORS (128) -#define LEAPIORAID_NAME_LENGTH (32) +#define LEAPIORAID_NAME_LENGTH (48) #define LEAPIORAID_DRIVER_NAME_LENGTH (24) #define LEAPIORAID_STRING_LENGTH (64) -- 2.25.1
2 1
0 0
[openeuler:OLK-5.10 2589/2589] block/blk-mq.o: warning: objtool: blk_mq_unquiesce_queue()+0xae: unreachable instruction
by kernel test robot 27 Dec '24

27 Dec '24
tree: https://gitee.com/openeuler/kernel.git OLK-5.10 head: 951151c7a27bc2a9436c2c49ae12510c82137ec1 commit: ed1ab377e8ea69c014a86efe7059231138233717 [2589/2589] blk-mq: support concurrent queue quiesce/unquiesce config: x86_64-buildonly-randconfig-002-20241218 (https://download.01.org/0day-ci/archive/20241227/202412271628.GxDQTcxv-lkp@…) compiler: clang version 19.1.3 (https://github.com/llvm/llvm-project ab51eccf88f5321e7c60591c5546b254b6afab99) reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20241227/202412271628.GxDQTcxv-lkp@…) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp(a)intel.com> | Closes: https://lore.kernel.org/oe-kbuild-all/202412271628.GxDQTcxv-lkp@intel.com/ All warnings (new ones prefixed by >>): >> block/blk-mq.o: warning: objtool: blk_mq_unquiesce_queue()+0xae: unreachable instruction -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki
1 0
0 0
[PATCH openEuler-1.0-LTS] mm: shmem: don't truncate page if memory failure happens
by Tong Tiangen 27 Dec '24

27 Dec '24
From: Yang Shi <shy828301(a)gmail.com> stable inclusion from stable-v5.15.80 commit 94fa250ea55cd4eea8049011ea4045343547ebd8 category: bugfix bugzilla: https://gitee.com/openeuler/kernel/issues/IBE6C6 CVE: NA Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id… -------------------------------- commit a7605426666196c5a460dd3de6f8dac1d3c21f00 upstream. The current behavior of memory failure is to truncate the page cache regardless of dirty or clean. If the page is dirty the later access will get the obsolete data from disk without any notification to the users. This may cause silent data loss. It is even worse for shmem since shmem is in-memory filesystem, truncating page cache means discarding data blocks. The later read would return all zero. The right approach is to keep the corrupted page in page cache, any later access would return error for syscalls or SIGBUS for page fault, until the file is truncated, hole punched or removed. The regular storage backed filesystems would be more complicated so this patch is focused on shmem. This also unblock the support for soft offlining shmem THP. [akpm(a)linux-foundation.org: coding style fixes] [arnd(a)arndb.de: fix uninitialized variable use in me_pagecache_clean()] Link: https://lkml.kernel.org/r/20211022064748.4173718-1-arnd@kernel.org [Fix invalid pointer dereference in shmem_read_mapping_page_gfp() with a slight different implementation from what Ajay Garg <ajaygargnsit(a)gmail.com> and Muchun Song <songmuchun(a)bytedance.com> proposed and reworked the error handling of shmem_write_begin() suggested by Linus] Link: https://lore.kernel.org/linux-mm/20211111084617.6746-1-ajaygargnsit@gmail.c… Link: https://lkml.kernel.org/r/20211020210755.23964-6-shy828301@gmail.com Link: https://lkml.kernel.org/r/20211116193247.21102-1-shy828301@gmail.com Signed-off-by: Yang Shi <shy828301(a)gmail.com> Signed-off-by: Arnd Bergmann <arnd(a)arndb.de> Cc: Hugh Dickins <hughd(a)google.com> Cc: Kirill A. Shutemov <kirill.shutemov(a)linux.intel.com> Cc: Matthew Wilcox <willy(a)infradead.org> Cc: Naoya Horiguchi <naoya.horiguchi(a)nec.com> Cc: Oscar Salvador <osalvador(a)suse.de> Cc: Peter Xu <peterx(a)redhat.com> Cc: Ajay Garg <ajaygargnsit(a)gmail.com> Cc: Muchun Song <songmuchun(a)bytedance.com> Cc: Andy Lavr <andy.lavr(a)gmail.com> Signed-off-by: Andrew Morton <akpm(a)linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds(a)linux-foundation.org> Cc: Naoya Horiguchi <naoya.horiguchi(a)linux.dev> Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org> Conflicts: mm/memory-failure.c mm/shmem.c mm/userfaultfd.c [context conflict and userfaultfd do not merge 153132571f02("userfaultfd/ shmem: support UFFDIO_CONTINUE for shmem")] Signed-off-by: Tong Tiangen <tongtiangen(a)huawei.com> --- mm/memory-failure.c | 14 ++++++++++--- mm/shmem.c | 51 +++++++++++++++++++++++++++++++++++++++------ 2 files changed, 56 insertions(+), 9 deletions(-) diff --git a/mm/memory-failure.c b/mm/memory-failure.c index 8924d7d9bffa..22a63879a3d5 100644 --- a/mm/memory-failure.c +++ b/mm/memory-failure.c @@ -59,6 +59,7 @@ #include <linux/kfifo.h> #include <linux/ratelimit.h> #include <linux/page-isolation.h> +#include <linux/shmem_fs.h> #include "internal.h" #include "ras/ras_event.h" @@ -715,6 +716,7 @@ static int me_pagecache_clean(struct page_state *ps, struct page *p) { int ret; struct address_space *mapping; + bool extra_pins; delete_from_lru_cache(p); @@ -743,18 +745,24 @@ static int me_pagecache_clean(struct page_state *ps, struct page *p) goto out; } + /* + * The shmem page is kept in page cache instead of truncating + * so is expected to have an extra refcount after error-handling. + */ + extra_pins = shmem_mapping(mapping); + /* * Truncation is a bit tricky. Enable it per file system for now. * * Open: to take i_mutex or not for this? Right now we don't. */ ret = truncate_error_page(p, page_to_pfn(p), mapping); + if (has_extra_refcount(ps, p, extra_pins)) + ret = MF_FAILED; + out: unlock_page(p); - if (has_extra_refcount(ps, p, false)) - ret = MF_FAILED; - return ret; } diff --git a/mm/shmem.c b/mm/shmem.c index e300395fe308..e4649747a2e6 100644 --- a/mm/shmem.c +++ b/mm/shmem.c @@ -2565,6 +2565,7 @@ shmem_write_begin(struct file *file, struct address_space *mapping, struct inode *inode = mapping->host; struct shmem_inode_info *info = SHMEM_I(inode); pgoff_t index = pos >> PAGE_SHIFT; + int ret = 0; /* i_mutex is held by caller */ if (unlikely(info->seals & (F_SEAL_WRITE | F_SEAL_GROW))) { @@ -2574,7 +2575,19 @@ shmem_write_begin(struct file *file, struct address_space *mapping, return -EPERM; } - return shmem_getpage(inode, index, pagep, SGP_WRITE); + ret = shmem_getpage(inode, index, pagep, SGP_WRITE); + + if (ret) + return ret; + + if (PageHWPoison(*pagep)) { + unlock_page(*pagep); + put_page(*pagep); + *pagep = NULL; + return -EIO; + } + + return 0; } static int @@ -2661,6 +2674,12 @@ static ssize_t shmem_file_read_iter(struct kiocb *iocb, struct iov_iter *to) if (sgp == SGP_CACHE) set_page_dirty(page); unlock_page(page); + + if (PageHWPoison(page)) { + put_page(page); + error = -EIO; + break; + } } /* @@ -3263,7 +3282,8 @@ static const char *shmem_get_link(struct dentry *dentry, page = find_get_page(inode->i_mapping, 0); if (!page) return ERR_PTR(-ECHILD); - if (!PageUptodate(page)) { + if (PageHWPoison(page) || + !PageUptodate(page)) { put_page(page); return ERR_PTR(-ECHILD); } @@ -3271,6 +3291,13 @@ static const char *shmem_get_link(struct dentry *dentry, error = shmem_getpage(inode, 0, &page, SGP_READ); if (error) return ERR_PTR(error); + if (!page) + return ERR_PTR(-ECHILD); + if (PageHWPoison(page)) { + unlock_page(page); + put_page(page); + return ERR_PTR(-ECHILD); + } unlock_page(page); } set_delayed_call(done, shmem_put_link, page); @@ -3832,6 +3859,13 @@ static void shmem_destroy_inodecache(void) kmem_cache_destroy(shmem_inode_cachep); } +/* Keep the page in page cache instead of truncating it */ +static int shmem_error_remove_page(struct address_space *mapping, + struct page *page) +{ + return 0; +} + static const struct address_space_operations shmem_aops = { .writepage = shmem_writepage, .set_page_dirty = __set_page_dirty_no_writeback, @@ -3842,7 +3876,7 @@ static const struct address_space_operations shmem_aops = { #ifdef CONFIG_MIGRATION .migratepage = migrate_page, #endif - .error_remove_page = generic_error_remove_page, + .error_remove_page = shmem_error_remove_page, }; static const struct file_operations shmem_file_operations = { @@ -4270,9 +4304,14 @@ struct page *shmem_read_mapping_page_gfp(struct address_space *mapping, error = shmem_getpage_gfp(inode, index, &page, SGP_CACHE, gfp, NULL, NULL, NULL); if (error) - page = ERR_PTR(error); - else - unlock_page(page); + return ERR_PTR(error); + + unlock_page(page); + if (PageHWPoison(page)) { + put_page(page); + return ERR_PTR(-EIO); + } + return page; #else /* -- 2.25.1
2 1
0 0
  • ← Newer
  • 1
  • ...
  • 256
  • 257
  • 258
  • 259
  • 260
  • 261
  • 262
  • ...
  • 1829
  • Older →

HyperKitty Powered by HyperKitty