clocksource: Protect the watchdog rating changes with clocksource_mutex
authorThomas Gleixner <tglx@linutronix.de>
Wed, 19 Aug 2009 09:26:09 +0000 (11:26 +0200)
committerThomas Gleixner <tglx@linutronix.de>
Wed, 19 Aug 2009 09:42:48 +0000 (11:42 +0200)
commitd0981a1b21a03866c8da7f44e35e389c2e0d6061
tree7fe013c7de9adb1d4f20163669571fddfe09881c
parent6ea41d252f35465a2308a4038a323b6b07de06f6
clocksource: Protect the watchdog rating changes with clocksource_mutex

Martin pointed out that commit 6ea41d2529 (clocksource: Call
clocksource_change_rating() outside of watchdog_lock) has a
theoretical reference count problem. The calls to
clocksource_change_rating() are now done outside of the clocksource
mutex and outside of the watchdog lock. A concurrent
clocksource_unregister() could remove the clock.

Split out the code which changes the rating from
clocksource_change_rating() into __clocksource_change_rating().

Protect the clocksource_watchdog_work() code sequence with the
clocksource_mutex() and call __clocksource_change_rating().

LKML-Reference: <alpine.LFD.2.00.0908171038420.2782@localhost.localdomain>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
kernel/time/clocksource.c