diff options
author | Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com> | 2015-01-07 13:14:44 -0500 |
---|---|---|
committer | Jiri Kosina <jkosina@suse.cz> | 2015-02-17 07:34:45 -0500 |
commit | ed1197709504c3641cbad32843667539cc912ea1 (patch) | |
tree | 7aef0f483fee97ddfbcaf98c58f212e6a0d83722 | |
parent | f9d904acb3e7e9edb470cd824fe2a21bb0df86b8 (diff) |
HID: sensor-hub: correct dyn_callback_lock IRQ-safe change
Commit 0ccf091d1fbc1f99bb7f93bff8cf346769a9b0cd ("HID: sensor-hub:
make dyn_callback_lock IRQ-safe) was supposed to change locks
in sensor_hub_get_callback(), but missed.
Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
-rw-r--r-- | drivers/hid/hid-sensor-hub.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/hid/hid-sensor-hub.c b/drivers/hid/hid-sensor-hub.c index 6a58b6c723aa..e54ce1097e2c 100644 --- a/drivers/hid/hid-sensor-hub.c +++ b/drivers/hid/hid-sensor-hub.c | |||
@@ -135,8 +135,9 @@ static struct hid_sensor_hub_callbacks *sensor_hub_get_callback( | |||
135 | { | 135 | { |
136 | struct hid_sensor_hub_callbacks_list *callback; | 136 | struct hid_sensor_hub_callbacks_list *callback; |
137 | struct sensor_hub_data *pdata = hid_get_drvdata(hdev); | 137 | struct sensor_hub_data *pdata = hid_get_drvdata(hdev); |
138 | unsigned long flags; | ||
138 | 139 | ||
139 | spin_lock(&pdata->dyn_callback_lock); | 140 | spin_lock_irqsave(&pdata->dyn_callback_lock, flags); |
140 | list_for_each_entry(callback, &pdata->dyn_callback_list, list) | 141 | list_for_each_entry(callback, &pdata->dyn_callback_list, list) |
141 | if (callback->usage_id == usage_id && | 142 | if (callback->usage_id == usage_id && |
142 | (collection_index >= | 143 | (collection_index >= |
@@ -145,10 +146,11 @@ static struct hid_sensor_hub_callbacks *sensor_hub_get_callback( | |||
145 | callback->hsdev->end_collection_index)) { | 146 | callback->hsdev->end_collection_index)) { |
146 | *priv = callback->priv; | 147 | *priv = callback->priv; |
147 | *hsdev = callback->hsdev; | 148 | *hsdev = callback->hsdev; |
148 | spin_unlock(&pdata->dyn_callback_lock); | 149 | spin_unlock_irqrestore(&pdata->dyn_callback_lock, |
150 | flags); | ||
149 | return callback->usage_callback; | 151 | return callback->usage_callback; |
150 | } | 152 | } |
151 | spin_unlock(&pdata->dyn_callback_lock); | 153 | spin_unlock_irqrestore(&pdata->dyn_callback_lock, flags); |
152 | 154 | ||
153 | return NULL; | 155 | return NULL; |
154 | } | 156 | } |