All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: [nsaenz-rpi:pcplists-rcu-drain-v1 2/2] mm/page_alloc.c:3245:28: sparse: sparse: incorrect type in assignment (different address spaces)
Date: Sat, 05 Feb 2022 01:18:00 +0800	[thread overview]
Message-ID: <202202050150.PQssjWMS-lkp@intel.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 10716 bytes --]

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/nsaenz/linux-rpi.git pcplists-rcu-drain-v1
head:   01b58921eae8d67b3ad6b05e73c2a1dd7106ae28
commit: 01b58921eae8d67b3ad6b05e73c2a1dd7106ae28 [2/2] mm/page_alloc: Add remote draining support to per-cpu lists
config: h8300-randconfig-s032-20220201 (https://download.01.org/0day-ci/archive/20220205/202202050150.PQssjWMS-lkp(a)intel.com/config)
compiler: h8300-linux-gcc (GCC) 11.2.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # apt-get install sparse
        # sparse version: v0.6.4-dirty
        # https://git.kernel.org/pub/scm/linux/kernel/git/nsaenz/linux-rpi.git/commit/?id=01b58921eae8d67b3ad6b05e73c2a1dd7106ae28
        git remote add nsaenz-rpi https://git.kernel.org/pub/scm/linux/kernel/git/nsaenz/linux-rpi.git
        git fetch --no-tags nsaenz-rpi pcplists-rcu-drain-v1
        git checkout 01b58921eae8d67b3ad6b05e73c2a1dd7106ae28
        # save the config file to linux build tree
        mkdir build_dir
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=h8300 SHELL=/bin/bash

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


sparse warnings: (new ones prefixed by >>)
   mm/page_alloc.c:1475:30: sparse: sparse: incorrect type in assignment (different modifiers) @@     expected struct list_head *list @@     got struct list_head [noderef] * @@
   mm/page_alloc.c:1475:30: sparse:     expected struct list_head *list
   mm/page_alloc.c:1475:30: sparse:     got struct list_head [noderef] *
>> mm/page_alloc.c:3245:28: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct pcplists [noderef] *lp @@     got struct pcplists [noderef] __rcu * @@
   mm/page_alloc.c:3245:28: sparse:     expected struct pcplists [noderef] *lp
   mm/page_alloc.c:3245:28: sparse:     got struct pcplists [noderef] __rcu *
   mm/page_alloc.c:3250:36: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct pcplists [noderef] *lp @@     got struct pcplists [noderef] __rcu * @@
   mm/page_alloc.c:3250:36: sparse:     expected struct pcplists [noderef] *lp
   mm/page_alloc.c:3250:36: sparse:     got struct pcplists [noderef] __rcu *
   mm/page_alloc.c:3435:40: sparse: sparse: incorrect type in argument 2 (different modifiers) @@     expected struct list_head *head @@     got struct list_head [noderef] * @@
   mm/page_alloc.c:3435:40: sparse:     expected struct list_head *head
   mm/page_alloc.c:3435:40: sparse:     got struct list_head [noderef] *
   mm/page_alloc.c:3726:14: sparse: sparse: incorrect type in assignment (different modifiers) @@     expected struct list_head *list @@     got struct list_head [noderef] * @@
   mm/page_alloc.c:3726:14: sparse:     expected struct list_head *list
   mm/page_alloc.c:3726:14: sparse:     got struct list_head [noderef] *
   mm/page_alloc.c:3727:15: sparse: sparse: incorrect type in assignment (different modifiers) @@     expected int *count @@     got int [noderef] * @@
   mm/page_alloc.c:3727:15: sparse:     expected int *count
   mm/page_alloc.c:3727:15: sparse:     got int [noderef] *
   mm/page_alloc.c:5349:18: sparse: sparse: incorrect type in assignment (different modifiers) @@     expected struct list_head *pcp_list @@     got struct list_head [noderef] * @@
   mm/page_alloc.c:5349:18: sparse:     expected struct list_head *pcp_list
   mm/page_alloc.c:5349:18: sparse:     got struct list_head [noderef] *
   mm/page_alloc.c:5350:15: sparse: sparse: incorrect type in assignment (different modifiers) @@     expected int *count @@     got int [noderef] * @@
   mm/page_alloc.c:5350:15: sparse:     expected int *count
   mm/page_alloc.c:5350:15: sparse:     got int [noderef] *
   mm/page_alloc.c:5966:28: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct pcplists [noderef] *lp @@     got struct pcplists [noderef] __rcu * @@
   mm/page_alloc.c:5966:28: sparse:     expected struct pcplists [noderef] *lp
   mm/page_alloc.c:5966:28: sparse:     got struct pcplists [noderef] __rcu *
   mm/page_alloc.c:6064:28: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct pcplists [noderef] *lp @@     got struct pcplists [noderef] __rcu * @@
   mm/page_alloc.c:6064:28: sparse:     expected struct pcplists [noderef] *lp
   mm/page_alloc.c:6064:28: sparse:     got struct pcplists [noderef] __rcu *
>> mm/page_alloc.c:7020:17: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct pcplists [noderef] __rcu *lp @@     got struct pcplists [noderef] * @@
   mm/page_alloc.c:7020:17: sparse:     expected struct pcplists [noderef] __rcu *lp
   mm/page_alloc.c:7020:17: sparse:     got struct pcplists [noderef] *
>> mm/page_alloc.c:7024:47: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected struct list_head *list @@     got struct list_head [noderef] __rcu * @@
   mm/page_alloc.c:7024:47: sparse:     expected struct list_head *list
   mm/page_alloc.c:7024:47: sparse:     got struct list_head [noderef] __rcu *
   mm/page_alloc.c:7025:50: sparse: sparse: incorrect type in argument 1 (different modifiers) @@     expected struct list_head *list @@     got struct list_head [noderef] * @@
   mm/page_alloc.c:7025:50: sparse:     expected struct list_head *list
   mm/page_alloc.c:7025:50: sparse:     got struct list_head [noderef] *
   mm/page_alloc.c:1460:17: sparse: sparse: dereference of noderef expression
   mm/page_alloc.c:1515:9: sparse: sparse: dereference of noderef expression
   mm/page_alloc.c:3157:13: sparse: sparse: dereference of noderef expression
   mm/page_alloc.c:3158:42: sparse: sparse: dereference of noderef expression
   mm/page_alloc.c:3246:29: sparse: sparse: dereference of noderef expression
   mm/page_alloc.c:3251:37: sparse: sparse: dereference of noderef expression
   mm/page_alloc.c:3286:36: sparse: sparse: dereference of noderef expression
   mm/page_alloc.c:3293:25: sparse: sparse: dereference of noderef expression
   mm/page_alloc.c:3436:9: sparse: sparse: dereference of noderef expression
   mm/page_alloc.c:3438:13: sparse: sparse: dereference of noderef expression
   mm/page_alloc.c: note: in included file (through include/linux/mm.h):
   include/linux/gfp.h:368:27: sparse: sparse: restricted gfp_t degrades to integer
   include/linux/gfp.h:368:27: sparse: sparse: restricted gfp_t degrades to integer
   mm/page_alloc.c:5967:37: sparse: sparse: dereference of noderef expression
   mm/page_alloc.c:6065:37: sparse: sparse: dereference of noderef expression
   mm/page_alloc.c:6069:17: sparse: sparse: dereference of noderef expression

vim +3245 mm/page_alloc.c

  3194	
  3195	/*
  3196	 * The implementation of drain_all_pages(), exposing an extra parameter to
  3197	 * drain on all cpus.
  3198	 *
  3199	 * drain_all_pages() is optimized to only execute on cpus where pcplists are
  3200	 * not empty. The check for non-emptiness can however race with a free to
  3201	 * pcplist that has not yet increased the lp->count from 0 to 1. Callers
  3202	 * that need the guarantee that every CPU has drained can disable the
  3203	 * optimizing racy check.
  3204	 */
  3205	static void __drain_all_pages(struct zone *zone, bool force_all_cpus)
  3206	{
  3207		struct per_cpu_pages *pcp;
  3208		struct zone *z;
  3209		int cpu;
  3210	
  3211		/*
  3212		 * Allocate in the BSS so we won't require allocation in
  3213		 * direct reclaim path for CONFIG_CPUMASK_OFFSTACK=y
  3214		 */
  3215		static cpumask_t cpus_with_pcps;
  3216	
  3217		/*
  3218		 * Do not drain if one is already in progress unless it's specific to
  3219		 * a zone. Such callers are primarily CMA and memory hotplug and need
  3220		 * the drain to be complete when the call returns.
  3221		 */
  3222		if (unlikely(!mutex_trylock(&pcpu_drain_mutex))) {
  3223			if (!zone)
  3224				return;
  3225			mutex_lock(&pcpu_drain_mutex);
  3226		}
  3227	
  3228		/*
  3229		 * We don't care about racing with CPU hotplug event
  3230		 * as offline notification will cause the notified
  3231		 * cpu to drain that CPU pcps and on_each_cpu_mask
  3232		 * disables preemption as part of its processing
  3233		 */
  3234		for_each_online_cpu(cpu) {
  3235			bool has_pcps = false;
  3236			struct pcplists *lp;
  3237	
  3238			if (force_all_cpus) {
  3239				/*
  3240				 * The lp->count check is racy, some callers need a
  3241				 * guarantee that no cpu is missed.
  3242				 */
  3243				has_pcps = true;
  3244			} else if (zone) {
> 3245				lp = READ_ONCE(per_cpu_ptr(zone->per_cpu_pageset, cpu)->lp);
  3246				if (lp->count)
  3247					has_pcps = true;
  3248			} else {
  3249				for_each_populated_zone(z) {
  3250					lp = READ_ONCE(per_cpu_ptr(z->per_cpu_pageset, cpu)->lp);
  3251					if (lp->count) {
  3252						has_pcps = true;
  3253						break;
  3254					}
  3255				}
  3256			}
  3257	
  3258			if (has_pcps)
  3259				cpumask_set_cpu(cpu, &cpus_with_pcps);
  3260			else
  3261				cpumask_clear_cpu(cpu, &cpus_with_pcps);
  3262		}
  3263	
  3264		if (!force_all_cpus && cpumask_empty(&cpus_with_pcps))
  3265		       goto exit;
  3266	
  3267		for_each_cpu(cpu, &cpus_with_pcps) {
  3268		       for_each_populated_zone(z) {
  3269			       if (zone && zone != z)
  3270				       continue;
  3271	
  3272			       pcp = per_cpu_ptr(z->per_cpu_pageset, cpu);
  3273			       pcp->drain = rcu_replace_pointer(pcp->lp, pcp->drain,
  3274						       mutex_is_locked(&pcpu_drain_mutex));
  3275		       }
  3276		}
  3277	
  3278		synchronize_rcu();
  3279	
  3280		for_each_cpu(cpu, &cpus_with_pcps) {
  3281			for_each_populated_zone(z) {
  3282				unsigned long flags;
  3283				int count;
  3284	
  3285				pcp = per_cpu_ptr(z->per_cpu_pageset, cpu);
  3286				count = pcp->drain->count;
  3287				if (!count)
  3288				       continue;
  3289	
  3290				local_irq_save(flags);
  3291				free_pcppages_bulk(z, count, READ_ONCE(pcp->batch), pcp->drain);
  3292				local_irq_restore(flags);
  3293				VM_BUG_ON(pcp->drain->count);
  3294			}
  3295		}
  3296	
  3297	exit:
  3298		mutex_unlock(&pcpu_drain_mutex);
  3299	}
  3300	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: Nicolas Saenz Julienne <nsaenzju@redhat.com>
Cc: kbuild-all@lists.01.org, linux-kernel@vger.kernel.org
Subject: [nsaenz-rpi:pcplists-rcu-drain-v1 2/2] mm/page_alloc.c:3245:28: sparse: sparse: incorrect type in assignment (different address spaces)
Date: Sat, 5 Feb 2022 01:18:00 +0800	[thread overview]
Message-ID: <202202050150.PQssjWMS-lkp@intel.com> (raw)

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/nsaenz/linux-rpi.git pcplists-rcu-drain-v1
head:   01b58921eae8d67b3ad6b05e73c2a1dd7106ae28
commit: 01b58921eae8d67b3ad6b05e73c2a1dd7106ae28 [2/2] mm/page_alloc: Add remote draining support to per-cpu lists
config: h8300-randconfig-s032-20220201 (https://download.01.org/0day-ci/archive/20220205/202202050150.PQssjWMS-lkp@intel.com/config)
compiler: h8300-linux-gcc (GCC) 11.2.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # apt-get install sparse
        # sparse version: v0.6.4-dirty
        # https://git.kernel.org/pub/scm/linux/kernel/git/nsaenz/linux-rpi.git/commit/?id=01b58921eae8d67b3ad6b05e73c2a1dd7106ae28
        git remote add nsaenz-rpi https://git.kernel.org/pub/scm/linux/kernel/git/nsaenz/linux-rpi.git
        git fetch --no-tags nsaenz-rpi pcplists-rcu-drain-v1
        git checkout 01b58921eae8d67b3ad6b05e73c2a1dd7106ae28
        # save the config file to linux build tree
        mkdir build_dir
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=h8300 SHELL=/bin/bash

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


sparse warnings: (new ones prefixed by >>)
   mm/page_alloc.c:1475:30: sparse: sparse: incorrect type in assignment (different modifiers) @@     expected struct list_head *list @@     got struct list_head [noderef] * @@
   mm/page_alloc.c:1475:30: sparse:     expected struct list_head *list
   mm/page_alloc.c:1475:30: sparse:     got struct list_head [noderef] *
>> mm/page_alloc.c:3245:28: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct pcplists [noderef] *lp @@     got struct pcplists [noderef] __rcu * @@
   mm/page_alloc.c:3245:28: sparse:     expected struct pcplists [noderef] *lp
   mm/page_alloc.c:3245:28: sparse:     got struct pcplists [noderef] __rcu *
   mm/page_alloc.c:3250:36: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct pcplists [noderef] *lp @@     got struct pcplists [noderef] __rcu * @@
   mm/page_alloc.c:3250:36: sparse:     expected struct pcplists [noderef] *lp
   mm/page_alloc.c:3250:36: sparse:     got struct pcplists [noderef] __rcu *
   mm/page_alloc.c:3435:40: sparse: sparse: incorrect type in argument 2 (different modifiers) @@     expected struct list_head *head @@     got struct list_head [noderef] * @@
   mm/page_alloc.c:3435:40: sparse:     expected struct list_head *head
   mm/page_alloc.c:3435:40: sparse:     got struct list_head [noderef] *
   mm/page_alloc.c:3726:14: sparse: sparse: incorrect type in assignment (different modifiers) @@     expected struct list_head *list @@     got struct list_head [noderef] * @@
   mm/page_alloc.c:3726:14: sparse:     expected struct list_head *list
   mm/page_alloc.c:3726:14: sparse:     got struct list_head [noderef] *
   mm/page_alloc.c:3727:15: sparse: sparse: incorrect type in assignment (different modifiers) @@     expected int *count @@     got int [noderef] * @@
   mm/page_alloc.c:3727:15: sparse:     expected int *count
   mm/page_alloc.c:3727:15: sparse:     got int [noderef] *
   mm/page_alloc.c:5349:18: sparse: sparse: incorrect type in assignment (different modifiers) @@     expected struct list_head *pcp_list @@     got struct list_head [noderef] * @@
   mm/page_alloc.c:5349:18: sparse:     expected struct list_head *pcp_list
   mm/page_alloc.c:5349:18: sparse:     got struct list_head [noderef] *
   mm/page_alloc.c:5350:15: sparse: sparse: incorrect type in assignment (different modifiers) @@     expected int *count @@     got int [noderef] * @@
   mm/page_alloc.c:5350:15: sparse:     expected int *count
   mm/page_alloc.c:5350:15: sparse:     got int [noderef] *
   mm/page_alloc.c:5966:28: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct pcplists [noderef] *lp @@     got struct pcplists [noderef] __rcu * @@
   mm/page_alloc.c:5966:28: sparse:     expected struct pcplists [noderef] *lp
   mm/page_alloc.c:5966:28: sparse:     got struct pcplists [noderef] __rcu *
   mm/page_alloc.c:6064:28: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct pcplists [noderef] *lp @@     got struct pcplists [noderef] __rcu * @@
   mm/page_alloc.c:6064:28: sparse:     expected struct pcplists [noderef] *lp
   mm/page_alloc.c:6064:28: sparse:     got struct pcplists [noderef] __rcu *
>> mm/page_alloc.c:7020:17: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct pcplists [noderef] __rcu *lp @@     got struct pcplists [noderef] * @@
   mm/page_alloc.c:7020:17: sparse:     expected struct pcplists [noderef] __rcu *lp
   mm/page_alloc.c:7020:17: sparse:     got struct pcplists [noderef] *
>> mm/page_alloc.c:7024:47: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected struct list_head *list @@     got struct list_head [noderef] __rcu * @@
   mm/page_alloc.c:7024:47: sparse:     expected struct list_head *list
   mm/page_alloc.c:7024:47: sparse:     got struct list_head [noderef] __rcu *
   mm/page_alloc.c:7025:50: sparse: sparse: incorrect type in argument 1 (different modifiers) @@     expected struct list_head *list @@     got struct list_head [noderef] * @@
   mm/page_alloc.c:7025:50: sparse:     expected struct list_head *list
   mm/page_alloc.c:7025:50: sparse:     got struct list_head [noderef] *
   mm/page_alloc.c:1460:17: sparse: sparse: dereference of noderef expression
   mm/page_alloc.c:1515:9: sparse: sparse: dereference of noderef expression
   mm/page_alloc.c:3157:13: sparse: sparse: dereference of noderef expression
   mm/page_alloc.c:3158:42: sparse: sparse: dereference of noderef expression
   mm/page_alloc.c:3246:29: sparse: sparse: dereference of noderef expression
   mm/page_alloc.c:3251:37: sparse: sparse: dereference of noderef expression
   mm/page_alloc.c:3286:36: sparse: sparse: dereference of noderef expression
   mm/page_alloc.c:3293:25: sparse: sparse: dereference of noderef expression
   mm/page_alloc.c:3436:9: sparse: sparse: dereference of noderef expression
   mm/page_alloc.c:3438:13: sparse: sparse: dereference of noderef expression
   mm/page_alloc.c: note: in included file (through include/linux/mm.h):
   include/linux/gfp.h:368:27: sparse: sparse: restricted gfp_t degrades to integer
   include/linux/gfp.h:368:27: sparse: sparse: restricted gfp_t degrades to integer
   mm/page_alloc.c:5967:37: sparse: sparse: dereference of noderef expression
   mm/page_alloc.c:6065:37: sparse: sparse: dereference of noderef expression
   mm/page_alloc.c:6069:17: sparse: sparse: dereference of noderef expression

vim +3245 mm/page_alloc.c

  3194	
  3195	/*
  3196	 * The implementation of drain_all_pages(), exposing an extra parameter to
  3197	 * drain on all cpus.
  3198	 *
  3199	 * drain_all_pages() is optimized to only execute on cpus where pcplists are
  3200	 * not empty. The check for non-emptiness can however race with a free to
  3201	 * pcplist that has not yet increased the lp->count from 0 to 1. Callers
  3202	 * that need the guarantee that every CPU has drained can disable the
  3203	 * optimizing racy check.
  3204	 */
  3205	static void __drain_all_pages(struct zone *zone, bool force_all_cpus)
  3206	{
  3207		struct per_cpu_pages *pcp;
  3208		struct zone *z;
  3209		int cpu;
  3210	
  3211		/*
  3212		 * Allocate in the BSS so we won't require allocation in
  3213		 * direct reclaim path for CONFIG_CPUMASK_OFFSTACK=y
  3214		 */
  3215		static cpumask_t cpus_with_pcps;
  3216	
  3217		/*
  3218		 * Do not drain if one is already in progress unless it's specific to
  3219		 * a zone. Such callers are primarily CMA and memory hotplug and need
  3220		 * the drain to be complete when the call returns.
  3221		 */
  3222		if (unlikely(!mutex_trylock(&pcpu_drain_mutex))) {
  3223			if (!zone)
  3224				return;
  3225			mutex_lock(&pcpu_drain_mutex);
  3226		}
  3227	
  3228		/*
  3229		 * We don't care about racing with CPU hotplug event
  3230		 * as offline notification will cause the notified
  3231		 * cpu to drain that CPU pcps and on_each_cpu_mask
  3232		 * disables preemption as part of its processing
  3233		 */
  3234		for_each_online_cpu(cpu) {
  3235			bool has_pcps = false;
  3236			struct pcplists *lp;
  3237	
  3238			if (force_all_cpus) {
  3239				/*
  3240				 * The lp->count check is racy, some callers need a
  3241				 * guarantee that no cpu is missed.
  3242				 */
  3243				has_pcps = true;
  3244			} else if (zone) {
> 3245				lp = READ_ONCE(per_cpu_ptr(zone->per_cpu_pageset, cpu)->lp);
  3246				if (lp->count)
  3247					has_pcps = true;
  3248			} else {
  3249				for_each_populated_zone(z) {
  3250					lp = READ_ONCE(per_cpu_ptr(z->per_cpu_pageset, cpu)->lp);
  3251					if (lp->count) {
  3252						has_pcps = true;
  3253						break;
  3254					}
  3255				}
  3256			}
  3257	
  3258			if (has_pcps)
  3259				cpumask_set_cpu(cpu, &cpus_with_pcps);
  3260			else
  3261				cpumask_clear_cpu(cpu, &cpus_with_pcps);
  3262		}
  3263	
  3264		if (!force_all_cpus && cpumask_empty(&cpus_with_pcps))
  3265		       goto exit;
  3266	
  3267		for_each_cpu(cpu, &cpus_with_pcps) {
  3268		       for_each_populated_zone(z) {
  3269			       if (zone && zone != z)
  3270				       continue;
  3271	
  3272			       pcp = per_cpu_ptr(z->per_cpu_pageset, cpu);
  3273			       pcp->drain = rcu_replace_pointer(pcp->lp, pcp->drain,
  3274						       mutex_is_locked(&pcpu_drain_mutex));
  3275		       }
  3276		}
  3277	
  3278		synchronize_rcu();
  3279	
  3280		for_each_cpu(cpu, &cpus_with_pcps) {
  3281			for_each_populated_zone(z) {
  3282				unsigned long flags;
  3283				int count;
  3284	
  3285				pcp = per_cpu_ptr(z->per_cpu_pageset, cpu);
  3286				count = pcp->drain->count;
  3287				if (!count)
  3288				       continue;
  3289	
  3290				local_irq_save(flags);
  3291				free_pcppages_bulk(z, count, READ_ONCE(pcp->batch), pcp->drain);
  3292				local_irq_restore(flags);
  3293				VM_BUG_ON(pcp->drain->count);
  3294			}
  3295		}
  3296	
  3297	exit:
  3298		mutex_unlock(&pcpu_drain_mutex);
  3299	}
  3300	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

             reply	other threads:[~2022-02-04 17:18 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-02-04 17:18 kernel test robot [this message]
2022-02-04 17:18 ` [nsaenz-rpi:pcplists-rcu-drain-v1 2/2] mm/page_alloc.c:3245:28: sparse: sparse: incorrect type in assignment (different address spaces) kernel test robot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202202050150.PQssjWMS-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=kbuild-all@lists.01.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.