callchain: Annotate RCU pointer with __rcu
PATCH v2 1/1 callchain: Annotate RCU pointer with __rcu
Fixes following instances of sparse error
error: incompatible types in comparison expression
(different address spaces)kernel/events/callchain.c:66:9: error: incompatible types in comparison kernel/events/callchain.c:96:9: error: incompatible types in comparison kernel/events/callchain.c:161:19: error: incompatible types in comparison
This introduces the following warning kernel/events/callchain.c:65:17: warning: incorrect type in assignment which is fixed as below
callchain_cpus_entries is annotated as an RCU pointer. Hence rcu_dereference_protected or similar RCU API is required to dereference the pointer.
---
v2:
- Squash both the commits into a single one.
kernel/events/callchain.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
kernel/events/callchain.c +3 -2
@@ -32,7 +32,7 @@ static inline size_t perf_callchain_entry__sizeof(void) static DEFINE_PER_CPU(int, callchain_recursion[PERF_NR_CONTEXTS]);static atomic_t nr_callchain_events;static DEFINE_MUTEX (callchain_mutex); -static struct callchain_cpus_entries *callchain_cpus_entries; +static struct callchain_cpus_entries __rcu *callchain_cpus_entries; __weak void perf_callchain_kernel(struct perf_callchain_entry_ctx *entry,
@@ -62,7 +62,8 @@ static void release_callchain_buffers(void) {struct callchain_cpus_entries *entries; - entries = callchain_cpus_entries; + entries =rcu_dereference_protected (callchain_cpus_entries, +lockdep_is_held (&callchain_mutex));RCU_INIT_POINTER (callchain_cpus_entries,NULL );call_rcu (&entries->rcu_head, release_callchain_buffers_rcu); }
Signature · 1 line
2.24.1
Quoted 11 lines · Amol Grover
Fixes following instances of sparse error
error: incompatible types in comparison expression
(different address spaces)kernel/events/callchain.c:66:9: error: incompatible types in comparisonkernel/events/callchain.c:96:9: error: incompatible types in comparisonkernel/events/callchain.c:161:19: error: incompatible types in comparisonThis introduces the following warning
kernel/events/callchain.c:65:17: warning: incorrect type in assignment which is fixed as below
Quoted 5 lines
callchain_cpus_entriesis annotated as an RCU pointer. Hencercu_dereference_protectedor similar RCU API is required to dereference the pointer.Signed-off-by Amol Grover <[email protected]>
Hey Peter,
Can you have a look at this patch as well? I have already done the requested changes.
Thanks
Amol
Quoted 33 lines
---
v2:
- Squash both the commits into a single one.kernel/events/callchain.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)kernel/events/callchain.c +3
-2@@ -32,7 +32,7 @@ static inline size_t perf_callchain_entry__sizeof(void) static DEFINE_PER_CPU(int, callchain_recursion[PERF_NR_CONTEXTS]);static atomic_t nr_callchain_events;static DEFINE_MUTEX (callchain_mutex); -static struct callchain_cpus_entries *callchain_cpus_entries; +static struct callchain_cpus_entries __rcu *callchain_cpus_entries; __weak void perf_callchain_kernel(struct perf_callchain_entry_ctx *entry,@@ -62,7 +62,8 @@ static void release_callchain_buffers(void) {struct callchain_cpus_entries *entries; - entries = callchain_cpus_entries; + entries =rcu_dereference_protected (callchain_cpus_entries, +lockdep_is_held (&callchain_mutex));RCU_INIT_POINTER (callchain_cpus_entries,NULL );call_rcu (&entries->rcu_head, release_callchain_buffers_rcu); }Signature · 1 line
2.24.1
_______________________________________________
Linux-kernel-mentees mailing list
[email protected]
https://lists.linuxfoundation.org/mailman/listinfo/linux-kernel-mentees