aboutsummaryrefslogtreecommitdiffstats
path: root/net/rfkill/rfkill.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/rfkill/rfkill.c')
-rw-r--r--net/rfkill/rfkill.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/net/rfkill/rfkill.c b/net/rfkill/rfkill.c
index 5ad411d3e8f8..051d2c9ea66b 100644
--- a/net/rfkill/rfkill.c
+++ b/net/rfkill/rfkill.c
@@ -580,6 +580,7 @@ static int rfkill_suspend(struct device *dev, pm_message_t state)
580static int rfkill_resume(struct device *dev) 580static int rfkill_resume(struct device *dev)
581{ 581{
582 struct rfkill *rfkill = to_rfkill(dev); 582 struct rfkill *rfkill = to_rfkill(dev);
583 enum rfkill_state newstate;
583 584
584 if (dev->power.power_state.event != PM_EVENT_ON) { 585 if (dev->power.power_state.event != PM_EVENT_ON) {
585 mutex_lock(&rfkill->mutex); 586 mutex_lock(&rfkill->mutex);
@@ -587,6 +588,15 @@ static int rfkill_resume(struct device *dev)
587 dev->power.power_state.event = PM_EVENT_ON; 588 dev->power.power_state.event = PM_EVENT_ON;
588 589
589 /* 590 /*
591 * rfkill->state could have been modified before we got
592 * called, and won't be updated by rfkill_toggle_radio()
593 * in force mode. Sync it FIRST.
594 */
595 if (rfkill->get_state &&
596 !rfkill->get_state(rfkill->data, &newstate))
597 rfkill->state = newstate;
598
599 /*
590 * If we are under EPO, kick transmitter offline, 600 * If we are under EPO, kick transmitter offline,
591 * otherwise restore to pre-suspend state. 601 * otherwise restore to pre-suspend state.
592 * 602 *