posix-timers: Pass lockdep expression to RCU lists
authorAmol Grover <frextrite@gmail.com>
Sun, 16 Feb 2020 07:43:30 +0000 (13:13 +0530)
committerThomas Gleixner <tglx@linutronix.de>
Mon, 17 Feb 2020 19:12:19 +0000 (20:12 +0100)
head is traversed using hlist_for_each_entry_rcu outside an RCU read-side
critical section but under the protection of hash_lock.

Hence, add corresponding lockdep expression to silence false-positive
lockdep warnings, and harden RCU lists.

[ tglx: Removed the macro and put the condition right where it's used ]

Signed-off-by: Amol Grover <frextrite@gmail.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lkml.kernel.org/r/20200216074330.GA14025@workstation-portable
kernel/time/posix-timers.c

index ff0eb30de346d943911809d311ed2cfd9912d53d..07709ac30439a8e210162535fac7a4be378a0f9a 100644 (file)
@@ -121,7 +121,8 @@ static struct k_itimer *__posix_timers_find(struct hlist_head *head,
 {
        struct k_itimer *timer;
 
-       hlist_for_each_entry_rcu(timer, head, t_hash) {
+       hlist_for_each_entry_rcu(timer, head, t_hash,
+                                lockdep_is_held(&hash_lock)) {
                if ((timer->it_signal == sig) && (timer->it_id == id))
                        return timer;
        }