tree:
https://git.kernel.org/pub/scm/linux/kernel/git/peterz/queue.git perf/core
head: 81d3fdc7ba3ed0763391798a1ba382bd3d3b865c
commit: 878461943fbe9f4ae8bfc32a74727c42f3468f0f [3/7] perf: Disallow aux_output for
kernel events
reproduce:
# apt-get install sparse
# sparse version: v0.6.1-dirty
git checkout 878461943fbe9f4ae8bfc32a74727c42f3468f0f
make ARCH=x86_64 allmodconfig
make C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__'
If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp(a)intel.com>
sparse warnings: (new ones prefixed by >>)
kernel/events/core.c:571:26: sparse: sparse: function 'perf_pmu_name' with
external linkage has definition
kernel/events/core.c:1384:15: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/events/core.c:1384:15: sparse: struct perf_event_context [noderef]
<asn:4> *
kernel/events/core.c:1384:15: sparse: struct perf_event_context *
kernel/events/core.c:1397:28: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/events/core.c:1397:28: sparse: struct perf_event_context [noderef]
<asn:4> *
kernel/events/core.c:1397:28: sparse: struct perf_event_context *
kernel/events/core.c:3206:18: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/events/core.c:3206:18: sparse: struct perf_event_context [noderef]
<asn:4> *
kernel/events/core.c:3206:18: sparse: struct perf_event_context *
kernel/events/core.c:3207:23: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/events/core.c:3207:23: sparse: struct perf_event_context [noderef]
<asn:4> *
kernel/events/core.c:3207:23: sparse: struct perf_event_context *
kernel/events/core.c:3249:25: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/events/core.c:3249:25: sparse: struct perf_event_context [noderef]
<asn:4> *
kernel/events/core.c:3249:25: sparse: struct perf_event_context *
kernel/events/core.c:3250:25: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/events/core.c:3250:25: sparse: struct perf_event_context [noderef]
<asn:4> *
kernel/events/core.c:3250:25: sparse: struct perf_event_context *
kernel/events/core.c:4325:25: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/events/core.c:4325:25: sparse: struct perf_event_context [noderef]
<asn:4> *
kernel/events/core.c:4325:25: sparse: struct perf_event_context *
kernel/events/core.c:5549:9: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/events/core.c:5549:9: sparse: struct ring_buffer [noderef] <asn:4> *
kernel/events/core.c:5549:9: sparse: struct ring_buffer *
kernel/events/core.c:5057:24: sparse: sparse: incorrect type in assignment (different
base types) @@ expected restricted __poll_t [usertype] events @@ got e] events @@
kernel/events/core.c:5057:24: sparse: expected restricted __poll_t [usertype]
events
kernel/events/core.c:5057:24: sparse: got int
kernel/events/core.c:5255:22: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/events/core.c:5255:22: sparse: struct ring_buffer [noderef] <asn:4> *
kernel/events/core.c:5255:22: sparse: struct ring_buffer *
kernel/events/core.c:5391:14: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/events/core.c:5391:14: sparse: struct ring_buffer [noderef] <asn:4> *
kernel/events/core.c:5391:14: sparse: struct ring_buffer *
kernel/events/core.c:5424:14: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/events/core.c:5424:14: sparse: struct ring_buffer [noderef] <asn:4> *
kernel/events/core.c:5424:14: sparse: struct ring_buffer *
kernel/events/core.c:5481:14: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/events/core.c:5481:14: sparse: struct ring_buffer [noderef] <asn:4> *
kernel/events/core.c:5481:14: sparse: struct ring_buffer *
kernel/events/core.c:5567:14: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/events/core.c:5567:14: sparse: struct ring_buffer [noderef] <asn:4> *
kernel/events/core.c:5567:14: sparse: struct ring_buffer *
kernel/events/core.c:5580:14: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/events/core.c:5580:14: sparse: struct ring_buffer [noderef] <asn:4> *
kernel/events/core.c:5580:14: sparse: struct ring_buffer *
kernel/events/internal.h:203:1: sparse: sparse: incorrect type in argument 2 (different
address spaces) @@ expected void const [noderef] <asn:1> *from @@ got f]
<asn:1> *from @@
kernel/events/internal.h:203:1: sparse: expected void const [noderef] <asn:1>
*from
kernel/events/internal.h:203:1: sparse: got void const *buf
kernel/events/core.c:6900:23: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/events/core.c:6900:23: sparse: struct perf_event_context [noderef]
<asn:4> *
kernel/events/core.c:6900:23: sparse: struct perf_event_context *
kernel/events/core.c:6991:13: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/events/core.c:6991:13: sparse: struct ring_buffer [noderef] <asn:4> *
kernel/events/core.c:6991:13: sparse: struct ring_buffer *
kernel/events/core.c:7679:23: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/events/core.c:7679:23: sparse: struct perf_event_context [noderef]
<asn:4> *
kernel/events/core.c:7679:23: sparse: struct perf_event_context *
kernel/events/core.c:8409:17: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/events/core.c:8409:17: sparse: struct swevent_hlist [noderef] <asn:4>
*
kernel/events/core.c:8409:17: sparse: struct swevent_hlist *
kernel/events/core.c:8429:17: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/events/core.c:8429:17: sparse: struct swevent_hlist [noderef] <asn:4>
*
kernel/events/core.c:8429:17: sparse: struct swevent_hlist *
kernel/events/core.c:8549:16: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/events/core.c:8549:16: sparse: struct swevent_hlist [noderef] <asn:4>
*
kernel/events/core.c:8549:16: sparse: struct swevent_hlist *
kernel/events/core.c:8560:9: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/events/core.c:8560:9: sparse: struct swevent_hlist [noderef] <asn:4> *
kernel/events/core.c:8560:9: sparse: struct swevent_hlist *
kernel/events/core.c:8549:16: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/events/core.c:8549:16: sparse: struct swevent_hlist [noderef] <asn:4>
*
kernel/events/core.c:8549:16: sparse: struct swevent_hlist *
kernel/events/core.c:8599:17: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/events/core.c:8599:17: sparse: struct swevent_hlist [noderef] <asn:4>
*
kernel/events/core.c:8599:17: sparse: struct swevent_hlist *
kernel/events/core.c:8780:23: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/events/core.c:8780:23: sparse: struct perf_event_context [noderef]
<asn:4> *
kernel/events/core.c:8780:23: sparse: struct perf_event_context *
kernel/events/core.c:9951:1: sparse: sparse: symbol 'dev_attr_nr_addr_filters'
was not declared. Should it be static?
> kernel/events/core.c:11423:24: sparse: sparse: incorrect type in
return expression (different base types) @@ expected struct perf_event * @@ got t *
@@
> kernel/events/core.c:11423:24: sparse: expected struct perf_event *
kernel/events/core.c:11423:24: sparse: got int
kernel/events/core.c:11666:9: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/events/core.c:11666:9: sparse: struct perf_event_context [noderef]
<asn:4> *
kernel/events/core.c:11666:9: sparse: struct perf_event_context *
kernel/events/core.c:11776:17: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/events/core.c:11776:17: sparse: struct perf_event_context [noderef]
<asn:4> *
kernel/events/core.c:11776:17: sparse: struct perf_event_context *
kernel/events/core.c:8549:16: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/events/core.c:8549:16: sparse: struct swevent_hlist [noderef] <asn:4>
*
kernel/events/core.c:8549:16: sparse: struct swevent_hlist *
kernel/events/core.c:12200:17: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/events/core.c:12200:17: sparse: struct swevent_hlist [noderef] <asn:4>
*
kernel/events/core.c:12200:17: sparse: struct swevent_hlist *
kernel/events/core.c:155:9: sparse: sparse: context imbalance in
'perf_ctx_lock' - wrong count at exit
kernel/events/core.c:163:17: sparse: sparse: context imbalance in
'perf_ctx_unlock' - unexpected unlock
kernel/events/core.c:1404:17: sparse: sparse: context imbalance in
'perf_lock_task_context' - different lock contexts for basic block
kernel/events/core.c:1431:17: sparse: sparse: context imbalance in
'perf_pin_task_context' - unexpected unlock
kernel/events/core.c:2636:9: sparse: sparse: context imbalance in
'__perf_install_in_context' - wrong count at exit
kernel/events/core.c:4297:17: sparse: sparse: context imbalance in
'find_get_context' - unexpected unlock
kernel/events/core.c:10320:9: sparse: sparse: context imbalance in
'perf_init_event' - different lock contexts for basic block
vim +11423 kernel/events/core.c
11400
11401 /**
11402 * perf_event_create_kernel_counter
11403 *
11404 * @attr: attributes of the counter to create
11405 * @cpu: cpu in which the counter is bound
11406 * @task: task to profile (NULL for percpu)
11407 */
11408 struct perf_event *
11409 perf_event_create_kernel_counter(struct perf_event_attr *attr, int cpu,
11410 struct task_struct *task,
11411 perf_overflow_handler_t overflow_handler,
11412 void *context)
11413 {
11414 struct perf_event_context *ctx;
11415 struct perf_event *event;
11416 int err;
11417
11418 /*
11419 * Grouping is not supported for kernel events, neither is 'AUX',
11420 * make sure the caller's intentions are adjusted.
11421 */
11422 if (attr->aux_output)
11423 return -EINVAL;
11424
11425 event = perf_event_alloc(attr, cpu, task, NULL, NULL,
11426 overflow_handler, context, -1);
11427 if (IS_ERR(event)) {
11428 err = PTR_ERR(event);
11429 goto err;
11430 }
11431
11432 /* Mark owner so we could distinguish it from user events. */
11433 event->owner = TASK_TOMBSTONE;
11434
11435 /*
11436 * Get the target context (task or percpu):
11437 */
11438 ctx = find_get_context(event->pmu, task, event);
11439 if (IS_ERR(ctx)) {
11440 err = PTR_ERR(ctx);
11441 goto err_free;
11442 }
11443
11444 WARN_ON_ONCE(ctx->parent_ctx);
11445 mutex_lock(&ctx->mutex);
11446 if (ctx->task == TASK_TOMBSTONE) {
11447 err = -ESRCH;
11448 goto err_unlock;
11449 }
11450
11451 if (!task) {
11452 /*
11453 * Check if the @cpu we're creating an event for is online.
11454 *
11455 * We use the perf_cpu_context::ctx::mutex to serialize against
11456 * the hotplug notifiers. See perf_event_{init,exit}_cpu().
11457 */
11458 struct perf_cpu_context *cpuctx =
11459 container_of(ctx, struct perf_cpu_context, ctx);
11460 if (!cpuctx->online) {
11461 err = -ENODEV;
11462 goto err_unlock;
11463 }
11464 }
11465
11466 if (!exclusive_event_installable(event, ctx)) {
11467 err = -EBUSY;
11468 goto err_unlock;
11469 }
11470
11471 perf_install_in_context(ctx, event, event->cpu);
11472 perf_unpin_context(ctx);
11473 mutex_unlock(&ctx->mutex);
11474
11475 return event;
11476
11477 err_unlock:
11478 mutex_unlock(&ctx->mutex);
11479 perf_unpin_context(ctx);
11480 put_ctx(ctx);
11481 err_free:
11482 free_event(event);
11483 err:
11484 return ERR_PTR(err);
11485 }
11486 EXPORT_SYMBOL_GPL(perf_event_create_kernel_counter);
11487
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation