diff options
author | Alan Jenkins <alan-jenkins@tuffmail.co.uk> | 2009-06-16 09:53:24 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2009-06-19 11:50:17 -0400 |
commit | 7fa20a7f60df0afceafbb8197b5d110507f42c72 (patch) | |
tree | 4f27f607618bc48c9b8c83f4169af70abac913d3 /net | |
parent | f0214843ba23d9bf6dc6b8ad2c6ee27b60f0322e (diff) |
rfkill: rfkill_set_block() when suspended nitpick
If we return after fiddling with the state, userspace will see the
wrong state and rfkill_set_sw_state() won't work until the next call to
rfkill_set_block(). At the moment rfkill_set_block() will always be
called from rfkill_resume(), but this will change in future.
Also, presumably the point of this test is to avoid bothering devices
which may be suspended. If we don't want to call set_block(), we
probably don't want to call query() either :-).
Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net')
-rw-r--r-- | net/rfkill/core.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/net/rfkill/core.c b/net/rfkill/core.c index 4e68ab439d5d..868d79f8ac1d 100644 --- a/net/rfkill/core.c +++ b/net/rfkill/core.c | |||
@@ -270,6 +270,9 @@ static void rfkill_set_block(struct rfkill *rfkill, bool blocked) | |||
270 | unsigned long flags; | 270 | unsigned long flags; |
271 | int err; | 271 | int err; |
272 | 272 | ||
273 | if (unlikely(rfkill->dev.power.power_state.event & PM_EVENT_SLEEP)) | ||
274 | return; | ||
275 | |||
273 | /* | 276 | /* |
274 | * Some platforms (...!) generate input events which affect the | 277 | * Some platforms (...!) generate input events which affect the |
275 | * _hard_ kill state -- whenever something tries to change the | 278 | * _hard_ kill state -- whenever something tries to change the |
@@ -292,9 +295,6 @@ static void rfkill_set_block(struct rfkill *rfkill, bool blocked) | |||
292 | rfkill->state |= RFKILL_BLOCK_SW_SETCALL; | 295 | rfkill->state |= RFKILL_BLOCK_SW_SETCALL; |
293 | spin_unlock_irqrestore(&rfkill->lock, flags); | 296 | spin_unlock_irqrestore(&rfkill->lock, flags); |
294 | 297 | ||
295 | if (unlikely(rfkill->dev.power.power_state.event & PM_EVENT_SLEEP)) | ||
296 | return; | ||
297 | |||
298 | err = rfkill->ops->set_block(rfkill->data, blocked); | 298 | err = rfkill->ops->set_block(rfkill->data, blocked); |
299 | 299 | ||
300 | spin_lock_irqsave(&rfkill->lock, flags); | 300 | spin_lock_irqsave(&rfkill->lock, flags); |