Rafael J. Wysocki
3ee7be9e10
PM: EM: Address RCU-related sparse warnings
The usage of __rcu in the Energy Model code is quite inconsistent
which causes the following sparse warnings to trigger:
kernel/power/energy_model.c:169:15: warning: incorrect type in assignment (different address spaces)
kernel/power/energy_model.c:169:15: expected struct em_perf_table [noderef] __rcu *table
kernel/power/energy_model.c:169:15: got struct em_perf_table *
kernel/power/energy_model.c:171:9: warning: incorrect type in argument 1 (different address spaces)
kernel/power/energy_model.c:171:9: expected struct callback_head *head
kernel/power/energy_model.c:171:9: got struct callback_head [noderef] __rcu *
kernel/power/energy_model.c:171:9: warning: cast removes address space '__rcu' of expression
kernel/power/energy_model.c:182:19: warning: incorrect type in argument 1 (different address spaces)
kernel/power/energy_model.c:182:19: expected struct kref *kref
kernel/power/energy_model.c:182:19: got struct kref [noderef] __rcu *
kernel/power/energy_model.c:200:15: warning: incorrect type in assignment (different address spaces)
kernel/power/energy_model.c:200:15: expected struct em_perf_table [noderef] __rcu *table
kernel/power/energy_model.c:200:15: got void *[assigned] _res
kernel/power/energy_model.c:204:20: warning: incorrect type in argument 1 (different address spaces)
kernel/power/energy_model.c:204:20: expected struct kref *kref
kernel/power/energy_model.c:204:20: got struct kref [noderef] __rcu *
kernel/power/energy_model.c:320:19: warning: incorrect type in argument 1 (different address spaces)
kernel/power/energy_model.c:320:19: expected struct kref *kref
kernel/power/energy_model.c:320:19: got struct kref [noderef] __rcu *
kernel/power/energy_model.c:325:45: warning: incorrect type in argument 2 (different address spaces)
kernel/power/energy_model.c:325:45: expected struct em_perf_state *table
kernel/power/energy_model.c:325:45: got struct em_perf_state [noderef] __rcu *
kernel/power/energy_model.c:425:45: warning: incorrect type in argument 3 (different address spaces)
kernel/power/energy_model.c:425:45: expected struct em_perf_state *table
kernel/power/energy_model.c:425:45: got struct em_perf_state [noderef] __rcu *
kernel/power/energy_model.c:442:15: warning: incorrect type in argument 1 (different address spaces)
kernel/power/energy_model.c:442:15: expected void const *objp
kernel/power/energy_model.c:442:15: got struct em_perf_table [noderef] __rcu *[assigned] em_table
kernel/power/energy_model.c:626:55: warning: incorrect type in argument 2 (different address spaces)
kernel/power/energy_model.c:626:55: expected struct em_perf_state *table
kernel/power/energy_model.c:626:55: got struct em_perf_state [noderef] __rcu *
kernel/power/energy_model.c:681:16: warning: incorrect type in assignment (different address spaces)
kernel/power/energy_model.c:681:16: expected struct em_perf_state *new_ps
kernel/power/energy_model.c:681:16: got struct em_perf_state [noderef] __rcu *
kernel/power/energy_model.c:699:37: warning: incorrect type in argument 2 (different address spaces)
kernel/power/energy_model.c:699:37: expected struct em_perf_state *table
kernel/power/energy_model.c:699:37: got struct em_perf_state [noderef] __rcu *
kernel/power/energy_model.c:733:38: warning: incorrect type in argument 3 (different address spaces)
kernel/power/energy_model.c:733:38: expected struct em_perf_state *table
kernel/power/energy_model.c:733:38: got struct em_perf_state [noderef] __rcu *
kernel/power/energy_model.c:855:53: warning: dereference of noderef expression
kernel/power/energy_model.c:864:32: warning: dereference of noderef expression
This is because the __rcu annotation for sparse is only applicable to
pointers that need rcu_dereference() or equivalent for protection, which
basically means pointers assigned with rcu_assign_pointer().
Make all of the above sparse warnings go away by cleaning up the usage
of __rcu and using rcu_dereference_protected() where applicable.
Cc: All applicable <stable@vger.kernel.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Reviewed-by: Lukasz Luba <lukasz.luba@arm.com>
Link: https://patch.msgid.link/5885405.DvuYhMxLoT@rjwysocki.net
2025-03-07 15:21:16 +01:00
..
2025-01-29 10:35:40 -08:00
2025-02-07 11:02:17 -10:00
2024-10-28 10:21:09 -07:00
2025-01-25 08:22:26 +00:00
2024-11-28 10:19:16 +01:00
2024-11-05 12:55:37 +01:00
2025-02-01 03:53:25 -08:00
2025-02-08 10:54:11 -08:00
2025-01-24 22:47:27 -08:00
2025-02-13 13:18:54 +01:00
2024-10-14 16:44:56 +02:00
2024-12-09 11:44:03 +01:00
2025-01-28 13:48:37 +01:00
2025-01-31 12:07:07 -08:00
2025-03-07 15:21:16 +01:00
2025-01-28 13:48:37 +01:00
2025-01-26 18:36:23 -08:00
2025-02-16 10:38:24 -08:00
2025-02-08 11:55:03 -08:00
2025-02-15 14:00:59 -05:00
2025-01-28 13:48:37 +01:00
2024-04-04 16:24:16 +02:00
2024-04-04 16:24:16 +02:00
2025-01-29 20:02:04 -05:00
2024-10-11 14:34:16 -04:00
2024-12-05 19:22:38 -05:00
2025-01-21 20:03:04 -08:00
2024-06-24 22:24:55 -07:00
2024-04-29 08:29:29 -07:00
2025-01-12 20:21:15 -08:00
2024-08-15 21:30:43 +05:30
2025-01-26 18:36:23 -08:00
2024-11-05 17:12:27 -08:00
2024-09-01 20:43:30 -07:00
2024-12-02 11:25:09 +01:00
2025-01-28 13:48:37 +01:00
2025-01-28 13:48:37 +01:00
2025-02-01 03:53:25 -08:00
2024-10-14 09:14:35 +02:00
2025-01-31 12:07:07 -08:00
2025-01-28 13:48:37 +01:00
2025-01-13 22:40:36 -08:00
2024-09-10 11:57:27 +02:00
2024-07-20 16:33:21 +09:00
2025-01-02 22:12:12 +01:00
2024-08-15 09:33:35 -07:00
2024-10-07 13:34:41 -04:00
2024-11-14 22:43:48 -08:00
2024-11-07 15:25:05 +01:00
2024-12-30 17:59:08 -08:00
2025-01-28 13:48:37 +01:00
2024-09-01 17:59:01 -07:00
2024-09-01 20:43:23 -07:00
2024-04-23 14:59:01 +10:00
2024-12-24 09:46:49 +01:00
2025-01-28 13:48:37 +01:00
2025-01-07 16:59:15 +01:00
2025-02-04 01:42:27 +01:00
2025-01-28 13:48:37 +01:00
2024-09-03 21:15:26 -07:00
2024-11-05 17:12:31 -08:00
2024-11-03 01:28:06 -05:00
2025-01-19 12:44:28 +08:00
2025-01-28 13:48:37 +01:00
2025-01-26 13:05:23 +01:00
2025-01-28 13:48:37 +01:00
2025-01-28 13:48:37 +01:00
2025-01-28 13:48:37 +01:00
2024-08-04 13:36:28 -07:00
2025-01-28 13:48:37 +01:00
2024-04-25 21:07:03 -07:00
2024-09-27 08:18:43 -07:00
2024-10-09 12:47:19 -07:00
2025-01-12 20:20:58 -08:00
2025-01-21 08:10:51 +01:00
2024-11-14 16:09:51 -08:00
2025-02-06 12:48:21 -08:00
2025-01-28 13:48:37 +01:00
2025-01-28 11:34:03 -08:00
2024-12-02 12:01:27 +01:00
2025-01-28 13:48:37 +01:00
2024-12-13 09:28:32 +01:00
2024-12-11 20:50:47 -08:00
2024-07-18 12:19:20 -07:00
2024-12-22 20:28:11 -08:00
2025-01-28 13:48:37 +01:00
2025-01-28 13:48:37 +01:00
2025-01-13 22:40:36 -08:00
2024-11-03 01:28:06 -05:00
2024-05-30 15:31:38 -07:00
2024-11-01 14:37:31 -04:00
2024-07-12 16:39:53 -07:00
2025-01-12 20:21:00 -08:00
2025-01-28 13:48:37 +01:00
2024-09-09 16:47:42 -07:00
2024-09-12 12:16:09 +02:00
2025-01-28 13:48:37 +01:00
2024-05-22 08:31:15 -04:00
2024-09-03 21:15:43 -07:00
2024-12-22 11:29:51 +01:00
2024-07-17 21:11:34 -07:00
2025-01-28 13:48:37 +01:00
2025-02-14 10:58:03 -08:00