diff options
| -rw-r--r-- | drivers/s390/crypto/ap_bus.c | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/drivers/s390/crypto/ap_bus.c b/drivers/s390/crypto/ap_bus.c index f0b9871a4bbd..6e506a88f43e 100644 --- a/drivers/s390/crypto/ap_bus.c +++ b/drivers/s390/crypto/ap_bus.c | |||
| @@ -1158,11 +1158,12 @@ static ssize_t poll_timeout_store(struct bus_type *bus, const char *buf, | |||
| 1158 | poll_timeout = time; | 1158 | poll_timeout = time; |
| 1159 | hr_time = ktime_set(0, poll_timeout); | 1159 | hr_time = ktime_set(0, poll_timeout); |
| 1160 | 1160 | ||
| 1161 | if (!hrtimer_is_queued(&ap_poll_timer) || | 1161 | spin_lock_bh(&ap_poll_timer_lock); |
| 1162 | !hrtimer_forward(&ap_poll_timer, hrtimer_get_expires(&ap_poll_timer), hr_time)) { | 1162 | hrtimer_cancel(&ap_poll_timer); |
| 1163 | hrtimer_set_expires(&ap_poll_timer, hr_time); | 1163 | hrtimer_set_expires(&ap_poll_timer, hr_time); |
| 1164 | hrtimer_start_expires(&ap_poll_timer, HRTIMER_MODE_ABS); | 1164 | hrtimer_start_expires(&ap_poll_timer, HRTIMER_MODE_ABS); |
| 1165 | } | 1165 | spin_unlock_bh(&ap_poll_timer_lock); |
| 1166 | |||
| 1166 | return count; | 1167 | return count; |
| 1167 | } | 1168 | } |
| 1168 | 1169 | ||
| @@ -1528,14 +1529,11 @@ static inline void __ap_schedule_poll_timer(void) | |||
| 1528 | ktime_t hr_time; | 1529 | ktime_t hr_time; |
| 1529 | 1530 | ||
| 1530 | spin_lock_bh(&ap_poll_timer_lock); | 1531 | spin_lock_bh(&ap_poll_timer_lock); |
| 1531 | if (hrtimer_is_queued(&ap_poll_timer) || ap_suspend_flag) | 1532 | if (!hrtimer_is_queued(&ap_poll_timer) && !ap_suspend_flag) { |
| 1532 | goto out; | ||
| 1533 | if (ktime_to_ns(hrtimer_expires_remaining(&ap_poll_timer)) <= 0) { | ||
| 1534 | hr_time = ktime_set(0, poll_timeout); | 1533 | hr_time = ktime_set(0, poll_timeout); |
| 1535 | hrtimer_forward_now(&ap_poll_timer, hr_time); | 1534 | hrtimer_forward_now(&ap_poll_timer, hr_time); |
| 1536 | hrtimer_restart(&ap_poll_timer); | 1535 | hrtimer_restart(&ap_poll_timer); |
| 1537 | } | 1536 | } |
| 1538 | out: | ||
| 1539 | spin_unlock_bh(&ap_poll_timer_lock); | 1537 | spin_unlock_bh(&ap_poll_timer_lock); |
| 1540 | } | 1538 | } |
| 1541 | 1539 | ||
