[linux-next:master 2547/2825] mm/mempolicy.c:3131:17: sparse: sparse: incorrect type in argument 1 (different address spaces)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head:   596764183be8ebb13352b281a442a1f1151c9b06
commit: 25506bd0b31e4e9d89dc293aba8f4c6e2110dccf [2547/2825] mm/mempolicy: implement the sysfs-based weighted_interleave interface
config: loongarch-randconfig-r113-20240129 (https://download.01.org/0day-ci/archive/20240130/202401300823.Ozj10LjA-lkp@xxxxxxxxx/config)
compiler: loongarch64-linux-gcc (GCC) 13.2.0
reproduce: (https://download.01.org/0day-ci/archive/20240130/202401300823.Ozj10LjA-lkp@xxxxxxxxx/reproduce)

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@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202401300823.Ozj10LjA-lkp@xxxxxxxxx/

sparse warnings: (new ones prefixed by >>)
   mm/mempolicy.c:3094:15: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected unsigned char [noderef] [usertype] __rcu *table @@     got unsigned char * @@
   mm/mempolicy.c:3094:15: sparse:     expected unsigned char [noderef] [usertype] __rcu *table
   mm/mempolicy.c:3094:15: sparse:     got unsigned char *
   mm/mempolicy.c:3123:13: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected unsigned char [noderef] [usertype] __rcu *new @@     got void * @@
   mm/mempolicy.c:3123:13: sparse:     expected unsigned char [noderef] [usertype] __rcu *new
   mm/mempolicy.c:3123:13: sparse:     got void *
   mm/mempolicy.c:3128:13: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected unsigned char [noderef] [usertype] __rcu *old @@     got unsigned char * @@
   mm/mempolicy.c:3128:13: sparse:     expected unsigned char [noderef] [usertype] __rcu *old
   mm/mempolicy.c:3128:13: sparse:     got unsigned char *
>> mm/mempolicy.c:3131:17: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void *__to @@     got unsigned char [noderef] [usertype] __rcu *new @@
   mm/mempolicy.c:3131:17: sparse:     expected void *__to
   mm/mempolicy.c:3131:17: sparse:     got unsigned char [noderef] [usertype] __rcu *new
>> mm/mempolicy.c:3131:17: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void const *__from @@     got unsigned char [noderef] [usertype] __rcu *old @@
   mm/mempolicy.c:3131:17: sparse:     expected void const *__from
   mm/mempolicy.c:3131:17: sparse:     got unsigned char [noderef] [usertype] __rcu *old
>> mm/mempolicy.c:3133:17: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void *__s @@     got unsigned char [noderef] [usertype] __rcu *new @@
   mm/mempolicy.c:3133:17: sparse:     expected void *__s
   mm/mempolicy.c:3133:17: sparse:     got unsigned char [noderef] [usertype] __rcu *new
   mm/mempolicy.c:3138:15: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const *objp @@     got unsigned char [noderef] [usertype] __rcu *old @@
   mm/mempolicy.c:3138:15: sparse:     expected void const *objp
   mm/mempolicy.c:3138:15: sparse:     got unsigned char [noderef] [usertype] __rcu *old
   mm/mempolicy.c:3234:13: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected unsigned char [noderef] [usertype] __rcu *old @@     got unsigned char * @@
   mm/mempolicy.c:3234:13: sparse:     expected unsigned char [noderef] [usertype] __rcu *old
   mm/mempolicy.c:3234:13: sparse:     got unsigned char *
   mm/mempolicy.c:3239:15: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const *objp @@     got unsigned char [noderef] [usertype] __rcu *old @@
   mm/mempolicy.c:3239:15: sparse:     expected void const *objp
   mm/mempolicy.c:3239:15: sparse:     got unsigned char [noderef] [usertype] __rcu *old
   mm/mempolicy.c: note: in included file (through include/linux/rbtree.h, include/linux/mm_types.h, include/linux/mmzone.h, ...):
   include/linux/rcupdate.h:781:9: sparse: sparse: context imbalance in 'queue_folios_pte_range' - unexpected unlock
   mm/mempolicy.c:3095:31: sparse: sparse: dereference of noderef expression
   mm/mempolicy.c:3134:12: sparse: sparse: dereference of noderef expression

vim +3131 mm/mempolicy.c

  3100	
  3101	static ssize_t node_store(struct kobject *kobj, struct kobj_attribute *attr,
  3102				  const char *buf, size_t count)
  3103	{
  3104		struct iw_node_attr *node_attr;
  3105		u8 __rcu *new;
  3106		u8 __rcu *old;
  3107		u8 weight = 0;
  3108	
  3109		node_attr = container_of(attr, struct iw_node_attr, kobj_attr);
  3110		if (count == 0 || sysfs_streq(buf, ""))
  3111			weight = 0;
  3112		else if (kstrtou8(buf, 0, &weight))
  3113			return -EINVAL;
  3114	
  3115		/*
  3116		 * The default weight is 1, for now. When the kernel-internal
  3117		 * default weight array is implemented, 0 will be a directive to
  3118		 * the allocators to use the system-default weight instead.
  3119		 */
  3120		if (!weight)
  3121			weight = 1;
  3122	
  3123		new = kmalloc(nr_node_ids, GFP_KERNEL);
  3124		if (!new)
  3125			return -ENOMEM;
  3126	
  3127		mutex_lock(&iw_table_lock);
  3128		old = rcu_dereference_protected(iw_table,
  3129						lockdep_is_held(&iw_table_lock));
  3130		if (old)
> 3131			memcpy(new, old, nr_node_ids);
  3132		else
> 3133			memset(new, 1, nr_node_ids);
  3134		new[node_attr->nid] = weight;
  3135		rcu_assign_pointer(iw_table, new);
  3136		mutex_unlock(&iw_table_lock);
  3137		synchronize_rcu();
  3138		kfree(old);
  3139		return count;
  3140	}
  3141	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux