All of lore.kernel.org
 help / color / mirror / Atom feed
* kernel/kcov.c:877:9: sparse: sparse: incorrect type in argument 1 (different base types)
@ 2026-03-05  1:06 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2026-03-05  1:06 UTC (permalink / raw)
  To: Marco Elver; +Cc: oe-kbuild-all, linux-kernel, Peter Zijlstra

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   0b3bb205808195159be633a8cefb602670e856fb
commit: 6556fde265a7bd408ad8ff15ec08970f99f6201c kcov: Enable context analysis
date:   8 weeks ago
config: powerpc64-randconfig-r111-20260304 (https://download.01.org/0day-ci/archive/20260305/202603050933.Q4XeFgSb-lkp@intel.com/config)
compiler: clang version 23.0.0git (https://github.com/llvm/llvm-project 9a109fbb6e184ec9bcce10615949f598f4c974a9)
sparse: v0.6.5-rc1
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260305/202603050933.Q4XeFgSb-lkp@intel.com/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@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202603050933.Q4XeFgSb-lkp@intel.com/

sparse warnings: (new ones prefixed by >>)
   kernel/kcov.c: note: in included file (through include/linux/local_lock.h, include/linux/mmzone.h, include/linux/gfp.h, ...):
   include/linux/local_lock_internal.h:332:40: sparse: sparse: multiple definitions for function '__this_cpu_local_lock'
   include/linux/local_lock_internal.h:326:37: sparse:  the previous one is here
>> kernel/kcov.c:877:9: sparse: sparse: incorrect type in argument 1 (different base types) @@     expected struct local_trylock [noderef] [usertype] __percpu *base @@     got struct local_lock [noderef] __percpu * @@
   kernel/kcov.c:877:9: sparse:     expected struct local_trylock [noderef] [usertype] __percpu *base
   kernel/kcov.c:877:9: sparse:     got struct local_lock [noderef] __percpu *
>> kernel/kcov.c:877:9: sparse: sparse: incorrect type in argument 1 (different base types) @@     expected struct local_trylock [noderef] [usertype] __percpu *base @@     got struct local_lock [noderef] __percpu * @@
   kernel/kcov.c:877:9: sparse:     expected struct local_trylock [noderef] [usertype] __percpu *base
   kernel/kcov.c:877:9: sparse:     got struct local_lock [noderef] __percpu *
   kernel/kcov.c:885:17: sparse: sparse: incorrect type in argument 1 (different base types) @@     expected struct local_trylock [noderef] [usertype] __percpu *base @@     got struct local_lock [noderef] __percpu * @@
   kernel/kcov.c:885:17: sparse:     expected struct local_trylock [noderef] [usertype] __percpu *base
   kernel/kcov.c:885:17: sparse:     got struct local_lock [noderef] __percpu *
   kernel/kcov.c:885:17: sparse: sparse: incorrect type in argument 1 (different base types) @@     expected struct local_trylock [noderef] [usertype] __percpu *base @@     got struct local_lock [noderef] __percpu * @@
   kernel/kcov.c:885:17: sparse:     expected struct local_trylock [noderef] [usertype] __percpu *base
   kernel/kcov.c:885:17: sparse:     got struct local_lock [noderef] __percpu *
   kernel/kcov.c:894:17: sparse: sparse: incorrect type in argument 1 (different base types) @@     expected struct local_trylock [noderef] [usertype] __percpu *base @@     got struct local_lock [noderef] __percpu * @@
   kernel/kcov.c:894:17: sparse:     expected struct local_trylock [noderef] [usertype] __percpu *base
   kernel/kcov.c:894:17: sparse:     got struct local_lock [noderef] __percpu *
   kernel/kcov.c:894:17: sparse: sparse: incorrect type in argument 1 (different base types) @@     expected struct local_trylock [noderef] [usertype] __percpu *base @@     got struct local_lock [noderef] __percpu * @@
   kernel/kcov.c:894:17: sparse:     expected struct local_trylock [noderef] [usertype] __percpu *base
   kernel/kcov.c:894:17: sparse:     got struct local_lock [noderef] __percpu *
   kernel/kcov.c:902:17: sparse: sparse: incorrect type in argument 1 (different base types) @@     expected struct local_trylock [noderef] [usertype] __percpu *base @@     got struct local_lock [noderef] __percpu * @@
   kernel/kcov.c:902:17: sparse:     expected struct local_trylock [noderef] [usertype] __percpu *base
   kernel/kcov.c:902:17: sparse:     got struct local_lock [noderef] __percpu *
   kernel/kcov.c:902:17: sparse: sparse: incorrect type in argument 1 (different base types) @@     expected struct local_trylock [noderef] [usertype] __percpu *base @@     got struct local_lock [noderef] __percpu * @@
   kernel/kcov.c:902:17: sparse:     expected struct local_trylock [noderef] [usertype] __percpu *base
   kernel/kcov.c:902:17: sparse:     got struct local_lock [noderef] __percpu *
   kernel/kcov.c:929:17: sparse: sparse: incorrect type in argument 1 (different base types) @@     expected struct local_trylock [noderef] [usertype] __percpu *base @@     got struct local_lock [noderef] __percpu * @@
   kernel/kcov.c:929:17: sparse:     expected struct local_trylock [noderef] [usertype] __percpu *base
   kernel/kcov.c:929:17: sparse:     got struct local_lock [noderef] __percpu *
   kernel/kcov.c:929:17: sparse: sparse: incorrect type in argument 1 (different base types) @@     expected struct local_trylock [noderef] [usertype] __percpu *base @@     got struct local_lock [noderef] __percpu * @@
   kernel/kcov.c:929:17: sparse:     expected struct local_trylock [noderef] [usertype] __percpu *base
   kernel/kcov.c:929:17: sparse:     got struct local_lock [noderef] __percpu *
   kernel/kcov.c:935:17: sparse: sparse: incorrect type in argument 1 (different base types) @@     expected struct local_trylock [noderef] [usertype] __percpu *base @@     got struct local_lock [noderef] __percpu * @@
   kernel/kcov.c:935:17: sparse:     expected struct local_trylock [noderef] [usertype] __percpu *base
   kernel/kcov.c:935:17: sparse:     got struct local_lock [noderef] __percpu *
   kernel/kcov.c:935:17: sparse: sparse: incorrect type in argument 1 (different base types) @@     expected struct local_trylock [noderef] [usertype] __percpu *base @@     got struct local_lock [noderef] __percpu * @@
   kernel/kcov.c:935:17: sparse:     expected struct local_trylock [noderef] [usertype] __percpu *base
   kernel/kcov.c:935:17: sparse:     got struct local_lock [noderef] __percpu *
   kernel/kcov.c:947:9: sparse: sparse: incorrect type in argument 1 (different base types) @@     expected struct local_trylock [noderef] [usertype] __percpu *base @@     got struct local_lock [noderef] __percpu * @@
   kernel/kcov.c:947:9: sparse:     expected struct local_trylock [noderef] [usertype] __percpu *base
   kernel/kcov.c:947:9: sparse:     got struct local_lock [noderef] __percpu *
   kernel/kcov.c:947:9: sparse: sparse: incorrect type in argument 1 (different base types) @@     expected struct local_trylock [noderef] [usertype] __percpu *base @@     got struct local_lock [noderef] __percpu * @@
   kernel/kcov.c:947:9: sparse:     expected struct local_trylock [noderef] [usertype] __percpu *base
   kernel/kcov.c:947:9: sparse:     got struct local_lock [noderef] __percpu *
   kernel/kcov.c:1030:9: sparse: sparse: incorrect type in argument 1 (different base types) @@     expected struct local_trylock [noderef] [usertype] __percpu *base @@     got struct local_lock [noderef] __percpu * @@
   kernel/kcov.c:1030:9: sparse:     expected struct local_trylock [noderef] [usertype] __percpu *base
   kernel/kcov.c:1030:9: sparse:     got struct local_lock [noderef] __percpu *
   kernel/kcov.c:1030:9: sparse: sparse: incorrect type in argument 1 (different base types) @@     expected struct local_trylock [noderef] [usertype] __percpu *base @@     got struct local_lock [noderef] __percpu * @@
   kernel/kcov.c:1030:9: sparse:     expected struct local_trylock [noderef] [usertype] __percpu *base
   kernel/kcov.c:1030:9: sparse:     got struct local_lock [noderef] __percpu *
   kernel/kcov.c:1035:17: sparse: sparse: incorrect type in argument 1 (different base types) @@     expected struct local_trylock [noderef] [usertype] __percpu *base @@     got struct local_lock [noderef] __percpu * @@
   kernel/kcov.c:1035:17: sparse:     expected struct local_trylock [noderef] [usertype] __percpu *base
   kernel/kcov.c:1035:17: sparse:     got struct local_lock [noderef] __percpu *
   kernel/kcov.c:1035:17: sparse: sparse: incorrect type in argument 1 (different base types) @@     expected struct local_trylock [noderef] [usertype] __percpu *base @@     got struct local_lock [noderef] __percpu * @@
   kernel/kcov.c:1035:17: sparse:     expected struct local_trylock [noderef] [usertype] __percpu *base
   kernel/kcov.c:1035:17: sparse:     got struct local_lock [noderef] __percpu *
   kernel/kcov.c:1043:17: sparse: sparse: incorrect type in argument 1 (different base types) @@     expected struct local_trylock [noderef] [usertype] __percpu *base @@     got struct local_lock [noderef] __percpu * @@
   kernel/kcov.c:1043:17: sparse:     expected struct local_trylock [noderef] [usertype] __percpu *base
   kernel/kcov.c:1043:17: sparse:     got struct local_lock [noderef] __percpu *
   kernel/kcov.c:1043:17: sparse: sparse: incorrect type in argument 1 (different base types) @@     expected struct local_trylock [noderef] [usertype] __percpu *base @@     got struct local_lock [noderef] __percpu * @@
   kernel/kcov.c:1043:17: sparse:     expected struct local_trylock [noderef] [usertype] __percpu *base
   kernel/kcov.c:1043:17: sparse:     got struct local_lock [noderef] __percpu *
   kernel/kcov.c:1048:17: sparse: sparse: incorrect type in argument 1 (different base types) @@     expected struct local_trylock [noderef] [usertype] __percpu *base @@     got struct local_lock [noderef] __percpu * @@
   kernel/kcov.c:1048:17: sparse:     expected struct local_trylock [noderef] [usertype] __percpu *base
   kernel/kcov.c:1048:17: sparse:     got struct local_lock [noderef] __percpu *
   kernel/kcov.c:1048:17: sparse: sparse: incorrect type in argument 1 (different base types) @@     expected struct local_trylock [noderef] [usertype] __percpu *base @@     got struct local_lock [noderef] __percpu * @@
   kernel/kcov.c:1048:17: sparse:     expected struct local_trylock [noderef] [usertype] __percpu *base
   kernel/kcov.c:1048:17: sparse:     got struct local_lock [noderef] __percpu *
   kernel/kcov.c:1078:9: sparse: sparse: incorrect type in argument 1 (different base types) @@     expected struct local_trylock [noderef] [usertype] __percpu *base @@     got struct local_lock [noderef] __percpu * @@
   kernel/kcov.c:1078:9: sparse:     expected struct local_trylock [noderef] [usertype] __percpu *base
   kernel/kcov.c:1078:9: sparse:     got struct local_lock [noderef] __percpu *
   kernel/kcov.c:1078:9: sparse: sparse: incorrect type in argument 1 (different base types) @@     expected struct local_trylock [noderef] [usertype] __percpu *base @@     got struct local_lock [noderef] __percpu * @@
   kernel/kcov.c:1078:9: sparse:     expected struct local_trylock [noderef] [usertype] __percpu *base
   kernel/kcov.c:1078:9: sparse:     got struct local_lock [noderef] __percpu *

vim +877 kernel/kcov.c

5ff3b30ab57da8 Andrey Konovalov          2020-06-04  860  
eec028c9386ed1 Andrey Konovalov          2019-12-04  861  void kcov_remote_start(u64 handle)
eec028c9386ed1 Andrey Konovalov          2019-12-04  862  {
5fe7042dc0a2e8 Andrey Konovalov          2020-06-04  863  	struct task_struct *t = current;
eec028c9386ed1 Andrey Konovalov          2019-12-04  864  	struct kcov_remote *remote;
67b3d3cca38550 Andrey Konovalov          2020-06-04  865  	struct kcov *kcov;
5fe7042dc0a2e8 Andrey Konovalov          2020-06-04  866  	unsigned int mode;
eec028c9386ed1 Andrey Konovalov          2019-12-04  867  	void *area;
eec028c9386ed1 Andrey Konovalov          2019-12-04  868  	unsigned int size;
eec028c9386ed1 Andrey Konovalov          2019-12-04  869  	int sequence;
5ff3b30ab57da8 Andrey Konovalov          2020-06-04  870  	unsigned long flags;
eec028c9386ed1 Andrey Konovalov          2019-12-04  871  
eec028c9386ed1 Andrey Konovalov          2019-12-04  872  	if (WARN_ON(!kcov_check_handle(handle, true, true, true)))
eec028c9386ed1 Andrey Konovalov          2019-12-04  873  		return;
7d4df2dad312f2 Andrey Konovalov          2024-07-29  874  	if (!in_task() && !in_softirq_really())
eec028c9386ed1 Andrey Konovalov          2019-12-04  875  		return;
5fe7042dc0a2e8 Andrey Konovalov          2020-06-04  876  
d5d2c51f1e5f56 Sebastian Andrzej Siewior 2021-11-08 @877  	local_lock_irqsave(&kcov_percpu_data.lock, flags);
5ff3b30ab57da8 Andrey Konovalov          2020-06-04  878  
eec028c9386ed1 Andrey Konovalov          2019-12-04  879  	/*
5ff3b30ab57da8 Andrey Konovalov          2020-06-04  880  	 * Check that kcov_remote_start() is not called twice in background
5ff3b30ab57da8 Andrey Konovalov          2020-06-04  881  	 * threads nor called by user tasks (with enabled kcov).
eec028c9386ed1 Andrey Konovalov          2019-12-04  882  	 */
5fe7042dc0a2e8 Andrey Konovalov          2020-06-04  883  	mode = READ_ONCE(t->kcov_mode);
5ff3b30ab57da8 Andrey Konovalov          2020-06-04  884  	if (WARN_ON(in_task() && kcov_mode_enabled(mode))) {
d5d2c51f1e5f56 Sebastian Andrzej Siewior 2021-11-08  885  		local_unlock_irqrestore(&kcov_percpu_data.lock, flags);
eec028c9386ed1 Andrey Konovalov          2019-12-04  886  		return;
5ff3b30ab57da8 Andrey Konovalov          2020-06-04  887  	}
5ff3b30ab57da8 Andrey Konovalov          2020-06-04  888  	/*
5ff3b30ab57da8 Andrey Konovalov          2020-06-04  889  	 * Check that kcov_remote_start() is not called twice in softirqs.
5ff3b30ab57da8 Andrey Konovalov          2020-06-04  890  	 * Note, that kcov_remote_start() can be called from a softirq that
5ff3b30ab57da8 Andrey Konovalov          2020-06-04  891  	 * happened while collecting coverage from a background thread.
5ff3b30ab57da8 Andrey Konovalov          2020-06-04  892  	 */
5ff3b30ab57da8 Andrey Konovalov          2020-06-04  893  	if (WARN_ON(in_serving_softirq() && t->kcov_softirq)) {
d5d2c51f1e5f56 Sebastian Andrzej Siewior 2021-11-08  894  		local_unlock_irqrestore(&kcov_percpu_data.lock, flags);
5ff3b30ab57da8 Andrey Konovalov          2020-06-04  895  		return;
5ff3b30ab57da8 Andrey Konovalov          2020-06-04  896  	}
eec028c9386ed1 Andrey Konovalov          2019-12-04  897  
eec028c9386ed1 Andrey Konovalov          2019-12-04  898  	spin_lock(&kcov_remote_lock);
eec028c9386ed1 Andrey Konovalov          2019-12-04  899  	remote = kcov_remote_find(handle);
eec028c9386ed1 Andrey Konovalov          2019-12-04  900  	if (!remote) {
d5d2c51f1e5f56 Sebastian Andrzej Siewior 2021-11-08  901  		spin_unlock(&kcov_remote_lock);
d5d2c51f1e5f56 Sebastian Andrzej Siewior 2021-11-08  902  		local_unlock_irqrestore(&kcov_percpu_data.lock, flags);
eec028c9386ed1 Andrey Konovalov          2019-12-04  903  		return;
eec028c9386ed1 Andrey Konovalov          2019-12-04  904  	}
5ff3b30ab57da8 Andrey Konovalov          2020-06-04  905  	kcov_debug("handle = %llx, context: %s\n", handle,
5ff3b30ab57da8 Andrey Konovalov          2020-06-04  906  			in_task() ? "task" : "softirq");
67b3d3cca38550 Andrey Konovalov          2020-06-04  907  	kcov = remote->kcov;
eec028c9386ed1 Andrey Konovalov          2019-12-04  908  	/* Put in kcov_remote_stop(). */
67b3d3cca38550 Andrey Konovalov          2020-06-04  909  	kcov_get(kcov);
eec028c9386ed1 Andrey Konovalov          2019-12-04  910  	/*
6556fde265a7bd Marco Elver               2025-12-19  911  	 * Read kcov fields before unlocking kcov_remote_lock to prevent races
6556fde265a7bd Marco Elver               2025-12-19  912  	 * with KCOV_DISABLE and kcov_remote_reset(); cannot acquire kcov->lock
6556fde265a7bd Marco Elver               2025-12-19  913  	 * here, because it might lead to deadlock given kcov_remote_lock is
6556fde265a7bd Marco Elver               2025-12-19  914  	 * acquired _after_ kcov->lock elsewhere.
eec028c9386ed1 Andrey Konovalov          2019-12-04  915  	 */
6556fde265a7bd Marco Elver               2025-12-19  916  	mode = context_unsafe(kcov->mode);
67b3d3cca38550 Andrey Konovalov          2020-06-04  917  	sequence = kcov->sequence;
5ff3b30ab57da8 Andrey Konovalov          2020-06-04  918  	if (in_task()) {
5ff3b30ab57da8 Andrey Konovalov          2020-06-04  919  		size = kcov->remote_size;
eec028c9386ed1 Andrey Konovalov          2019-12-04  920  		area = kcov_remote_area_get(size);
5ff3b30ab57da8 Andrey Konovalov          2020-06-04  921  	} else {
5ff3b30ab57da8 Andrey Konovalov          2020-06-04  922  		size = CONFIG_KCOV_IRQ_AREA_SIZE;
5ff3b30ab57da8 Andrey Konovalov          2020-06-04  923  		area = this_cpu_ptr(&kcov_percpu_data)->irq_area;
5ff3b30ab57da8 Andrey Konovalov          2020-06-04  924  	}
22036abe17c9f6 Sebastian Andrzej Siewior 2021-11-08  925  	spin_unlock(&kcov_remote_lock);
eec028c9386ed1 Andrey Konovalov          2019-12-04  926  
5ff3b30ab57da8 Andrey Konovalov          2020-06-04  927  	/* Can only happen when in_task(). */
eec028c9386ed1 Andrey Konovalov          2019-12-04  928  	if (!area) {
d5d2c51f1e5f56 Sebastian Andrzej Siewior 2021-11-08  929  		local_unlock_irqrestore(&kcov_percpu_data.lock, flags);
eec028c9386ed1 Andrey Konovalov          2019-12-04  930  		area = vmalloc(size * sizeof(unsigned long));
eec028c9386ed1 Andrey Konovalov          2019-12-04  931  		if (!area) {
67b3d3cca38550 Andrey Konovalov          2020-06-04  932  			kcov_put(kcov);
eec028c9386ed1 Andrey Konovalov          2019-12-04  933  			return;
eec028c9386ed1 Andrey Konovalov          2019-12-04  934  		}
d5d2c51f1e5f56 Sebastian Andrzej Siewior 2021-11-08  935  		local_lock_irqsave(&kcov_percpu_data.lock, flags);
22036abe17c9f6 Sebastian Andrzej Siewior 2021-11-08  936  	}
5ff3b30ab57da8 Andrey Konovalov          2020-06-04  937  
eec028c9386ed1 Andrey Konovalov          2019-12-04  938  	/* Reset coverage size. */
eec028c9386ed1 Andrey Konovalov          2019-12-04  939  	*(u64 *)area = 0;
eec028c9386ed1 Andrey Konovalov          2019-12-04  940  
5ff3b30ab57da8 Andrey Konovalov          2020-06-04  941  	if (in_serving_softirq()) {
5ff3b30ab57da8 Andrey Konovalov          2020-06-04  942  		kcov_remote_softirq_start(t);
5ff3b30ab57da8 Andrey Konovalov          2020-06-04  943  		t->kcov_softirq = 1;
5ff3b30ab57da8 Andrey Konovalov          2020-06-04  944  	}
76484b1c77242b Andrey Konovalov          2020-06-04  945  	kcov_start(t, kcov, size, area, mode, sequence);
eec028c9386ed1 Andrey Konovalov          2019-12-04  946  
d5d2c51f1e5f56 Sebastian Andrzej Siewior 2021-11-08  947  	local_unlock_irqrestore(&kcov_percpu_data.lock, flags);
5ff3b30ab57da8 Andrey Konovalov          2020-06-04  948  

:::::: The code at line 877 was first introduced by commit
:::::: d5d2c51f1e5f56ed01d2c773974630c007e5e5f5 kcov: replace local_irq_save() with a local_lock_t

:::::: TO: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
:::::: CC: Linus Torvalds <torvalds@linux-foundation.org>

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

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2026-03-05  1:06 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-05  1:06 kernel/kcov.c:877:9: sparse: sparse: incorrect type in argument 1 (different base types) kernel test robot

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.