|
@@ -118,7 +118,6 @@ void wakeup_source_drop(struct wakeup_source *ws)
|
|
|
if (!ws)
|
|
if (!ws)
|
|
|
return;
|
|
return;
|
|
|
|
|
|
|
|
- del_timer_sync(&ws->timer);
|
|
|
|
|
__pm_relax(ws);
|
|
__pm_relax(ws);
|
|
|
}
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(wakeup_source_drop);
|
|
EXPORT_SYMBOL_GPL(wakeup_source_drop);
|
|
@@ -205,6 +204,13 @@ void wakeup_source_remove(struct wakeup_source *ws)
|
|
|
list_del_rcu(&ws->entry);
|
|
list_del_rcu(&ws->entry);
|
|
|
raw_spin_unlock_irqrestore(&events_lock, flags);
|
|
raw_spin_unlock_irqrestore(&events_lock, flags);
|
|
|
synchronize_srcu(&wakeup_srcu);
|
|
synchronize_srcu(&wakeup_srcu);
|
|
|
|
|
+
|
|
|
|
|
+ del_timer_sync(&ws->timer);
|
|
|
|
|
+ /*
|
|
|
|
|
+ * Clear timer.function to make wakeup_source_not_registered() treat
|
|
|
|
|
+ * this wakeup source as not registered.
|
|
|
|
|
+ */
|
|
|
|
|
+ ws->timer.function = NULL;
|
|
|
}
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(wakeup_source_remove);
|
|
EXPORT_SYMBOL_GPL(wakeup_source_remove);
|
|
|
|
|
|