stm class: Fix link list locking
authorAlexander Shishkin <alexander.shishkin@linux.intel.com>
Tue, 22 Dec 2015 15:25:19 +0000 (17:25 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 8 Feb 2016 06:43:17 +0000 (22:43 -0800)
commitc74f7e8281add80bdfa0ad2998b8df287b13df73
treefa35e258056567f402ab9fc457c80ef9a03bbf29
parent4c127fd16e6b33ecb7badc091480c84ea9aebeb6
stm class: Fix link list locking

Currently, the list of stm_sources linked to an stm device is protected by
a spinlock, which also means that sources' .unlink() method is called under
this spinlock. However, this method may (and does) sleep, which means
trouble.

This patch slightly reworks locking around stm::link_list so that bits that
might_sleep() are called with a mutex held instead. Modification of this
list requires both mutex and spinlock to be held, while looking at the list
can be done under either mutex or spinlock.

Signed-off-by: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/hwtracing/stm/core.c
drivers/hwtracing/stm/stm.h